From 3b2296db88be7e566db5b8cf45970c6ab1c2f7e4 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 19 Mar 2022 17:25:53 -0400 Subject: [PATCH 01/66] attempt to style with newer MPLFinance apis --- src/drawing/market_chart.py | 75 ++----------------------------------- 1 file changed, 3 insertions(+), 72 deletions(-) diff --git a/src/drawing/market_chart.py b/src/drawing/market_chart.py index 6d127b43..859d16d6 100644 --- a/src/drawing/market_chart.py +++ b/src/drawing/market_chart.py @@ -1,18 +1,12 @@ import matplotlib import tzlocal -import matplotlib.pyplot as plt -import matplotlib.dates as mdates import matplotlib.font_manager as font_manager -from mplfinance.original_flavor import candlestick_ohlc, volume_overlay -from src.drawing import price_humaniser +from src.drawing.legacy_mpf_plotted_chart import PlottedChart +from src.drawing.mpf_plotted_chart import NewPlottedChart matplotlib.use('Agg') local_tz = tzlocal.get_localzone() -price_formatter = matplotlib.ticker.FuncFormatter( - price_humaniser.format_scale_price -) - # โ˜๏ธ single instance for lifetime of app class MarketChart: @@ -25,70 +19,7 @@ def __init__(self, config, display, files): font_manager.fontManager.addfont(font_file) def create_plot(self, chart_data): - return PlottedChart(self.config, self.display, self.files, chart_data) - - -class PlottedChart: - layouts = { - '3mo': (20, - mdates.YearLocator(), plt.NullFormatter(), - mdates.YearLocator(1), mdates.DateFormatter('%Y'), - local_tz), - '1mo': (0.01, - mdates.MonthLocator(), plt.NullFormatter(), - mdates.YearLocator(1), mdates.DateFormatter('%Y'), - local_tz), - '1d': (0.01, - mdates.DayLocator(bymonthday=range(1, 31, 7)), plt.NullFormatter(), - mdates.MonthLocator(), mdates.DateFormatter('%b'), - local_tz), - '1h': (0.005, - mdates.HourLocator(byhour=range(0, 23, 4)), mdates.DateFormatter('%-I.%p'), - mdates.DayLocator(), mdates.DateFormatter('%b%d'), - local_tz), - "5m": (0.0005, - mdates.MinuteLocator(byminute=[0, 30]), plt.NullFormatter(), - mdates.HourLocator(interval=1), mdates.DateFormatter('%-I.%p'), - local_tz), - } - - def __init__(self, config, display, files, chart_data): - self.candle_width = chart_data.candle_width - # ๐Ÿ–จ๏ธ create MPL plot - self.fig, ax = self.create_chart_figure(config, display, files) - # ๐Ÿ“ find suiteable layout for timeframe - layout = self.layouts[self.candle_width] - # โž– locate/format x axis ticks for chosen layout - ax[0].xaxis.set_minor_locator(layout[1]) - ax[0].xaxis.set_minor_formatter(layout[2]) - ax[0].xaxis.set_major_locator(layout[3]) - ax[0].xaxis.set_major_formatter(layout[4]) - # ๐Ÿ’ฒcurrency amount uses custom formatting - ax[0].yaxis.set_major_formatter(price_formatter) - - self.plot_chart(config, layout[0], ax, chart_data.candle_data) - - def plot_chart(self, config, candle_width, ax, candle_data): - # โœ’๏ธ draw candles to MPL plot - candlestick_ohlc( - ax[0], - candle_data, - colorup='green', - colordown='red', - width=candle_width) - # โœ’๏ธ draw volumes to MPL plot - if config.show_volume(): - ax[1].yaxis.set_major_formatter(price_formatter) - _, opens, _, _, closes, volumes = list(zip(*candle_data)) - volume_overlay( - ax[1], - opens, - closes, - volumes, - colorup='white', - colordown='red', - width=1) - self.fig.subplots_adjust(bottom=0.01) + return NewPlottedChart(self.config, self.display, self.files, chart_data) # ๐Ÿ“‘ styles overide each other left to right? def get_default_styles(self, config, display, files): From 83550d46ffabec54c94d907b3ebd666bf68c5d3a Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 19 Mar 2022 21:40:39 -0400 Subject: [PATCH 02/66] add more styling options --- src/drawing/market_chart.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/drawing/market_chart.py b/src/drawing/market_chart.py index 859d16d6..f1ceb407 100644 --- a/src/drawing/market_chart.py +++ b/src/drawing/market_chart.py @@ -4,9 +4,6 @@ from src.drawing.legacy_mpf_plotted_chart import PlottedChart from src.drawing.mpf_plotted_chart import NewPlottedChart -matplotlib.use('Agg') -local_tz = tzlocal.get_localzone() - # โ˜๏ธ single instance for lifetime of app class MarketChart: From e0a96c3e25495c46fcdf6e5e9e77be677a7de824 Mon Sep 17 00:00:00 2001 From: donbing Date: Mon, 21 Mar 2022 19:49:14 +0000 Subject: [PATCH 03/66] add jupyter hotdogs! --- hotdogs.ipynb | 488 ++++++++++++++++++++++++++++++ src/bitbot.py | 2 + src/drawing/market_chart.py | 79 +++++ src/exchanges/crypto_exchanges.py | 3 +- 4 files changed, 570 insertions(+), 2 deletions(-) create mode 100644 hotdogs.ipynb diff --git a/hotdogs.ipynb b/hotdogs.ipynb new file mode 100644 index 00000000..c8708843 --- /dev/null +++ b/hotdogs.ipynb @@ -0,0 +1,488 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Bitbot" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Jupyter notebook setup" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "id": "TGhh4E4ctNiS" + }, + "outputs": [], + "source": [ + "# This allows multiple outputs from a single jupyter notebook cell:\n", + "from IPython.core.interactiveshell import InteractiveShell\n", + "InteractiveShell.ast_node_interactivity = \"all\"" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "gohAI0ditNiT", + "outputId": "49b29a80-c7e0-42a4-b407-a02f62d744a5" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: ccxt in /home/chris/.local/lib/python3.8/site-packages (1.66.90)\n", + "Requirement already satisfied: mplfinance in /home/chris/.local/lib/python3.8/site-packages (0.12.8b6)\n", + "Requirement already satisfied: yfinance in /home/chris/.local/lib/python3.8/site-packages (0.1.69)\n", + "Requirement already satisfied: setuptools>=38.5.1 in /home/chris/.local/lib/python3.8/site-packages (from ccxt) (60.9.3)\n", + "Requirement already satisfied: certifi>=2018.1.18 in /usr/lib/python3/dist-packages (from ccxt) (2019.11.28)\n", + "Requirement already satisfied: requests>=2.18.4 in /home/chris/.local/lib/python3.8/site-packages (from ccxt) (2.27.1)\n", + "Requirement already satisfied: aiodns>=1.1.1; python_version >= \"3.5.2\" in /home/chris/.local/lib/python3.8/site-packages (from ccxt) (2.0.0)\n", + "Requirement already satisfied: aiohttp>=3.8; python_version >= \"3.5.2\" in /home/chris/.local/lib/python3.8/site-packages (from ccxt) (3.8.1)\n", + "Requirement already satisfied: cryptography>=2.6.1 in /usr/lib/python3/dist-packages (from ccxt) (2.8)\n", + "Requirement already satisfied: yarl==1.7.2; python_version >= \"3.5.2\" in /home/chris/.local/lib/python3.8/site-packages (from ccxt) (1.7.2)\n", + "Requirement already satisfied: matplotlib in /home/chris/.local/lib/python3.8/site-packages (from mplfinance) (3.5.1)\n", + "Requirement already satisfied: pandas in /home/chris/.local/lib/python3.8/site-packages (from mplfinance) (1.3.5)\n", + "Requirement already satisfied: numpy>=1.15 in /home/chris/.local/lib/python3.8/site-packages (from yfinance) (1.22.0)\n", + "Requirement already satisfied: lxml>=4.5.1 in /home/chris/.local/lib/python3.8/site-packages (from yfinance) (4.7.1)\n", + "Requirement already satisfied: multitasking>=0.0.7 in /home/chris/.local/lib/python3.8/site-packages (from yfinance) (0.0.10)\n", + "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/lib/python3/dist-packages (from requests>=2.18.4->ccxt) (1.25.8)\n", + "Requirement already satisfied: idna<4,>=2.5; python_version >= \"3\" in /usr/lib/python3/dist-packages (from requests>=2.18.4->ccxt) (2.8)\n", + "Requirement already satisfied: charset-normalizer~=2.0.0; python_version >= \"3\" in /home/chris/.local/lib/python3.8/site-packages (from requests>=2.18.4->ccxt) (2.0.10)\n", + "Requirement already satisfied: pycares>=3.0.0 in /home/chris/.local/lib/python3.8/site-packages (from aiodns>=1.1.1; python_version >= \"3.5.2\"->ccxt) (4.1.2)\n", + "Requirement already satisfied: attrs>=17.3.0 in /usr/lib/python3/dist-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (19.3.0)\n", + "Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /home/chris/.local/lib/python3.8/site-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (4.0.2)\n", + "Requirement already satisfied: aiosignal>=1.1.2 in /home/chris/.local/lib/python3.8/site-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (1.2.0)\n", + "Requirement already satisfied: multidict<7.0,>=4.5 in /home/chris/.local/lib/python3.8/site-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (5.2.0)\n", + "Requirement already satisfied: frozenlist>=1.1.1 in /home/chris/.local/lib/python3.8/site-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (1.2.0)\n", + "Requirement already satisfied: pyparsing>=2.2.1 in /usr/lib/python3/dist-packages (from matplotlib->mplfinance) (2.4.6)\n", + "Requirement already satisfied: pillow>=6.2.0 in /home/chris/.local/lib/python3.8/site-packages (from matplotlib->mplfinance) (9.0.1)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/lib/python3/dist-packages (from matplotlib->mplfinance) (0.10.0)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /home/chris/.local/lib/python3.8/site-packages (from matplotlib->mplfinance) (4.28.5)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/lib/python3/dist-packages (from matplotlib->mplfinance) (1.0.1)\n", + "Requirement already satisfied: packaging>=20.0 in /home/chris/.local/lib/python3.8/site-packages (from matplotlib->mplfinance) (21.3)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /usr/lib/python3/dist-packages (from matplotlib->mplfinance) (2.7.3)\n", + "Requirement already satisfied: pytz>=2017.3 in /home/chris/.local/lib/python3.8/site-packages (from pandas->mplfinance) (2021.3)\n", + "Requirement already satisfied: cffi>=1.5.0 in /home/chris/.local/lib/python3.8/site-packages (from pycares>=3.0.0->aiodns>=1.1.1; python_version >= \"3.5.2\"->ccxt) (1.15.0)\n", + "Requirement already satisfied: pycparser in /home/chris/.local/lib/python3.8/site-packages (from cffi>=1.5.0->pycares>=3.0.0->aiodns>=1.1.1; python_version >= \"3.5.2\"->ccxt) (2.21)\n" + ] + } + ], + "source": [ + "%matplotlib inline\n", + "import pandas as pd\n", + "from src.bitbot import BitBot\n", + "import sys\n", + "!{sys.executable} -m pip install ccxt mplfinance yfinance\n", + "import ccxt\n", + "import mplfinance as mpf\n", + "from matplotlib.pyplot import imshow\n", + "import yfinance\n", + "import pathlib\n", + "import os\n", + "from src.configuration.bitbot_files import use_config_dir\n", + "from src.configuration.bitbot_config import load_config_ini" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prep chart data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Load config files" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "curdir = pathlib.Path(os.path.abspath('')).resolve()\n", + "files = use_config_dir(curdir)\n", + "config = load_config_ini(files)\n", + "config.set('display', 'output', 'disk')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Convert candle data to pandas" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "data_frame = pd.DataFrame(\n", + " chart_data.candle_data,\n", + " columns=['date', 'open', 'high', 'low', 'close', 'volume'])\n", + " \n", + "data_frame.index = pd.DatetimeIndex(data_frame['date'])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "nN1FqsfOtNiU" + }, + "source": [ + "Fetch candle data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Display Bitbot overlaid chart " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Fetch exchange data" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# fetch configured price history\n", + "from src.exchanges import crypto_exchanges\n", + "exchange = crypto_exchanges.Exchange(config)\n", + "chart_data = exchange.fetch_history()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Run Bitbot chart" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "app = BitBot(config, files)\n", + "img = app.display_chart()\n", + "img.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Display Bitbot MPF plot" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from src.drawing.market_chart import MarketChart\n", + "from src.display.picker import picker as display_picker\n", + "from PIL import Image\n", + "import io\n", + "\n", + "display = display_picker(config)\n", + "chart = MarketChart(config, display, files)\n", + "\n", + "with io.BytesIO() as file_stream:\n", + " chart.create_plot(chart_data).write_to_stream(file_stream)\n", + " chart_image = Image.open(file_stream)\n", + " chart_image.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "JumRYLCatcWu" + }, + "source": [ + "## CCXT" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load Exchange and markets" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "id": "eN618pI5tNiT" + }, + "outputs": [], + "source": [ + "exchange = getattr(ccxt, 'bitmex')({ \n", + " #'apiKey': '',\n", + " #'secret': '',\n", + " 'enableRateLimit': True,\n", + "})\n", + "mkts = exchange.loadMarkets()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 175 + }, + "id": "9u0BXPm_tNiU", + "outputId": "5aa5560e-5886-4bae-926e-e75310b6a341" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
DateOpenLowHighCloseVolume
Date
2022-03-21 14:45:002022-03-21 14:45:0040823.540899.040784.040863.55001000.0
2022-03-21 14:50:002022-03-21 14:50:0040863.540941.040867.040941.01564500.0
2022-03-21 14:55:002022-03-21 14:55:0040941.041059.040913.541019.07384800.0
\n", + "
" + ], + "text/plain": [ + " Date Open Low High Close \\\n", + "Date \n", + "2022-03-21 14:45:00 2022-03-21 14:45:00 40823.5 40899.0 40784.0 40863.5 \n", + "2022-03-21 14:50:00 2022-03-21 14:50:00 40863.5 40941.0 40867.0 40941.0 \n", + "2022-03-21 14:55:00 2022-03-21 14:55:00 40941.0 41059.0 40913.5 41019.0 \n", + "\n", + " Volume \n", + "Date \n", + "2022-03-21 14:45:00 5001000.0 \n", + "2022-03-21 14:50:00 1564500.0 \n", + "2022-03-21 14:55:00 7384800.0 " + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "exchange_data = exchange.fetchOHLCV('BTC/USD', '5m', limit=60)\n", + "df = pd.DataFrame(exchange_data)\n", + "df.columns = [\"Date\", \"Open\", \"Low\", \"High\", \"Close\", \"Volume\"]\n", + "df['Date'] = df['Date'].astype('datetime64[ms]')\n", + "df.index = pd.DatetimeIndex(df[\"Date\"])\n", + "df.head(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 271, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, '')" + ] + }, + "execution_count": 271, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaIAAAEtCAYAAABK7WRiAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAKSklEQVR4nO3dW3KjvBoFUOtUT+/Pu0foYfo8uF12E7C5CDagtapcqbi5RZ1480kCyv1+v18AIOR/6QMAoG2CCIAoQQRAlCACIEoQARAliACIEkQARAkiAKIEEQBRbQZRKekjAOCvNoMIgN0QRABECSIAogQRAFGCCIAoQQRAlCACIOrPkpXL3+tx+h7yWgau1ZnyQNjuNj7tx4NmAY5JRQRA1KyKaKjaeTdUoYypYIaWmVL9qJQAjkFFVINbBgHMNqki6lYZYyqjMeM8NamEAI5FRQRAVJUxor4qZOvKZEx1BsD+qIgAiJpUEc2ZxTbmeqLudobGoD7tZ8kMOwByVET009UJbKTcWywZSrlcav7Ytbe3B2f8mYBdUhEBECWIAIhadNPTQ7ndHq+nn5/H1+v18QIgwhjRHre3B2f8mYBd0jUX4gJcgAdBBECUIAIgShAdjS494GQEEQBR7UzfrqmvKnl/z2wzgNFURABECSLqMoYFTCSIAIgSRA1w8SywZyYrbGjoEetPvXdbamBiRCnFAwyhYSoiAKIEEQBRggiAKGNEJ/VpPGpwPKY7HtX93jgOsAIVEQBRggiAKF1zLNPA9HJgXYKIl/fQ8KhwYCO65gCIEkQARAkiAKIEEQBRggiAKEHEcXm8BZyC6dtEeCQG8FQ9iJ4fKH0fJKM+bCYu/2l/p9D9uUZe3/PeHp73A+yZrjkAoqpVRGMeR/08K/+27FCVM6X6OX2ltLax7Xa0is0dI2B3VEQARC2uiLqVx5jK6JuhbamELs7mgdNREQEQtdoY0ZLKZM4YUY1KDIDtuY5ojgoD9AA8LA6iJTPbhtaZM0ZU4zhgkNl2sBpjRABEVe+aG1OBdJcZWmfOtqasC0Ceiog4Jw3QNkEEQFQ7s+Zut8fr6efn8fV6fbwAiCj3FvtFas+A2vmMqtPcy+3btWJj9jv3+Hb+fwxHpmsOgChBVIMzZYDZBBEAUYKIulSHwESCCICodqZvN6zFiZH/6M62637f1z59M/Te32u9TaEiQcRxzLzr+T/LmIYNu6NrDoAoQQRAlCACIEoQARAliACIEkQARAkiAKIEEQBRggiAKEEEKynfHuQHXC4XQQRAmCACIEoQARAliGBPjCvRIEEEQJQgAiBKEAEQJYgAjM1FCSIAov7U3uDzavL7/T74b099y0xd/tP+oBmlXC7+Bjio6kEEu7bih3XfLX3e3xs8Wequ1/1ewHBy1YJozH21nn+I35atUeWolACOwRgRAFGLK6Ju5VHzjsNTx5T6jgeAfVMRARC12hhRjcqku+6UGXkAHIOKCICoxRXRlKplSHedofGmT9uscRwAbE9FBEBU9Qtax1Qg3WWG1pmzrSnrApCnIgIgShABEOVec9Cn27U74qaifRNmdBHDd+0E0e32eD39/Dy+Xq+PFwAR5d7iKZtb5p/Dlv+PM/Y1uiL6djH22G34nZ5P+0UZIwIgShABECWIYAzdNrAaQQRAlCACIEoQcVy6y5bx6BR2QhABECWIAIgSRABECSIAogQRAFGCCIAoQQRAlCACIEoQARAliACIEkQARAkiYBr3qKMyQQRAlCACIEoQARAliACI+pM+AGCGvgkD7+95aCAHIogg7T00ShEiNEfXHABR1Sui8rd74N5zVlc63Ql9y8zd5thtAbAvKiIAoqpVRN1qp8+zahmz7JTlPq2rUgLYNxURwEktOZnf0uKKqFt51PjBl2xTJQRwLKZvA6zs28l074nztxPwE51srzZGVKMymbLNo5SgAPxLRQQt6Z6wdb8/0Vk2x7E4iLrVyZxKqLvOnG3WOA44jO7vtTsycGAqIuBUSilOQCeaNYZVUfUgGnPA3WW+rTOlEppyHABLCL06XEcEQJSuOYCT6Otie39vr9WbIAJoXDqg2gmi2+3xevr5eXy9Xh8vACLKPR2FCaa6soFNB7LH/k7XuFp/538/s9p95s80dl9b3VkhPfttLpMVAIhqp2sOOKXZA/TuMrEbKiIAogQRAFG65uAMdCNt4qjX6eydIAJY2XtAuS3Qb7rmAIhSEQGf9V2b8v6es3sWEkTQkvfQ2PmFqbRD1xwAUYIIgChBBKzv233TaJogAiBKEAEQJYgAiBJEAEQJIgCiBBEAUe6sACtp/saWHjzHSIII+KwbGBvdGshdqtuhaw6AKEEEQJQgAiDKGBHQphmPxOiOWRnHqkNFBEBU9Yqo/J2i2XeWUDrTN4fOJLrLfVr+0/6AY+n+7Y/9zODYdM0Bh3ba7rIZ0+aP2hbVgmioinn3bJBvy36rlMY0rEoJ4BiMEQEQtbgi6lYeYyqjqdt+UglBRf5G2AkVEQBRq40RLalM5qxbsxIDYDsqIgCiFldEfdMF+97/ZGidKdcT1TgOALanIgJwwhpV/YLWMRVId5lv38/Zn0oI4BhURMA0TvKoTBABECWIAIhq56ant9vj9fTz8/h6vT5eAESUe4uj+iMfggUs8O0i8xGPivm9yrjbfG31sTZnX7OPb8bn1lHuvq1rDoAoQQRwUkeohi4XQQRAmCACIEoQARAliACIEkTAqRxlgH6ys/5cF0EEQJggAiBKEAEQJYgAiBJEAEQJIgCiBBHAhk47vXwBQQRAlCACIEoQARAliACIEkQARAkigJnMgKtDEAEQJYgAiBJEAEQJIgCiBBEAUX9qb7CUcrlc+meTPP/t6duMkzHLf9ofAPunIgIgqlpF1K1e+jyrlm/LDlU5U6oflRLAMaiIAIhaXBF1K48xldGaVEIAx6IiAiBqtTGirSuTdCUGwDzVp28DXC6Xy+X9JLSUf78fXOW1TClFF3sjFgfRkpltQ+sMjTd92maN4wBge8aIAIgq9xZLhpHdBEAlM/7mdM21Q0UEQJQgAiBKEAEQ1c707dvt8Xr6+Xl8vV4fLwAiTFYA1meyAh/omgMgShABECWIAIgSRABECSIAogQRAFGCCIAoQQTskmuI2iGIAIgSRABECSIAogQRAFGCCIAoQQRAlCACIEoQARAliACIEkQARAkiAKIEEbA+943jA0EEQJQgAiBKEAEQJYgAiBJEAEQJIgCiBBEAUYKohtstfQT7oS1etMWLtnjRFr8Iohr8Yr1oixdt8aItXrTFL4IIgKhyvzd4741S0kcA0I4vMdNmRXS/133991/9bR71pS20hbbQFt3XF20GEQC7IYhquF7TR7Af2uJFW7xoixdt8UubY0QA7IaKCIAoQQRAlCACIOpP+gC2VjrXEH0aIpuybGo/S2iLefvVFvOWTe1nCW2xDRURAFHNVETPs4ju2UPf+0uWXWs/NWmL79vXFvWOUVscuy22oCICIKqZimgtRz4LqU1bvGiLF23xoi36qYgAiBJEC5VSfs1iaZW2eNEWL9riRVv0E0QARDV3rznXBczbr7aYt2xqP0toi3n7PXtbrElFBEBUcxURAPuiIgIgShABECWIAIgSRABECSIAogQRAFGCCIAoQQRAlCACIEoQARAliACIEkQARAkiAKL+D/BKJFKA5esaAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "execution_count": 271, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from matplotlib.ticker import EngFormatter\n", + "import matplotlib.pyplot as plt\n", + "mc = mpf.make_marketcolors(\n", + " alpha=1.0,\n", + " up='black', down='red',\n", + " edge={'up': 'black', 'down': 'red'}, # 'none',\n", + " wick={'up': 'black', 'down': 'red'},\n", + " volume={'up': 'black', 'down': 'red'})\n", + "rc = {\n", + " # \"axes.xmargin\": 0.1,\n", + " # \"axes.ymargin\": 0.1,\n", + " \"axes.autolimit_mode\": \"round_numbers\",\n", + " #\"axes.autoscale\": \"true\",\n", + " #'figure.constrained_layout.use': True\n", + "}\n", + "s = mpf.make_mpf_style(\n", + " marketcolors=mc,\n", + " base_mpl_style=files.base_style,\n", + " mavcolors=['#1f77b4', '#ff7f0e', '#2ca02c'],\n", + " rc=rc\n", + ")\n", + "display = display_picker(config)\n", + "display_width, display_height = display.size()\n", + "figsize = (display_width / 100, display_height / 100)\n", + "\n", + "fig, ax = mpf.plot(\n", + " data_frame,\n", + " scale_width_adjustment=dict(volume=0.4, candle=0.8, lines=0.5),\n", + " update_width_config=dict(candle_linewidth=0.5),\n", + " returnfig=True,\n", + " type='candle',\n", + " # mav=(10, 20),\n", + " style=s,\n", + " tight_layout=True,\n", + " figsize=figsize,\n", + " xrotation=0,\n", + ")\n", + "ax[0].autoscale(enable=True, axis=\"x\", tight=True)\n", + "ax[0].autoscale(enable=True, axis=\"y\", tight=True)\n", + "ax[0].set_ylabel(\"\")\n", + "ax[0].yaxis.set_major_formatter(EngFormatter(sep='',places=1))\n", + "ax[0].margins(0.05, 0.05)\n", + "fig" + ] + } + ], + "metadata": { + "colab": { + "collapsed_sections": [], + "name": "Copy of external_axes.ipynb", + "provenance": [] + }, + "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.8.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/src/bitbot.py b/src/bitbot.py index 7b7da527..8abc47db 100644 --- a/src/bitbot.py +++ b/src/bitbot.py @@ -52,11 +52,13 @@ def display_chart(self): overlay.draw_on(chart_image) # ๐Ÿ“บ display the image self.display.show(chart_image) + return chart_image else: img = Image.new('RGBA', self.display.size()) draw = ImageDraw.Draw(img) draw.text((0, 0), f'{self.config.instrument_name()} was not found on {self.config.exchange_name()}') self.display.show(img) + return img @info_log diff --git a/src/drawing/market_chart.py b/src/drawing/market_chart.py index f1ceb407..a356f935 100644 --- a/src/drawing/market_chart.py +++ b/src/drawing/market_chart.py @@ -16,7 +16,86 @@ def __init__(self, config, display, files): font_manager.fontManager.addfont(font_file) def create_plot(self, chart_data): +<<<<<<< HEAD return NewPlottedChart(self.config, self.display, self.files, chart_data) +======= + return PlottedChart(self.config, self.display, self.files, chart_data) + + +class PlottedChart: + # layouts = { + # '3mo': (20, mdates.YearLocator(), mdates.YearLocator(1), mdates.DateFormatter('%Y'), local_tz), + # '1mo': (0.01, mdates.MonthLocator(), mdates.YearLocator(1), mdates.DateFormatter('%Y'), local_tz), + # '1d': (0.01, mdates.DayLocator(bymonthday=range(1, 31, 7)), mdates.MonthLocator(), mdates.DateFormatter('%b'), local_tz), + # '1h': (0.005, mdates.HourLocator(byhour=range(0, 23, 4)), mdates.DayLocator(), mdates.DateFormatter('%a %d %b', local_tz)), + # "5m": (0.0005, mdates.MinuteLocator(byminute=[0, 30]), mdates.HourLocator(interval=1), mdates.DateFormatter('%-I.%p', local_tz)), + # } + + def __init__(self, config, display, files, chart_data): + self.candle_width = chart_data.candle_width + # ๐Ÿ–จ๏ธ create MPL plot + # self.fig, ax = self.create_chart_figure(config, display, files) + + data_frame = pd.DataFrame( + chart_data.candle_data, + columns=['date', 'open', 'high', 'low', 'close', 'volume']) + + data_frame.index = pd.DatetimeIndex(data_frame['date']) + + mc = mpf.make_marketcolors( + alpha=1.0, + up='white', down='red', + edge={'up': 'black', 'down': 'red'}, # 'none', + wick={'up': 'black', 'down': 'red'}, + volume={'up': 'black', 'down': 'red'}) + + s = mpf.make_mpf_style( + marketcolors=mc, + base_mpl_style=files.base_style, + mavcolors=['#1f77b4', '#ff7f0e', '#2ca02c'], + ) + + display_width, display_height = display.size() + figsize = (display_width / 100, display_height / 100) + + # ๐Ÿ“ scope styles to just this plot + # with plt.style.context(stlyes): + self.fig, ax = mpf.plot( + data_frame, + scale_width_adjustment=dict(volume=0.4, candle=0.8, lines=0.5), + update_width_config=dict(candle_linewidth=0.4), + returnfig=True, + type='candle', + # mav=(10, 20), + style=s, + # tight_layout=True, + figsize=figsize, + xrotation=0 + ) + ax[0].yaxis.set_major_formatter(EngFormatter(sep='')) + + # ๐Ÿ“ find suiteable layout for timeframe + # layout = self.layouts[self.candle_width] + # โž– locate/format x axis ticks for chosen layout + # ax[0].xaxis.set_minor_locator(layout[1]) + # ax[0].xaxis.set_minor_formatter(plt.NullFormatter()) + # ax[0].xaxis.set_major_locator(layout[2]) + # ax[0].xaxis.set_major_formatter(layout[3]) + # # ๐Ÿ’ฒcurrency amount uses custom formatting + # ax[0].yaxis.set_major_formatter(price_formatter) + + # self.plot_chart(config, layout, ax, chart_data.candle_data) + + # def plot_chart(self, config, layout, ax, candle_data): + # # โœ’๏ธ draw candles to MPL plot + # candlestick_ohlc(ax[0], candle_data, colorup='green', colordown='red', width=layout[0]) + # # โœ’๏ธ draw volumes to MPL plot + # if config.show_volume(): + # ax[1].yaxis.set_major_formatter(price_formatter) + # _, opens, _, _, closes, volumes = list(zip(*candle_data)) + # volume_overlay(ax[1], opens, closes, volumes, colorup='white', colordown='red', width=1) + # self.fig.subplots_adjust(bottom=0.01) +>>>>>>> add jupyter hotdogs! # ๐Ÿ“‘ styles overide each other left to right? def get_default_styles(self, config, display, files): diff --git a/src/exchanges/crypto_exchanges.py b/src/exchanges/crypto_exchanges.py index 16f8e8a9..76a34882 100644 --- a/src/exchanges/crypto_exchanges.py +++ b/src/exchanges/crypto_exchanges.py @@ -81,8 +81,7 @@ def load_exchange(exchange_name): def make_matplotfriendly_date(element): datetime_field = element[0]/1000 datetime_utc = datetime.utcfromtimestamp(datetime_field) - datetime_num = mdates.date2num(datetime_utc) - return replace_at_index(element, 0, datetime_num) + return replace_at_index(element, 0, datetime_utc) def replace_at_index(tup, ix, val): From 0fcf4b7ee5032e55a35e16ddfd5a9d8f83a435c8 Mon Sep 17 00:00:00 2001 From: donbing Date: Tue, 22 Mar 2022 19:21:10 +0000 Subject: [PATCH 04/66] re-arrange notebook --- hotdogs.ipynb | 354 +++++++++++++------------------------------------- 1 file changed, 92 insertions(+), 262 deletions(-) diff --git a/hotdogs.ipynb b/hotdogs.ipynb index c8708843..255f0345 100644 --- a/hotdogs.ipynb +++ b/hotdogs.ipynb @@ -11,12 +11,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Jupyter notebook setup" + "## Setup" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Jupyter" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 1, "metadata": { "id": "TGhh4E4ctNiS" }, @@ -27,9 +34,16 @@ "InteractiveShell.ast_node_interactivity = \"all\"" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Imports" + ] + }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 5, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -37,50 +51,9 @@ "id": "gohAI0ditNiT", "outputId": "49b29a80-c7e0-42a4-b407-a02f62d744a5" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Requirement already satisfied: ccxt in /home/chris/.local/lib/python3.8/site-packages (1.66.90)\n", - "Requirement already satisfied: mplfinance in /home/chris/.local/lib/python3.8/site-packages (0.12.8b6)\n", - "Requirement already satisfied: yfinance in /home/chris/.local/lib/python3.8/site-packages (0.1.69)\n", - "Requirement already satisfied: setuptools>=38.5.1 in /home/chris/.local/lib/python3.8/site-packages (from ccxt) (60.9.3)\n", - "Requirement already satisfied: certifi>=2018.1.18 in /usr/lib/python3/dist-packages (from ccxt) (2019.11.28)\n", - "Requirement already satisfied: requests>=2.18.4 in /home/chris/.local/lib/python3.8/site-packages (from ccxt) (2.27.1)\n", - "Requirement already satisfied: aiodns>=1.1.1; python_version >= \"3.5.2\" in /home/chris/.local/lib/python3.8/site-packages (from ccxt) (2.0.0)\n", - "Requirement already satisfied: aiohttp>=3.8; python_version >= \"3.5.2\" in /home/chris/.local/lib/python3.8/site-packages (from ccxt) (3.8.1)\n", - "Requirement already satisfied: cryptography>=2.6.1 in /usr/lib/python3/dist-packages (from ccxt) (2.8)\n", - "Requirement already satisfied: yarl==1.7.2; python_version >= \"3.5.2\" in /home/chris/.local/lib/python3.8/site-packages (from ccxt) (1.7.2)\n", - "Requirement already satisfied: matplotlib in /home/chris/.local/lib/python3.8/site-packages (from mplfinance) (3.5.1)\n", - "Requirement already satisfied: pandas in /home/chris/.local/lib/python3.8/site-packages (from mplfinance) (1.3.5)\n", - "Requirement already satisfied: numpy>=1.15 in /home/chris/.local/lib/python3.8/site-packages (from yfinance) (1.22.0)\n", - "Requirement already satisfied: lxml>=4.5.1 in /home/chris/.local/lib/python3.8/site-packages (from yfinance) (4.7.1)\n", - "Requirement already satisfied: multitasking>=0.0.7 in /home/chris/.local/lib/python3.8/site-packages (from yfinance) (0.0.10)\n", - "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/lib/python3/dist-packages (from requests>=2.18.4->ccxt) (1.25.8)\n", - "Requirement already satisfied: idna<4,>=2.5; python_version >= \"3\" in /usr/lib/python3/dist-packages (from requests>=2.18.4->ccxt) (2.8)\n", - "Requirement already satisfied: charset-normalizer~=2.0.0; python_version >= \"3\" in /home/chris/.local/lib/python3.8/site-packages (from requests>=2.18.4->ccxt) (2.0.10)\n", - "Requirement already satisfied: pycares>=3.0.0 in /home/chris/.local/lib/python3.8/site-packages (from aiodns>=1.1.1; python_version >= \"3.5.2\"->ccxt) (4.1.2)\n", - "Requirement already satisfied: attrs>=17.3.0 in /usr/lib/python3/dist-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (19.3.0)\n", - "Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /home/chris/.local/lib/python3.8/site-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (4.0.2)\n", - "Requirement already satisfied: aiosignal>=1.1.2 in /home/chris/.local/lib/python3.8/site-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (1.2.0)\n", - "Requirement already satisfied: multidict<7.0,>=4.5 in /home/chris/.local/lib/python3.8/site-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (5.2.0)\n", - "Requirement already satisfied: frozenlist>=1.1.1 in /home/chris/.local/lib/python3.8/site-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (1.2.0)\n", - "Requirement already satisfied: pyparsing>=2.2.1 in /usr/lib/python3/dist-packages (from matplotlib->mplfinance) (2.4.6)\n", - "Requirement already satisfied: pillow>=6.2.0 in /home/chris/.local/lib/python3.8/site-packages (from matplotlib->mplfinance) (9.0.1)\n", - "Requirement already satisfied: cycler>=0.10 in /usr/lib/python3/dist-packages (from matplotlib->mplfinance) (0.10.0)\n", - "Requirement already satisfied: fonttools>=4.22.0 in /home/chris/.local/lib/python3.8/site-packages (from matplotlib->mplfinance) (4.28.5)\n", - "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/lib/python3/dist-packages (from matplotlib->mplfinance) (1.0.1)\n", - "Requirement already satisfied: packaging>=20.0 in /home/chris/.local/lib/python3.8/site-packages (from matplotlib->mplfinance) (21.3)\n", - "Requirement already satisfied: python-dateutil>=2.7 in /usr/lib/python3/dist-packages (from matplotlib->mplfinance) (2.7.3)\n", - "Requirement already satisfied: pytz>=2017.3 in /home/chris/.local/lib/python3.8/site-packages (from pandas->mplfinance) (2021.3)\n", - "Requirement already satisfied: cffi>=1.5.0 in /home/chris/.local/lib/python3.8/site-packages (from pycares>=3.0.0->aiodns>=1.1.1; python_version >= \"3.5.2\"->ccxt) (1.15.0)\n", - "Requirement already satisfied: pycparser in /home/chris/.local/lib/python3.8/site-packages (from cffi>=1.5.0->pycares>=3.0.0->aiodns>=1.1.1; python_version >= \"3.5.2\"->ccxt) (2.21)\n" - ] - } - ], + "outputs": [], "source": [ - "%matplotlib inline\n", + "%%capture test\n", "import pandas as pd\n", "from src.bitbot import BitBot\n", "import sys\n", @@ -99,19 +72,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Prep chart data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Load config files" + "### Load config files" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -125,74 +91,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Convert candle data to pandas" + "## Bitbot display output " ] }, { "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "data_frame = pd.DataFrame(\n", - " chart_data.candle_data,\n", - " columns=['date', 'open', 'high', 'low', 'close', 'volume'])\n", - " \n", - "data_frame.index = pd.DatetimeIndex(data_frame['date'])" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "nN1FqsfOtNiU" - }, - "source": [ - "Fetch candle data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Display Bitbot overlaid chart " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Fetch exchange data" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "# fetch configured price history\n", - "from src.exchanges import crypto_exchanges\n", - "exchange = crypto_exchanges.Exchange(config)\n", - "chart_data = exchange.fetch_history()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Run Bitbot chart" - ] - }, - { - "cell_type": "code", - "execution_count": 32, + "execution_count": 11, "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -209,19 +120,31 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "#### Display Bitbot MPF plot" + "## Bitbot chart generation" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "# fetch configured candle history\n", + "from src.exchanges import crypto_exchanges\n", + "exchange = crypto_exchanges.Exchange(config)\n", + "chart_data = exchange.fetch_history()" ] }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 10, "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAEsCAYAAADtt+XCAAAMwUlEQVR4nO3d3XKjuBoFUGmqn+/c+wlz3883MzoXY88Qgvn5jECCtaq6Okk7tpsQNhsJyKWUBABb/XH2GwCgTwIEgBABAkCIAAEgRIAAECJAAAgRIACECBAAQgQIACECBIAQAQJAiAABIESAABAiQAAIESAAhAgQAEIECAAhAgSAEAECQIgAASBEgAAQIkAACBEgAIQIEABCBAgAIQIEgBABAkCIAAEgRIAAECJAAAgRIACECBAAQgQIACECBIAQAQJAiABZknM5+y0AtEiAABAiQAAIESAAhAgQAEIECAAhAgSAEAECQMivs9/AGvl5LkYpJb/7t3eG3zP3PABso4EAENJ0A1lqF0OftArNpFM5l+RnBqfRQAAIabKBjBvBmiYyfsyaNqF5AMRpIACENNlAXsatYqoxvGsPn8zcog0556IdQrs0EABCmmwg473OSJuY23Pd8vwATNNAgO8c4mWlJhvI2JY2EXkezQNgOw0EgBABAkCIAAEgpIsxkMPl/EgpPQaf/35+9JVK+TrlPQE0JpdiwsUsF+w7zeKJhH42u/ixnC1XVnIIC4AQAUI3XIIG2iJAYERQwToCBIAQAQI3o2GxFwFCE1rZqL3ex7/vJ+fy7x/gGwECI6a2wzoChC5MNoPh34RYrnxCgNANzaAOy5UoAQJAiAABIESAwFbGByClJEBo1I/B3X8+Pu8N3ZnA5A0BQrOGg7uvq8W6/TC0Q4BwHfaU92daLzMECKebOlz1/PycNzTn6hvUV8PT9FhBgNCE8bkIzRyyskGFtwQIACECBIAQAQJAiADhWq46uA0N+nXUC71m2EwNir67F8SaAdSl+0gMn2PuPdCZUnLKuRjchvNoIACEVG8ga+40964RbGkMn7QKzQRgOw0Eltxtx+Ju/1/CqjWQ8V79miYyfsyWRhD5Xs2Du5n6PWzyjH+6oIHQL8H/sWbO+KdLh4+BTO31f9IEIuMna9oQ7bGRg7ZoIFybnQWoploDGe8trmkZa84HWTu2Mvc6kffGNeWci587xGggAIQcdib6lkaw5Xk++d7Ic9A5Z6//YP0nSgPhFCYyQP8ECM2yZwxtEyDcVle30r0BrbQ/h42BdCXnR0rpMfj89/Ojr1TK1ynviSpKKd8Co5SSzcxawVgSKaU8vhc1I35RqhhupJ8fp5zzZ4etXnuww+cY//wGn7973dkAGe4ld7hebJ6yPvX/rbQMegrunt5rTQ5hcbipQ0dVDhu9nn/joREbhoHXsrj5MnF4bZoA4RTD5rvr9ZhuvqHjJDcNGAHCfQQbCQz9aNA3Xq8ECNfl8AuVGDv+hwDh1kzZhTgBwn2MGol7YTTuhoeEeiNAOIaNATOMK/RJgHAdmkTXjCv0R4AAt+YcjzgBwu6a/oXUUra7+TI77MTXDgkQgAXVTnztnABhV5NXuD1zQNQvOVQjQNhdZDDU3hz0R4Bwa4KLSTu05abHAnciQDiFQUh6ZsfjHwKE+pwBzs28u9vl1QgQAEIECMAnJq76fJeWLUCA25qddv6hq4dHSgLkGBc/Dhpxh18u+uAaXHECBICQX2e/gTVe9XJur3U822HqsWueB0JyLs56vy7TzqdpIBzDxpVejNbVuwyIRzTdQNbMoX7XKra0Dc0E+MhNtx0aCAAhTTaQcSOodTbnIc1jeCXam+6lANekgQAQ0mQDeRk3j70aw9WvT8PBtExuSgOBLSYuWzHFTgp30GQD2TKj6t04yVxL+WTGFnADtgWrzDaQnPPfOec/j3ozAPRjsoHknP8afvr82t8ppb9LKYe3ljXN4JPHaB5cxtXHYa7+/+vMuwby7gfkBwdASmlhDKSU8kdKPxoJsJU95645SjFtMkCmguP1NWDe8B4TpZS81zTff58PGrE0nvFaWe81JTHnR0rpMfj89/Ojr1TK1ynviXbYiENKKaXsZioLPj30MJxefIMNz3MvOeWc71X7R+vJt7aw0zqwqoEsrK+7TFmvsE7/WG/evUbg9/HHchs8x23X1504LAVX5oRGKpoMkKnzP5wTAsDQXAOZqnMqHrBM87kFh7CgY665NW84I+75he9/85G103iLabyw3t0GZFueYvwaJGd/S6GQn3+EB+zpjnvAFf7PGti5Vp2JDnA6911pjoCAPdx4gxYdZ5htDyvvu8K5BAiLHCZgSTMnJAfWVeMjcd8CZHyuR875r9Ef54HAUVbuwZthtMGo2ZTR32wzNQYyDJXxQrWQoSFmGHGmbwEyHjQ3iA4dO3DQWYjd09ylTNwDBHpy1MCzw0A8LZ1IeNptbAFo25pDVPYqWmWwFDjRZLMYXsJk/Lk2ghO5gJTeN5D85o9B9c4tndPhnA96YRrz+WbHQKDW/b25tx/rVTpvJpfB/zhBwaJmzjLmUobr1aqZXGZ/NWdxDMSYB3CESBAIj3MtjYFoKDfy45jyf18/5w2x3UkbVBvye/rWLgbnffwx8bVNTeTdYOzUirY0cDu3cm753tdjrezvjS+NUUrJLd8s6Eq6Ws5b36exs0uaahjuhX4nZqwcLzBbqKt2uNcZ8YKmedXGN97tSU21gKXHfvJ6a2gmVPWavfbh+qUd0pqlQfSUvp9MaFAdKjBdmh5NhcHcyrp5RR63iDV7S5FGcNTr9MxGqm0uzb6C9bQps5dz53pspIC9VD8cNd67n9vrjzSCLWMt43+7OsfHOU3L613L760zGgeLhBA1aML9q9ZAtpwHEnnewfVzNr/OllZ0N36pK6m0bnWzzo5moplBdg0ayJ25thAnsp717/DzQD79nvFj9hgvsSLDdWnV9WggF9XVmcuwh4kz4LXqugTIhY0vw+6X6WZmNqiwBwHSqInmcIupx0A/XJZkSs6PlNJj8Pnv50dfqZSvU94TsGyiYWld9WR3m1vw6WU+hs1h46VZxpei//GLMPPeno9POecfl7T/9jyj51icWjnx/xndlnTydRl4vwz/W26jx4SX68Q6ctr0WZfMuRyHsPjI1GC9gfq2CXb2IkAuJDROssPGZPO9rQkRzLRGgNyMDXsnnORJBwTIRTiUBBxNgFyIQ0k0zbp4OQIEGvGjMdrg0jgB0pFvg+TDuwmebLzh03oWuOQGFyFA2Mbgbl/8XKhIgJylQnMwaA4cSYD0ShPom58TFyBAGvTuUuwALREgjZq6RtkR7UKDAdYSII3oqm0IGSAJkHM0NAUXIEqA1DYx5x/gCgQIACECpAEuhEhKJjDQHwHSiNCFEBvZ4NjwwT0JkAuzYQdqEiAAhPw6+w1MeXdOxNQe9dL5E8PveT3WnjnA5zQQAEKabCDvGsJcg/ikVWgmANtpIACENNlAXsbjG3MNYctjx9+jeQBsp4F0QsgBrWm6gYw3mlONITJe0tWVbwEapYEAENJkA9njPJC5Qz5rmk2Pen//QF80EABCmmwgW/ak93hs9T13zQC4IA0EgBABAkCIAAEgpMkxkNPl/EgpPQaf/35+9JVK+arzkoZJgL7k4Z3wmJBzqTIIPnrenHMZX3retFyGrBO0xiEsAEIECAAhAgSAEAECQIgAASBEgDTC7BqgNwIEgBABAkCIAAEgRIBAJ4yT0RoBAkCIAAEgRIAAECJAAAgRIACECJCzmFEDdE6AABAiQAAIESAAhAgQAEIECAAhv2o9cc65TH196no+Wx679nunnuP1WNcUAvicBgJASLUG8m4vf6oFbHns1tdbQzMB2E4DASCkWgN5GY9RzO3lb3nsHt+reQDEaSAAhFRvIOO9+6m9/k+aQGT8ZGnmFgDLNBAAQpo4D2TL94ybReR11rQiAOZpII0SZkDrcimGA2blXNy7A+AnDQSAEAECQIgAASCk+nkgXcr5kVJ6DD7//fzoK5Xydcp7AmiMQfQlewyi5/wQPBVYrnVYrnVccLk6hHWMx/JDCLBc67Bc67jcchUgAIQ4hLXEdbOAMzV8HpoAOULOv1Mp/zv7bVyO5VqH5VrHBZerQ1gAhAiQY1xq5kVDLNc6LNc6LrdcHcICIEQDASBEgAAQIkAACHEtrJHxHQ633EFxy02gjnqdVliudViunEkDASBEA3l6d1/0qa9/8thar9Mqy7UOy5UWaCAAhGggldnrqsNyrcNyZQsNBIAQAVJZzrmMZ6XwOcu1DsuVLQQIACGuhTViXn0dlmsdlitn0kAACNFAAAjRQAAIESAAhAgQAEIECAAhAgSAEAECQIgAASBEgAAQIkAACBEgAIQIEABCBAgAIQIEgBABAkCIAAEgRIAAECJAAAgRIACECBAAQgQIACECBIAQAQJAiAABIESAABAiQAAIESAAhAgQAEIECAAhAgSAEAECQIgAASBEgAAQIkAACBEgAIQIEABC/g8JPY/7bmJ3EQAAAABJRU5ErkJggg==", + "image/png": "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", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -229,6 +152,7 @@ } ], "source": [ + "# plot chart and show image\n", "from src.drawing.market_chart import MarketChart\n", "from src.display.picker import picker as display_picker\n", "from PIL import Image\n", @@ -243,41 +167,29 @@ " chart_image.show()" ] }, - { - "cell_type": "markdown", - "metadata": { - "id": "JumRYLCatcWu" - }, - "source": [ - "## CCXT" - ] - }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Load Exchange and markets" + "## MPF plot" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": { "id": "eN618pI5tNiT" }, "outputs": [], "source": [ - "exchange = getattr(ccxt, 'bitmex')({ \n", - " #'apiKey': '',\n", - " #'secret': '',\n", - " 'enableRateLimit': True,\n", - "})\n", + "# load markets for selected exchange\n", + "exchange = getattr(ccxt, 'bitmex')()\n", "mkts = exchange.loadMarkets()" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 139, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -286,175 +198,93 @@ "id": "9u0BXPm_tNiU", "outputId": "5aa5560e-5886-4bae-926e-e75310b6a341" }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
DateOpenLowHighCloseVolume
Date
2022-03-21 14:45:002022-03-21 14:45:0040823.540899.040784.040863.55001000.0
2022-03-21 14:50:002022-03-21 14:50:0040863.540941.040867.040941.01564500.0
2022-03-21 14:55:002022-03-21 14:55:0040941.041059.040913.541019.07384800.0
\n", - "
" - ], - "text/plain": [ - " Date Open Low High Close \\\n", - "Date \n", - "2022-03-21 14:45:00 2022-03-21 14:45:00 40823.5 40899.0 40784.0 40863.5 \n", - "2022-03-21 14:50:00 2022-03-21 14:50:00 40863.5 40941.0 40867.0 40941.0 \n", - "2022-03-21 14:55:00 2022-03-21 14:55:00 40941.0 41059.0 40913.5 41019.0 \n", - "\n", - " Volume \n", - "Date \n", - "2022-03-21 14:45:00 5001000.0 \n", - "2022-03-21 14:50:00 1564500.0 \n", - "2022-03-21 14:55:00 7384800.0 " - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "exchange_data = exchange.fetchOHLCV('BTC/USD', '5m', limit=60)\n", + "# fetch candles\n", + "exchange_data = exchange.fetchOHLCV('BTC/USD', '1m', limit=40)\n", + "# convert candles to dataframe\n", "df = pd.DataFrame(exchange_data)\n", "df.columns = [\"Date\", \"Open\", \"Low\", \"High\", \"Close\", \"Volume\"]\n", "df['Date'] = df['Date'].astype('datetime64[ms]')\n", "df.index = pd.DatetimeIndex(df[\"Date\"])\n", - "df.head(3)" + "#df.take(3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Try draw attractive graph" ] }, { "cell_type": "code", - "execution_count": 271, + "execution_count": 158, "metadata": {}, "outputs": [ { "data": { - "text/plain": [ - "Text(0, 0.5, '')" - ] - }, - "execution_count": 271, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] }, - "execution_count": 271, + "execution_count": 158, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from matplotlib.ticker import EngFormatter\n", - "import matplotlib.pyplot as plt\n", + "import matplotlib.dates as mdates\n", + "#, show_offset=False, formats=['%Y', '%b', '%d', '%H:%M', '%H:%M', '%S.%f']\n", + "date_locator = mdates.AutoDateLocator(minticks=7, maxticks=8, interval_multiples=True)\n", + "#date_formatter = mdates.AutoDateFormatter(date_locator) \n", + "date_formatter = mdates.ConciseDateFormatter(\n", + " date_locator, \n", + " # zero_formats=['', '%Y', '%m', '%b-%d', '%H:%M', '%H:%M'],\n", + " # formats=['%Y', '%m', '%d', '%H:%M', '%H:%M', '%S.%f'],\n", + " show_offset=False)\n", + "display_size = (400,300)\n", + "\n", "mc = mpf.make_marketcolors(\n", " alpha=1.0,\n", " up='black', down='red',\n", " edge={'up': 'black', 'down': 'red'}, # 'none',\n", " wick={'up': 'black', 'down': 'red'},\n", - " volume={'up': 'black', 'down': 'red'})\n", - "rc = {\n", - " # \"axes.xmargin\": 0.1,\n", - " # \"axes.ymargin\": 0.1,\n", - " \"axes.autolimit_mode\": \"round_numbers\",\n", - " #\"axes.autoscale\": \"true\",\n", - " #'figure.constrained_layout.use': True\n", - "}\n", + " volume={'up': 'black', 'down': 'red'}\n", + " )\n", + "\n", "s = mpf.make_mpf_style(\n", " marketcolors=mc,\n", " base_mpl_style=files.base_style,\n", " mavcolors=['#1f77b4', '#ff7f0e', '#2ca02c'],\n", - " rc=rc\n", ")\n", - "display = display_picker(config)\n", - "display_width, display_height = display.size()\n", - "figsize = (display_width / 100, display_height / 100)\n", "\n", "fig, ax = mpf.plot(\n", - " data_frame,\n", - " scale_width_adjustment=dict(volume=0.4, candle=0.8, lines=0.5),\n", - " update_width_config=dict(candle_linewidth=0.5),\n", + " df,\n", + " scale_width_adjustment=dict(volume=0.9, candle=0.7, lines=0.05),\n", + " update_width_config=dict(candle_linewidth=0.6),\n", " returnfig=True,\n", " type='candle',\n", " # mav=(10, 20),\n", + " # volume=True,\n", " style=s,\n", " tight_layout=True,\n", - " figsize=figsize,\n", + " figsize=tuple(dim/100 for dim in display_size),\n", " xrotation=0,\n", ")\n", - "ax[0].autoscale(enable=True, axis=\"x\", tight=True)\n", - "ax[0].autoscale(enable=True, axis=\"y\", tight=True)\n", - "ax[0].set_ylabel(\"\")\n", - "ax[0].yaxis.set_major_formatter(EngFormatter(sep='',places=1))\n", - "ax[0].margins(0.05, 0.05)\n", + "\n", + "ax[0].xaxis.set_major_formatter(date_formatter)\n", + "ax[0].xaxis.set_major_locator(date_locator)\n", + "#ax[0].xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))\n", + "for a in ax: \n", + " a.yaxis.set_major_formatter(EngFormatter(sep=''))\n", + " a.autoscale(enable=True, axis=\"x\", tight=True)\n", + " a.autoscale(enable=True, axis=\"y\", tight=True)\n", + " a.margins(0.05, 0.2)\n", + " a.set_ylabel(\"\")\n", + " a.set_xlabel(\"\")\n", "fig" ] } From b19d2d807ee29bdfca533d0d87e8e115af15ec1a Mon Sep 17 00:00:00 2001 From: donbing Date: Tue, 22 Mar 2022 22:43:39 +0000 Subject: [PATCH 05/66] better inky what diagram --- docs/images/HardwareDiagrams/InkyWhat.Diagram.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/images/HardwareDiagrams/InkyWhat.Diagram.svg b/docs/images/HardwareDiagrams/InkyWhat.Diagram.svg index 56d7899c..196c9d34 100644 --- a/docs/images/HardwareDiagrams/InkyWhat.Diagram.svg +++ b/docs/images/HardwareDiagrams/InkyWhat.Diagram.svg @@ -4,5 +4,5 @@ svgOutput made with tinkercad - + \ No newline at end of file From 6cde3350f4e256f740430b0a056ccaa93b1f590d Mon Sep 17 00:00:00 2001 From: donbing Date: Sat, 26 Mar 2022 10:58:40 +0000 Subject: [PATCH 06/66] fiddle with jupyter mplf style --- hotdogs.ipynb | 82 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 48 insertions(+), 34 deletions(-) diff --git a/hotdogs.ipynb b/hotdogs.ipynb index 255f0345..940a6963 100644 --- a/hotdogs.ipynb +++ b/hotdogs.ipynb @@ -23,7 +23,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 41, "metadata": { "id": "TGhh4E4ctNiS" }, @@ -43,7 +43,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 42, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -77,7 +77,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 43, "metadata": {}, "outputs": [], "source": [ @@ -96,14 +96,14 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 44, "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -125,7 +125,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 45, "metadata": {}, "outputs": [], "source": [ @@ -137,14 +137,14 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 46, "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -176,7 +176,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 47, "metadata": { "id": "eN618pI5tNiT" }, @@ -189,7 +189,7 @@ }, { "cell_type": "code", - "execution_count": 139, + "execution_count": 179, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -201,13 +201,15 @@ "outputs": [], "source": [ "# fetch candles\n", - "exchange_data = exchange.fetchOHLCV('BTC/USD', '1m', limit=40)\n", + "exchange_data = exchange.fetchOHLCV('BTC/USD', '1d', limit=40)\n", "# convert candles to dataframe\n", "df = pd.DataFrame(exchange_data)\n", "df.columns = [\"Date\", \"Open\", \"Low\", \"High\", \"Close\", \"Volume\"]\n", - "df['Date'] = df['Date'].astype('datetime64[ms]')\n", - "df.index = pd.DatetimeIndex(df[\"Date\"])\n", - "#df.take(3)" + "df['Date'] = pd.to_datetime(df['Date'].astype('datetime64[ms]'))\n", + "\n", + "#df.index = pd.DatetimeIndex(df[\"Date\"].astype('datetime64[ms]'))\n", + "df.set_index('Date', inplace=True)\n", + "# df" ] }, { @@ -217,34 +219,34 @@ "### Try draw attractive graph" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### arse" + ] + }, { "cell_type": "code", - "execution_count": 158, + "execution_count": 180, "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] }, - "execution_count": 158, + "execution_count": 180, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from matplotlib.ticker import EngFormatter\n", - "import matplotlib.dates as mdates\n", - "#, show_offset=False, formats=['%Y', '%b', '%d', '%H:%M', '%H:%M', '%S.%f']\n", - "date_locator = mdates.AutoDateLocator(minticks=7, maxticks=8, interval_multiples=True)\n", - "#date_formatter = mdates.AutoDateFormatter(date_locator) \n", - "date_formatter = mdates.ConciseDateFormatter(\n", - " date_locator, \n", - " # zero_formats=['', '%Y', '%m', '%b-%d', '%H:%M', '%H:%M'],\n", - " # formats=['%Y', '%m', '%d', '%H:%M', '%H:%M', '%S.%f'],\n", - " show_offset=False)\n", + "import numpy \n", + "\n", "display_size = (400,300)\n", "\n", "mc = mpf.make_marketcolors(\n", @@ -253,7 +255,7 @@ " edge={'up': 'black', 'down': 'red'}, # 'none',\n", " wick={'up': 'black', 'down': 'red'},\n", " volume={'up': 'black', 'down': 'red'}\n", - " )\n", + ")\n", "\n", "s = mpf.make_mpf_style(\n", " marketcolors=mc,\n", @@ -261,6 +263,16 @@ " mavcolors=['#1f77b4', '#ff7f0e', '#2ca02c'],\n", ")\n", "\n", + "candle_time_delta = df.index.values[1] - df.index.values[0]\n", + "\n", + "if(candle_time_delta <= numpy.timedelta64(1,'h')):\n", + " format = '%H:%M'\n", + "elif(candle_time_delta <= numpy.timedelta64(1,'D')): \n", + " format = '%d'\n", + "else:\n", + " format = '%b.%d'\n", + "\n", + "\n", "fig, ax = mpf.plot(\n", " df,\n", " scale_width_adjustment=dict(volume=0.9, candle=0.7, lines=0.05),\n", @@ -273,18 +285,20 @@ " tight_layout=True,\n", " figsize=tuple(dim/100 for dim in display_size),\n", " xrotation=0,\n", + " datetime_format=format,\n", ")\n", "\n", - "ax[0].xaxis.set_major_formatter(date_formatter)\n", - "ax[0].xaxis.set_major_locator(date_locator)\n", - "#ax[0].xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))\n", + "#ax[0].xaxis.set_major_locator(mdates.AutoDateLocator(interval_multiples=True))\n", + "#ax[0].xaxis.set_major_formatter(date_formatter)\n", + "#ax[0].xaxis.set_major_formatter(mdates.ConciseDateFormatter(ax[0].xaxis.major.locator))\n", + "#ax[0].xaxis.set_major_formatter(MyFormatter(df.index))\n", "for a in ax: \n", " a.yaxis.set_major_formatter(EngFormatter(sep=''))\n", " a.autoscale(enable=True, axis=\"x\", tight=True)\n", " a.autoscale(enable=True, axis=\"y\", tight=True)\n", " a.margins(0.05, 0.2)\n", - " a.set_ylabel(\"\")\n", - " a.set_xlabel(\"\")\n", + " _ = a.set_ylabel(\"\")\n", + " _ = a.set_xlabel(\"\")\n", "fig" ] } From ee717107d956216055dcc4be029ec480d2176d19 Mon Sep 17 00:00:00 2001 From: donbing Date: Sat, 26 Mar 2022 11:10:31 +0000 Subject: [PATCH 07/66] add proto formatting to real chart --- config/base.mplstyle | 4 ++-- hotdogs.ipynb | 15 ++++++------- src/drawing/market_chart.py | 43 ++++++++++++++++++++++++++----------- 3 files changed, 40 insertions(+), 22 deletions(-) diff --git a/config/base.mplstyle b/config/base.mplstyle index 03577908..e7291a6b 100644 --- a/config/base.mplstyle +++ b/config/base.mplstyle @@ -1,6 +1,6 @@ figure.dpi: 100 #figure.autolayout: True -#savefig.pad_inches: 0 +savefig.pad_inches: 0 font.family: sans-serif font.sans-serif: 04b03 font.weight: light @@ -20,7 +20,7 @@ axes.spines.top: False axes.spines.right: False axes.grid: False -grid.linestyle: - +grid.linestyle: : grid.linewidth: 0.5 grid.color: black axes.edgecolor: red diff --git a/hotdogs.ipynb b/hotdogs.ipynb index 940a6963..cfb0a008 100644 --- a/hotdogs.ipynb +++ b/hotdogs.ipynb @@ -189,7 +189,7 @@ }, { "cell_type": "code", - "execution_count": 179, + "execution_count": 187, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -201,7 +201,7 @@ "outputs": [], "source": [ "# fetch candles\n", - "exchange_data = exchange.fetchOHLCV('BTC/USD', '1d', limit=40)\n", + "exchange_data = exchange.fetchOHLCV('BTC/USD', '5m', limit=40)\n", "# convert candles to dataframe\n", "df = pd.DataFrame(exchange_data)\n", "df.columns = [\"Date\", \"Open\", \"Low\", \"High\", \"Close\", \"Volume\"]\n", @@ -228,17 +228,17 @@ }, { "cell_type": "code", - "execution_count": 180, + "execution_count": 211, "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ "
" ] }, - "execution_count": 180, + "execution_count": 211, "metadata": {}, "output_type": "execute_result" } @@ -264,13 +264,12 @@ ")\n", "\n", "candle_time_delta = df.index.values[1] - df.index.values[0]\n", - "\n", "if(candle_time_delta <= numpy.timedelta64(1,'h')):\n", " format = '%H:%M'\n", "elif(candle_time_delta <= numpy.timedelta64(1,'D')): \n", - " format = '%d'\n", - "else:\n", " format = '%b.%d'\n", + "else:\n", + " format = '%b'\n", "\n", "\n", "fig, ax = mpf.plot(\n", diff --git a/src/drawing/market_chart.py b/src/drawing/market_chart.py index a356f935..d2cf7e3f 100644 --- a/src/drawing/market_chart.py +++ b/src/drawing/market_chart.py @@ -1,5 +1,11 @@ import matplotlib import tzlocal +<<<<<<< HEAD +======= +import matplotlib.pyplot as plt +import numpy +import matplotlib.dates as mdates +>>>>>>> add proto formatting to real chart import matplotlib.font_manager as font_manager from src.drawing.legacy_mpf_plotted_chart import PlottedChart from src.drawing.mpf_plotted_chart import NewPlottedChart @@ -30,6 +36,14 @@ class PlottedChart: # '1h': (0.005, mdates.HourLocator(byhour=range(0, 23, 4)), mdates.DayLocator(), mdates.DateFormatter('%a %d %b', local_tz)), # "5m": (0.0005, mdates.MinuteLocator(byminute=[0, 30]), mdates.HourLocator(interval=1), mdates.DateFormatter('%-I.%p', local_tz)), # } + def date_format(self, df): + candle_time_delta = df.index.values[1] - df.index.values[0] + if(candle_time_delta <= numpy.timedelta64(1,'h')): + return '%H:%M' + elif(candle_time_delta <= numpy.timedelta64(1,'D')): + return '%b.%d' + else: + return '%b' def __init__(self, config, display, files, chart_data): self.candle_width = chart_data.candle_width @@ -39,12 +53,11 @@ def __init__(self, config, display, files, chart_data): data_frame = pd.DataFrame( chart_data.candle_data, columns=['date', 'open', 'high', 'low', 'close', 'volume']) - data_frame.index = pd.DatetimeIndex(data_frame['date']) mc = mpf.make_marketcolors( alpha=1.0, - up='white', down='red', + up='black', down='red', edge={'up': 'black', 'down': 'red'}, # 'none', wick={'up': 'black', 'down': 'red'}, volume={'up': 'black', 'down': 'red'}) @@ -55,24 +68,30 @@ def __init__(self, config, display, files, chart_data): mavcolors=['#1f77b4', '#ff7f0e', '#2ca02c'], ) - display_width, display_height = display.size() - figsize = (display_width / 100, display_height / 100) - # ๐Ÿ“ scope styles to just this plot # with plt.style.context(stlyes): - self.fig, ax = mpf.plot( + fig, ax = mpf.plot( data_frame, - scale_width_adjustment=dict(volume=0.4, candle=0.8, lines=0.5), - update_width_config=dict(candle_linewidth=0.4), + scale_width_adjustment=dict(volume=0.9, candle=0.7, lines=0.05), + update_width_config=dict(candle_linewidth=0.6), returnfig=True, type='candle', # mav=(10, 20), + # volume=True, style=s, - # tight_layout=True, - figsize=figsize, - xrotation=0 + tight_layout=True, + figsize=tuple(dim/100 for dim in display.size()), + xrotation=0, + datetime_format=format, ) - ax[0].yaxis.set_major_formatter(EngFormatter(sep='')) + + for a in ax: + a.yaxis.set_major_formatter(EngFormatter(sep='')) + a.autoscale(enable=True, axis="x", tight=True) + a.autoscale(enable=True, axis="y", tight=True) + a.margins(0.05, 0.2) + _ = a.set_ylabel("") + _ = a.set_xlabel("") # ๐Ÿ“ find suiteable layout for timeframe # layout = self.layouts[self.candle_width] From cef1f7cc57c9c0fbc74a2ac41b647aa468c215ba Mon Sep 17 00:00:00 2001 From: donbing Date: Sat, 26 Mar 2022 11:24:49 +0000 Subject: [PATCH 08/66] actually use the formatter --- src/drawing/market_chart.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/drawing/market_chart.py b/src/drawing/market_chart.py index d2cf7e3f..0bd24efd 100644 --- a/src/drawing/market_chart.py +++ b/src/drawing/market_chart.py @@ -82,7 +82,7 @@ def __init__(self, config, display, files, chart_data): tight_layout=True, figsize=tuple(dim/100 for dim in display.size()), xrotation=0, - datetime_format=format, + datetime_format=self.date_format(data_frame), ) for a in ax: From 977948685f2530e0333c2b9043a3774275918052 Mon Sep 17 00:00:00 2001 From: donbing Date: Sat, 26 Mar 2022 11:25:41 +0000 Subject: [PATCH 09/66] correct fig assugnent --- src/drawing/market_chart.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/drawing/market_chart.py b/src/drawing/market_chart.py index 0bd24efd..07fa18ea 100644 --- a/src/drawing/market_chart.py +++ b/src/drawing/market_chart.py @@ -70,7 +70,7 @@ def __init__(self, config, display, files, chart_data): # ๐Ÿ“ scope styles to just this plot # with plt.style.context(stlyes): - fig, ax = mpf.plot( + self.fig, ax = mpf.plot( data_frame, scale_width_adjustment=dict(volume=0.9, candle=0.7, lines=0.05), update_width_config=dict(candle_linewidth=0.6), From 0e16603c87b4ccdcd3d90dee4675778c51f9bfac Mon Sep 17 00:00:00 2001 From: donbing Date: Sat, 26 Mar 2022 11:37:37 +0000 Subject: [PATCH 10/66] shift MPF chart to new file --- src/drawing/market_chart.py | 98 ----------------------------------- src/drawing/mpf_plotted_chart | 74 ++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 98 deletions(-) create mode 100644 src/drawing/mpf_plotted_chart diff --git a/src/drawing/market_chart.py b/src/drawing/market_chart.py index 07fa18ea..f1ceb407 100644 --- a/src/drawing/market_chart.py +++ b/src/drawing/market_chart.py @@ -1,11 +1,5 @@ import matplotlib import tzlocal -<<<<<<< HEAD -======= -import matplotlib.pyplot as plt -import numpy -import matplotlib.dates as mdates ->>>>>>> add proto formatting to real chart import matplotlib.font_manager as font_manager from src.drawing.legacy_mpf_plotted_chart import PlottedChart from src.drawing.mpf_plotted_chart import NewPlottedChart @@ -22,99 +16,7 @@ def __init__(self, config, display, files): font_manager.fontManager.addfont(font_file) def create_plot(self, chart_data): -<<<<<<< HEAD return NewPlottedChart(self.config, self.display, self.files, chart_data) -======= - return PlottedChart(self.config, self.display, self.files, chart_data) - - -class PlottedChart: - # layouts = { - # '3mo': (20, mdates.YearLocator(), mdates.YearLocator(1), mdates.DateFormatter('%Y'), local_tz), - # '1mo': (0.01, mdates.MonthLocator(), mdates.YearLocator(1), mdates.DateFormatter('%Y'), local_tz), - # '1d': (0.01, mdates.DayLocator(bymonthday=range(1, 31, 7)), mdates.MonthLocator(), mdates.DateFormatter('%b'), local_tz), - # '1h': (0.005, mdates.HourLocator(byhour=range(0, 23, 4)), mdates.DayLocator(), mdates.DateFormatter('%a %d %b', local_tz)), - # "5m": (0.0005, mdates.MinuteLocator(byminute=[0, 30]), mdates.HourLocator(interval=1), mdates.DateFormatter('%-I.%p', local_tz)), - # } - def date_format(self, df): - candle_time_delta = df.index.values[1] - df.index.values[0] - if(candle_time_delta <= numpy.timedelta64(1,'h')): - return '%H:%M' - elif(candle_time_delta <= numpy.timedelta64(1,'D')): - return '%b.%d' - else: - return '%b' - - def __init__(self, config, display, files, chart_data): - self.candle_width = chart_data.candle_width - # ๐Ÿ–จ๏ธ create MPL plot - # self.fig, ax = self.create_chart_figure(config, display, files) - - data_frame = pd.DataFrame( - chart_data.candle_data, - columns=['date', 'open', 'high', 'low', 'close', 'volume']) - data_frame.index = pd.DatetimeIndex(data_frame['date']) - - mc = mpf.make_marketcolors( - alpha=1.0, - up='black', down='red', - edge={'up': 'black', 'down': 'red'}, # 'none', - wick={'up': 'black', 'down': 'red'}, - volume={'up': 'black', 'down': 'red'}) - - s = mpf.make_mpf_style( - marketcolors=mc, - base_mpl_style=files.base_style, - mavcolors=['#1f77b4', '#ff7f0e', '#2ca02c'], - ) - - # ๐Ÿ“ scope styles to just this plot - # with plt.style.context(stlyes): - self.fig, ax = mpf.plot( - data_frame, - scale_width_adjustment=dict(volume=0.9, candle=0.7, lines=0.05), - update_width_config=dict(candle_linewidth=0.6), - returnfig=True, - type='candle', - # mav=(10, 20), - # volume=True, - style=s, - tight_layout=True, - figsize=tuple(dim/100 for dim in display.size()), - xrotation=0, - datetime_format=self.date_format(data_frame), - ) - - for a in ax: - a.yaxis.set_major_formatter(EngFormatter(sep='')) - a.autoscale(enable=True, axis="x", tight=True) - a.autoscale(enable=True, axis="y", tight=True) - a.margins(0.05, 0.2) - _ = a.set_ylabel("") - _ = a.set_xlabel("") - - # ๐Ÿ“ find suiteable layout for timeframe - # layout = self.layouts[self.candle_width] - # โž– locate/format x axis ticks for chosen layout - # ax[0].xaxis.set_minor_locator(layout[1]) - # ax[0].xaxis.set_minor_formatter(plt.NullFormatter()) - # ax[0].xaxis.set_major_locator(layout[2]) - # ax[0].xaxis.set_major_formatter(layout[3]) - # # ๐Ÿ’ฒcurrency amount uses custom formatting - # ax[0].yaxis.set_major_formatter(price_formatter) - - # self.plot_chart(config, layout, ax, chart_data.candle_data) - - # def plot_chart(self, config, layout, ax, candle_data): - # # โœ’๏ธ draw candles to MPL plot - # candlestick_ohlc(ax[0], candle_data, colorup='green', colordown='red', width=layout[0]) - # # โœ’๏ธ draw volumes to MPL plot - # if config.show_volume(): - # ax[1].yaxis.set_major_formatter(price_formatter) - # _, opens, _, _, closes, volumes = list(zip(*candle_data)) - # volume_overlay(ax[1], opens, closes, volumes, colorup='white', colordown='red', width=1) - # self.fig.subplots_adjust(bottom=0.01) ->>>>>>> add jupyter hotdogs! # ๐Ÿ“‘ styles overide each other left to right? def get_default_styles(self, config, display, files): diff --git a/src/drawing/mpf_plotted_chart b/src/drawing/mpf_plotted_chart new file mode 100644 index 00000000..9f3e90db --- /dev/null +++ b/src/drawing/mpf_plotted_chart @@ -0,0 +1,74 @@ +import matplotlib +import matplotlib.pyplot as plt +import numpy +import mplfinance as mpf +import pandas as pd +from matplotlib.ticker import EngFormatter + +matplotlib.use('Agg') + + +class NewPlottedChart: + def __init__(self, config, display, files, chart_data): + self.candle_width = chart_data.candle_width + + # ๐Ÿ–ผ๏ธ prep chart data frame + data_frame = pd.DataFrame( + chart_data.candle_data, + columns=['date', 'open', 'high', 'low', 'close', 'volume']) + data_frame.index = pd.DatetimeIndex(data_frame['date']) + + # ๐ŸŽจ chart colours + mc = mpf.make_marketcolors( + alpha=1.0, + up='black', down='red', + edge={'up': 'black', 'down': 'red'}, # 'none', + wick={'up': 'black', 'down': 'red'}, + volume={'up': 'black', 'down': 'red'}) + + # ๐Ÿ“ setup MLF styling + s = mpf.make_mpf_style( + marketcolors=mc, + base_mpl_style=files.base_style, + mavcolors=['#1f77b4', '#ff7f0e', '#2ca02c']) + + # ๐Ÿ“ˆ create the chart plot + self.fig, ax = mpf.plot( + data_frame, + scale_width_adjustment=dict(volume=0.9, candle=0.7, lines=0.05), + update_width_config=dict(candle_linewidth=0.6), + returnfig=True, + type='candle', + # mav=(10, 20), + # volume=True, + style=s, + tight_layout=True, + figsize=tuple(dim/100 for dim in display.size()), + xrotation=0, + datetime_format=self.date_format(data_frame), + ) + + # ๐Ÿช“ make axes look nicer + for a in ax: + a.yaxis.set_major_formatter(EngFormatter(sep='')) + a.autoscale(enable=True, axis="x", tight=True) + a.autoscale(enable=True, axis="y", tight=True) + a.margins(0.05, 0.2) + _ = a.set_ylabel("") + _ = a.set_xlabel("") + + # ๐Ÿ• format for date axis labels + def date_format(self, df): + candle_time_delta = df.index.values[1] - df.index.values[0] + if(candle_time_delta <= numpy.timedelta64(1, 'h')): + return '%H:%M' + elif(candle_time_delta <= numpy.timedelta64(1, 'D')): + return '%b.%d' + else: + return '%b' + + # ๐Ÿ›ถ save plot to image stream + def write_to_stream(self, stream): + self.fig.savefig(stream, dpi=self.fig.dpi, pad_inches=0) + stream.seek(0) + plt.close(self.fig) From 92ba4009f2b21227263de8e016ae075968147ca0 Mon Sep 17 00:00:00 2001 From: donbing Date: Sat, 26 Mar 2022 11:40:01 +0000 Subject: [PATCH 11/66] more file shuffling --- src/drawing/legacy_mpf_plotted_chart.py | 97 +++++++++++++++++++ src/drawing/market_chart.py | 40 +++++++- ...mpf_plotted_chart => mpf_plotted_chart.py} | 0 3 files changed, 134 insertions(+), 3 deletions(-) create mode 100644 src/drawing/legacy_mpf_plotted_chart.py rename src/drawing/{mpf_plotted_chart => mpf_plotted_chart.py} (100%) diff --git a/src/drawing/legacy_mpf_plotted_chart.py b/src/drawing/legacy_mpf_plotted_chart.py new file mode 100644 index 00000000..abaecbc0 --- /dev/null +++ b/src/drawing/legacy_mpf_plotted_chart.py @@ -0,0 +1,97 @@ +import matplotlib +import tzlocal +import matplotlib.pyplot as plt +import matplotlib.dates as mdates +from mplfinance.original_flavor import candlestick_ohlc, volume_overlay +from src.drawing import price_humaniser + +matplotlib.use('Agg') +local_tz = tzlocal.get_localzone() + +price_formatter = matplotlib.ticker.FuncFormatter( + price_humaniser.format_scale_price +) + + +class PlottedChart: + layouts = { + '3mo': (20, mdates.YearLocator(), mdates.YearLocator(1), mdates.DateFormatter('%Y'), local_tz), + '1mo': (0.01, mdates.MonthLocator(), mdates.YearLocator(1), mdates.DateFormatter('%Y'), local_tz), + '1d': (0.01, mdates.DayLocator(bymonthday=range(1, 31, 7)), mdates.MonthLocator(), mdates.DateFormatter('%b'), local_tz), + '1h': (0.005, mdates.HourLocator(byhour=range(0, 23, 4)), mdates.DayLocator(), mdates.DateFormatter('%a %d %b', local_tz)), + "5m": (0.0005, mdates.MinuteLocator(byminute=[0, 30]), mdates.HourLocator(interval=1), mdates.DateFormatter('%-I.%p', local_tz)), + } + + def __init__(self, config, display, files, chart_data): + self.candle_width = chart_data.candle_width + # ๐Ÿ–จ๏ธ create MPL plot + self.fig, ax = self.create_chart_figure(config, display, files) + # ๐Ÿ“ find suiteable layout for timeframe + layout = self.layouts[self.candle_width] + # โž– locate/format x axis ticks for chosen layout + ax[0].xaxis.set_minor_locator(layout[1]) + ax[0].xaxis.set_minor_formatter(plt.NullFormatter()) + ax[0].xaxis.set_major_locator(layout[2]) + ax[0].xaxis.set_major_formatter(layout[3]) + # ๐Ÿ’ฒcurrency amount uses custom formatting + ax[0].yaxis.set_major_formatter(price_formatter) + + self.plot_chart(config, layout, ax, chart_data.candle_data) + + def plot_chart(self, config, layout, ax, candle_data): + # โœ’๏ธ draw candles to MPL plot + candlestick_ohlc(ax[0], candle_data, colorup='green', colordown='red', width=layout[0]) + # โœ’๏ธ draw volumes to MPL plot + if config.show_volume(): + ax[1].yaxis.set_major_formatter(price_formatter) + _, opens, _, _, closes, volumes = list(zip(*candle_data)) + volume_overlay(ax[1], opens, closes, volumes, colorup='white', colordown='red', width=1) + self.fig.subplots_adjust(bottom=0.01) + + # ๐Ÿ“‘ styles overide each other left to right? + def get_default_styles(self, config, display, files): + small_display = self.is_small_display(display) + + if small_display: + yield files.small_screen_style + yield files.default_style + + if config.expand_chart(): + yield files.expanded_style + if small_display: + yield files.small_expanded_style + + def is_small_display(self, display): + small_display = display.size()[0] < 300 + return small_display + + def create_chart_figure(self, config, display, files): + # ๐Ÿ“ apply global base style + plt.style.use(files.base_style) + num_plots = 2 if config.show_volume() else 1 + heights = [4, 1] if config.show_volume() else [1] + plt.tight_layout() + # ๐Ÿ“ select mpl style + stlyes = list(self.get_default_styles(config, display, files)) + # ๐Ÿ“ scope styles to just this plot + with plt.style.context(stlyes): + display_width, display_height = display.size() + fig = plt.figure(figsize=(display_width / 100, display_height / 100)) + gs = fig.add_gridspec(num_plots, hspace=0, height_ratios=heights) + ax1 = fig.add_subplot(gs[0], zorder=1) + ax2 = None + + # ๐Ÿ“ align price tick labels for expanded chart + if(config.expand_chart()): + ax1.set_yticklabels(ax1.get_yticklabels(), ha='left') + + if config.show_volume(): + with plt.style.context(files.volume_style): + ax2 = fig.add_subplot(gs[1], zorder=0) + + return (fig, (ax1, ax2)) + + def write_to_stream(self, stream): + self.fig.savefig(stream, dpi=self.fig.dpi, pad_inches=0) + stream.seek(0) + plt.close(self.fig) diff --git a/src/drawing/market_chart.py b/src/drawing/market_chart.py index f1ceb407..6206560f 100644 --- a/src/drawing/market_chart.py +++ b/src/drawing/market_chart.py @@ -1,8 +1,6 @@ import matplotlib import tzlocal import matplotlib.font_manager as font_manager -from src.drawing.legacy_mpf_plotted_chart import PlottedChart -from src.drawing.mpf_plotted_chart import NewPlottedChart # โ˜๏ธ single instance for lifetime of app @@ -16,7 +14,43 @@ def __init__(self, config, display, files): font_manager.fontManager.addfont(font_file) def create_plot(self, chart_data): - return NewPlottedChart(self.config, self.display, self.files, chart_data) + return PlottedChart(self.config, self.display, self.files, chart_data) + + +class PlottedChart: + layouts = { + '3mo': (20, mdates.YearLocator(), mdates.YearLocator(1), mdates.DateFormatter('%Y'), local_tz), + '1mo': (0.01, mdates.MonthLocator(), mdates.YearLocator(1), mdates.DateFormatter('%Y'), local_tz), + '1d': (0.01, mdates.DayLocator(bymonthday=range(1, 31, 7)), mdates.MonthLocator(), mdates.DateFormatter('%b'), local_tz), + '1h': (0.005, mdates.HourLocator(byhour=range(0, 23, 4)), mdates.DayLocator(), mdates.DateFormatter('%a %d %b', local_tz)), + "5m": (0.0005, mdates.MinuteLocator(byminute=[0, 30]), mdates.HourLocator(interval=1), mdates.DateFormatter('%-I.%p', local_tz)), + } + + def __init__(self, config, display, files, chart_data): + self.candle_width = chart_data.candle_width + # ๐Ÿ–จ๏ธ create MPL plot + self.fig, ax = self.create_chart_figure(config, display, files) + # ๐Ÿ“ find suiteable layout for timeframe + layout = self.layouts[self.candle_width] + # โž– locate/format x axis ticks for chosen layout + ax[0].xaxis.set_minor_locator(layout[1]) + ax[0].xaxis.set_minor_formatter(plt.NullFormatter()) + ax[0].xaxis.set_major_locator(layout[2]) + ax[0].xaxis.set_major_formatter(layout[3]) + # ๐Ÿ’ฒcurrency amount uses custom formatting + ax[0].yaxis.set_major_formatter(price_formatter) + + self.plot_chart(config, layout, ax, chart_data.candle_data) + + def plot_chart(self, config, layout, ax, candle_data): + # โœ’๏ธ draw candles to MPL plot + candlestick_ohlc(ax[0], candle_data, colorup='green', colordown='red', width=layout[0]) + # โœ’๏ธ draw volumes to MPL plot + if config.show_volume(): + ax[1].yaxis.set_major_formatter(price_formatter) + _, opens, _, _, closes, volumes = list(zip(*candle_data)) + volume_overlay(ax[1], opens, closes, volumes, colorup='white', colordown='red', width=1) + self.fig.subplots_adjust(bottom=0.01) # ๐Ÿ“‘ styles overide each other left to right? def get_default_styles(self, config, display, files): diff --git a/src/drawing/mpf_plotted_chart b/src/drawing/mpf_plotted_chart.py similarity index 100% rename from src/drawing/mpf_plotted_chart rename to src/drawing/mpf_plotted_chart.py From 9cd23add6bddb86582dd6229714bae2dd7fefc5e Mon Sep 17 00:00:00 2001 From: donbing Date: Sat, 26 Mar 2022 21:40:59 +0000 Subject: [PATCH 12/66] use my fork of mplfinance --- hotdogs.ipynb | 3 ++- src/drawing/mpf_plotted_chart.py | 32 ++++++++++++++++++++++++++------ 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/hotdogs.ipynb b/hotdogs.ipynb index cfb0a008..502a12d1 100644 --- a/hotdogs.ipynb +++ b/hotdogs.ipynb @@ -260,7 +260,8 @@ "s = mpf.make_mpf_style(\n", " marketcolors=mc,\n", " base_mpl_style=files.base_style,\n", - " mavcolors=['#1f77b4', '#ff7f0e', '#2ca02c'],\n", + " mavcolors=['#1f77b4', '#ff7f0e', '#2ca02c'],,\n", + " rc={}\n", ")\n", "\n", "candle_time_delta = df.index.values[1] - df.index.values[0]\n", diff --git a/src/drawing/mpf_plotted_chart.py b/src/drawing/mpf_plotted_chart.py index 9f3e90db..eb952b6b 100644 --- a/src/drawing/mpf_plotted_chart.py +++ b/src/drawing/mpf_plotted_chart.py @@ -19,17 +19,20 @@ def __init__(self, config, display, files, chart_data): data_frame.index = pd.DatetimeIndex(data_frame['date']) # ๐ŸŽจ chart colours - mc = mpf.make_marketcolors( + mpf_colours = mpf.make_marketcolors( alpha=1.0, up='black', down='red', edge={'up': 'black', 'down': 'red'}, # 'none', wick={'up': 'black', 'down': 'red'}, volume={'up': 'black', 'down': 'red'}) + # ๐Ÿ“ MPF doesnt support multiple styles, so we hack them into rcparams + style_files = list(self.get_default_styles(config, display, files)) + # ๐Ÿ“ setup MLF styling - s = mpf.make_mpf_style( - marketcolors=mc, - base_mpl_style=files.base_style, + mpf_style = mpf.make_mpf_style( + marketcolors=mpf_colours, + base_mpl_style=style_files, mavcolors=['#1f77b4', '#ff7f0e', '#2ca02c']) # ๐Ÿ“ˆ create the chart plot @@ -41,7 +44,7 @@ def __init__(self, config, display, files, chart_data): type='candle', # mav=(10, 20), # volume=True, - style=s, + style=mpf_style, tight_layout=True, figsize=tuple(dim/100 for dim in display.size()), xrotation=0, @@ -56,7 +59,24 @@ def __init__(self, config, display, files, chart_data): a.margins(0.05, 0.2) _ = a.set_ylabel("") _ = a.set_xlabel("") - + + # ๐Ÿ“‘ styles overide each other left to right? + def get_default_styles(self, config, display, files): + small_display = self.is_small_display(display) + + if small_display: + yield files.small_screen_style + yield files.default_style + + if config.expand_chart(): + yield files.expanded_style + if small_display: + yield files.small_expanded_style + + def is_small_display(self, display): + small_display = display.size()[0] < 300 + return small_display + # ๐Ÿ• format for date axis labels def date_format(self, df): candle_time_delta = df.index.values[1] - df.index.values[0] From fb6b2b55ec0848b8e78c6edbbc8db332586cf62c Mon Sep 17 00:00:00 2001 From: donbing Date: Sat, 26 Mar 2022 22:02:05 +0000 Subject: [PATCH 13/66] deal with yfinance giving extra columns --- src/drawing/mpf_plotted_chart.py | 9 +++++---- src/exchanges/stock_exchanges.py | 6 ++---- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/drawing/mpf_plotted_chart.py b/src/drawing/mpf_plotted_chart.py index eb952b6b..8f8068ff 100644 --- a/src/drawing/mpf_plotted_chart.py +++ b/src/drawing/mpf_plotted_chart.py @@ -13,10 +13,11 @@ def __init__(self, config, display, files, chart_data): self.candle_width = chart_data.candle_width # ๐Ÿ–ผ๏ธ prep chart data frame - data_frame = pd.DataFrame( - chart_data.candle_data, - columns=['date', 'open', 'high', 'low', 'close', 'volume']) - data_frame.index = pd.DatetimeIndex(data_frame['date']) + data_frame = pd.DataFrame(chart_data.candle_data) + data_frame = data_frame.drop([6, 7], axis=1, errors='ignore') + data_frame.columns = ['date', 'open', 'high', 'low', 'close', 'volume'] + data_frame.index = pd.DatetimeIndex(data_frame['date'].astype('datetime64[ms]')) + # data_frame.index = pd.DatetimeIndex(data_frame['date']) # ๐ŸŽจ chart colours mpf_colours = mpf.make_marketcolors( diff --git a/src/exchanges/stock_exchanges.py b/src/exchanges/stock_exchanges.py index 1f74a88b..30f4d32b 100644 --- a/src/exchanges/stock_exchanges.py +++ b/src/exchanges/stock_exchanges.py @@ -2,7 +2,6 @@ import collections import random from datetime import datetime, timedelta -import matplotlib.dates as mdates from src.configuration.log_decorator import info_log import math @@ -69,9 +68,8 @@ def __repr__(self): def make_matplotfriendly_date(element): - datetime_field = element[0] - datetime_num = mdates.date2num(datetime_field) - return replace_at_index(element, 0, datetime_num) + datetime = element[0] + return replace_at_index(element, 0, datetime) def replace_at_index(tup, ix, val): From c6b3285f70e5c6945a24fb3e5791ded261caba91 Mon Sep 17 00:00:00 2001 From: donbing Date: Mon, 28 Mar 2022 23:26:00 +0100 Subject: [PATCH 14/66] faff with expanded layout --- config/base.mplstyle | 9 ++-- config/default.expanded.mplstyle | 6 +-- hotdogs.ipynb | 58 ++++++++++----------- src/drawing/market_chart.py | 86 +------------------------------- 4 files changed, 34 insertions(+), 125 deletions(-) diff --git a/config/base.mplstyle b/config/base.mplstyle index e7291a6b..fba1bab6 100644 --- a/config/base.mplstyle +++ b/config/base.mplstyle @@ -25,7 +25,6 @@ grid.linewidth: 0.5 grid.color: black axes.edgecolor: red -ytick.major.pad: 0 xtick.color: red ytick.color: red @@ -36,15 +35,15 @@ ytick.labelcolor: black xtick.labelsize: 12 ytick.labelsize: 12 -xtick.alignment: center +xtick.alignment: left ytick.alignment: bottom ytick.major.size: 5 xtick.major.size: 5 xtick.minor.size: 3 -xtick.direction: inout -ytick.direction: inout +xtick.direction: in +ytick.direction: in ytick.major.width: 0.5 -xtick.major.width: 0.5 \ No newline at end of file +xtick.major.width: 0.5 diff --git a/config/default.expanded.mplstyle b/config/default.expanded.mplstyle index 8081f161..8de5e3be 100644 --- a/config/default.expanded.mplstyle +++ b/config/default.expanded.mplstyle @@ -4,16 +4,14 @@ axes.spines.top: False axes.spines.right: False axes.autolimit_mode: data -axes.xmargin: 0.1 -axes.ymargin: 0.1 xtick.major.size: 5 ytick.major.size: 5 xtick.direction: in ytick.direction: in ytick.minor.visible: False -xtick.major.pad: -20 -ytick.major.pad: -5 +xtick.major.pad: -5 +ytick.major.pad: -0 figure.subplot.left: 0 figure.subplot.right: 1 diff --git a/hotdogs.ipynb b/hotdogs.ipynb index 502a12d1..ba6a04de 100644 --- a/hotdogs.ipynb +++ b/hotdogs.ipynb @@ -23,7 +23,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 3, "metadata": { "id": "TGhh4E4ctNiS" }, @@ -43,7 +43,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 5, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -53,11 +53,11 @@ }, "outputs": [], "source": [ - "%%capture test\n", + "%%capture output\n", "import pandas as pd\n", "from src.bitbot import BitBot\n", "import sys\n", - "!{sys.executable} -m pip install ccxt mplfinance yfinance\n", + "!{sys.executable} -m pip install ccxt yfinance git+https://github.com/donbing/mplfinance.git\n", "import ccxt\n", "import mplfinance as mpf\n", "from matplotlib.pyplot import imshow\n", @@ -77,7 +77,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -96,14 +96,14 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 7, "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAEsCAYAAADtt+XCAAAxU0lEQVR4nO3dfVRU17038O8AMgICoqDABXyj8lLE3OjVoL3RgsAgKmlIUi236tWaJYsYDY3L0JsXrRowsdV4S1yaImoj1WhCqzFqlDioDSTUZIJGQoNXApagQAIjL6IZzvOHD1MGZoaZw7zP97PWWTrn7LPP3jOc85t99j57JIIgCCAiIjKSi7ULQERE9snN2gUgsgaJRKJ1ff8Gudh0hjbse/frTd//ta50hpbP0PIbSld5Dc3X0PoOlbH1FlsPXYz9+zD2c7cVbIEQEZEobIGQUxvsG5/YlsFghvrN0tj9h1puXekHa+kY+k3d1O/jYC0NU32uxra4dK231RbGYNgCISIiUdgCIacmtu9iqMcb6nHE9kFYirF9NmLzN/Z45u5rMbaFNli+tvJ56sIWCBERiWI3LZCenh40NDTA29vbZN9iiNra2jRe9/5t9V/fS6lUGrW+l6+vr0a+g6U39DiGll9suY1N33+7scc1tDy99dP1vvZfb+ry6Pr70PX+93/dW77++Rv7d2IOgiDgzp07CA4OhouL/jaGxF4eJLx58yZCQ0OtXQwiIqdQX1+PkJAQvWnspgXi7e0N4EGlfHx8rFwasne93/T60/XNUtc3Wl356fqGLLZ8ur7B9ic2nbHl0nUcY48v9v0xtJy6DFbOweon9u/H0HSGvr/moFQqERoaqr7m6mM3LRClUglfX1+0tbUxgNCQiX3QzNgH0YY6PFVXuUz9IKSx5TL1g46WepCw//F1pR+sfuZ6UNEWHig05lprNy0QIlMy9kQU+zyA2BN+qM8fDPX4xuYntv7muiCa+/M1df6DpbPV7/kchUVERKIwgBARkSgMIEREJIpFAohcLodEIkFra6slDkdERBZgUADZuHEjJBKJxhIZGanefvfuXWRlZWH06NEYMWIE0tPTcevWLbMVmoiIrM/gUVg//vGPce7cuX/t6PavXZ977jmcPHkSR48eha+vL5555hk8/vjj+Nvf/mba0hJZiamGw5p7FgVbG61j6mHEhuavi70f19YYHEDc3NwQGBg4YH1bWxsKCgpQVFSE+Ph4AEBhYSGioqJQXl6ORx55ZMA+nZ2dSE9Ph1KpxMmTJzFy5EjxNSAiIqswuA/k66+/RnBwMCZOnIiMjAzU1dUBAC5fvoz79+9j3rx56rSRkZEICwtDWVnZgHxaW1uRmJiInp4enD17Vmfw6O7uhlKp1FiIiMh2GBRAZs6cif379+P06dPYvXs3bty4gf/8z//EnTt30NjYCHd39wGBYOzYsWhsbNRY19jYiDlz5iAoKAgnTpyAp6enzmPm5ubC19dXvXAeLCIi22LQLayUlBT1/2NjYzFz5kyMGzcO77zzDjw8PAw+WGJiImbMmIEjR47A1dVVb9qcnBxkZ2erX/fOz0JERLZB1DDekSNHYvLkyaipqUFgYCDu3bs3YIjurVu3BvSZpKam4sKFC7h27dqgx5BKpfDx8dFYiIjIdogKIO3t7bh+/TqCgoIwbdo0DBs2DCUlJert1dXVqKurQ1xcnMZ+eXl5WLZsGRISEgwKIkSW1n+4eu9iKoIgmGSxNeZ+33Tlb+z7Zmw5rXVce2HQLaznn38eCxcuxLhx49DQ0IBXXnkFrq6uWLJkCXx9fbFy5UpkZ2dj1KhR8PHxwZo1axAXF6d1BNb27duhUqkQHx8PuVyu8TwJERHZD4MCyM2bN7FkyRK0tLQgICAAP/nJT1BeXo6AgAAAwI4dO+Di4oL09HR0d3cjOTkZb775ps78duzYoRFEJk+ebJraEBGRxfD3QIj6sJcHxMz9gJ6xzP2+mftBTkN/x8NSx7UmY661nEyRiIhEYQAhIiJR+IuE5JRMdSvD3Gzt1oe13jdb+1zoAbZAiIhIFAYQIiIShQGEiIhEYQAhIiJRGECIiEgUjsIi6sPYUT3O+KCZNtZ632ztFyGdDVsgREQkCgMIERGJwgBCRESiMIAQEZEoDCBERCQKR2GRU3K2UVK6GFsvW3vfzD2NvKnm4LL3vxNd2AIhIiJRGECIiEgUBhAiIhKFAYSIyMHk5+db5DgMIEREDsZSAYSjsIgMYO5RNObO31qjyOw9f1s7rq2xSAuktrYWEokECoXCEocjIiILcJFIJFi3bh2Af13otS1Hjx7Vmcny5csHpJfJZBaqAhERWYNbbGys+kVoaCi+/fZbjQR79+7F66+/jpSUFL0ZyWQyFBYWql9LpVLTlpSIiGyKm5+fn/qFq6srAgMDNRIUFxfjqaeewogRI/RmJJVKB+yri0qlwqpVq/Dxxx/jww8/RFhYmPElJyIiq9LbB3L58mUoFAqsXLly0IzkcjnGjBmDiIgIZGZmoqWlRWu67u5uPPnkk1AoFLh48SKDBxGRndI7CqugoABRUVGYNWuW3kxkMhkef/xxTJgwAdevX8dvfvMbpKSkoKysDK6urup07e3tSE1NRXd3N86fPw9fX1+deXZ3d6O7u1v9WqlUGlonIuqHo4bIHHQGkK6uLhQVFeGll14aNJPFixer/z9lyhTExsZi0qRJkMvlSEhIUG9bsmQJQkJC8NFHH8HDw0Nvnrm5udi0aZMhdSAiIgBRUVFobm5GV1cXoqKiUFVVZdbjuZSWlmLXrl1wc3ODSqVSbzh27Bg6OzuxdOlSozOdOHEi/P39UVNTo7F+/vz5qKysRFlZ2aB55OTkoK2tTb3U19cbXQ4iImfS3NyM5uZmdHR0oLm52ezHc5s+fToiIyOxYcMGjdtNBQUFWLRoEQICAozO9ObNm2hpaUFQUJDG+szMTMTExGDRokU4efIk5syZozMPqVTKkVxERDbMxcvLC6NHj0ZMTIx6ZU1NDS5cuIBf/epXWneKjIxEcXExgAf9GuvXr0d5eTlqa2tRUlKCtLQ0hIeHIzk5ecC+a9aswZYtW7BgwQJcunTJPLUiGoxEon8xdD+x6Yw9LpEN0toHsm/fPoSEhCApKUnrTtXV1WhrawPwYOhvZWUlDhw4gNbWVgQHByMpKQmbN2/W2YJYt24denp6MH/+fJw+fXrQTnoiIrI9EsFOhmcolUr4+vqira0NPj4+1i4O2bveb/u9f/7GvjY0n6GmIzJCQECAuu/D398fTU1NRudhzLWWs/ESEZEoDCBERHbKUtO268IAQkRkpxhAiOyBIDxY+o+a6l1vbDqiIYqKikJdXR2ioqLU6/z9/eHv7w8vLy/4+/ubvQz8QSkiIjuk7YHB3ifPo6Ojce3aNbOXgQGEnFP/1sBgrwdbb2y6oeZPpEdWVpZFjsNbWEREDoYBhIiIbBoDCBERicIAQkREojCAEBGRKAwgREQkCgMIERGJwgBCRESiMIAQEZEoDCBERCQKAwgBVp7Rk4jsEwMIMYAQkSgMIEREJAoDCBERicIA4qCs/UtlROT4GEAcFAMIEZmbxQKIXC6HRCJBa2urpQ5J5Fj4pYBsjKgAkpeXB4lEgnXr1qnXzZ07FxKJRGNZvXq1qcpJRAwgZGOM/knbiooK7NmzB7GxsQO2rVq1Cr/97W/Vrz09PYdWOiIisllGtUDa29uRkZGBt956C35+fgO2e3p6IjAwUL34+PjozKuzsxMpKSmYPXs2b2sREdkhowJIVlYWUlNTMW/ePK3bDx06BH9/f8TExCAnJwednZ1a07W2tiIxMRE9PT04e/YsRo4cOSBNd3c3lEqlxkJE5AzsZRCMwQHk8OHD+Oyzz5Cbm6t1+y9+8Qu8/fbbOH/+PHJycvCnP/0J//Vf/zUgXWNjI+bMmYOgoCCcOHFC522u3Nxc+Pr6qpfQ0FBDi0pEZNfsJYAY1AdSX1+PtWvX4uzZsxg+fLjWNE8//bT6/1OmTEFQUBASEhJw/fp1TJo0Sb0tMTERM2bMwJEjR+Dq6qrzmDk5OcjOzla/ViqVDCLkNPLz85GVlWXtYhDpZVAL5PLly7h9+zYefvhhuLm5wc3NDaWlpdi1axfc3NygUqkG7DNz5kwAQE1Njcb61NRUXLhwAdeuXdN7TKlUCh8fH42Fhs5evtk4O35OZA8MCiAJCQm4cuUKFAqFepk+fToyMjKgUCi0tiQUCgUAICgoSGN9Xl4eli1bhoSEhEGDCJmetS9M1j4+kb2yxXPHoADi7e2NmJgYjcXLywujR49GTEwMrl+/js2bN+Py5cuora3F8ePHsXTpUjz66KNah/tu374dGRkZiI+Px1dffWXySpHtssWTgMge2OK5Y/RzINq4u7vj3Llz2LlzJzo6OhAaGor09HS8+OKLOvfZsWMHVCoV4uPjIZfLMXnyZFMUhYiILET0VCZyuRw7d+4EAISGhqK0tBQtLS24e/cuvv76a7z22msa/RZz586FIAgaQ3Z37dqFhoYGBo8hssVvJtpERUWhrq4OUVFRfVcCAQEP/nVS9vL5kfVoO3f8/f3h5eUFf39/q5WLkyk6AHu5ADU3N6OjowPNzc19V/5rcVL28vmR9Wg7d6qqqhAWFoaqqiqrlYsBxInobAHU1Tl1C8DW8HMiQ1l7qDcDiBPR2QLo6HDqFoCt4edEhmIAISJyUtpuX9pqf4c2DCBkm9gvQE5AWwCx1f4ObRhAyDYxgBiO7xVZCQOIA+ptAgcEBNhFM5iGiAHEKVi7v0MbBhAH1LcJLLoZzIsSkVlpHW0H3V/0GEDIflgqgPj7A15eD/7txSGrA2l7nwC+V3ZM62g72G5/hzYMIHZusBEbNn+7qqoKCAt78G8vDlkdSNv7BPC9IqsyyVxYZD26RmxER0dztmMiMiu2QIiISBQGECIiG2OLHebaMIA4O32d2E4+Sy6RtTCAkH0YrBObnbNERnOWGZYZQIiITIwBhMhS7KS5bnV8n8jGMICQ9S9M1j6+veD7RDaGAcTJaO2c44XJauxp6m6i/hhAnIy9jO5wFvY0dTdRfwwgZBwn6RwkMjVH7Fi3SACpra2FRCKBQqGwxOHInAw8CRzxZCESKyoqChs2bHC4W5UuEokE69atAwB89913WLNmDSIiIuDh4YGwsDA8++yzaGtr05vJ8uXLIZFINBaZTGaB4pOtYgAZGt5qdCyOeqvSLTY2Vv2ioaEBDQ0N2L59O6Kjo/HNN99g9erVaGhowLFjx/RmJJPJUFhYqH4tlUrNVmiyMfn57Ig3MQYQsgcufn5+6hcxMTF49913sXDhQkyaNAnx8fHYunUrTpw4gR9++EFvRlKpFIGBgeqlb779qVQqrFixApGRkairqzNZZZyBod/sLXoBYmuDyCkN2gfS1tYGHx8fuLnpn/ldLpdjzJgxiIiIQGZmJlpaWrSm6+7uxpNPPgmFQoGLFy8iLCxMXMmdlE0GEHJqvF3pvPQGkObmZmzevBlPP/203kxkMhkOHjyIkpISbNu2DaWlpUhJSYFKpdJI197ejtTUVDQ1NeH8+fMICAjQmWd3dzeUSqXGQvbB2J/qJDOw4EWdAcR56WxWKJVKpKamIjo6Ghs3btSbyeLFi9X/nzJlCmJjYzFp0iTI5XIkJCSoty1ZsgQhISH46KOP4OHhoTfP3NxcbNq0ycBqkC3R91Od+fn5bB2Zkr8/0NU1cDbl+nrgD38Y+AuGRCbkUlpail27dsHNzU3dYrhz5w5kMhm8vb1RXFyMYcOGGZXpxIkT4e/vj5qaGo318+fPR2VlJcrKygbNIycnB21tbeqlvr7eqDI4Ios9tdx3incT/1Y5g4eJ8SeBzYKtKsO4TJ8+HRkZGVAoFHB1dYVSqURSUhLc3d1x/PhxDB8+3OhMb968iZaWFgQFBWmsz8zMRF5eHhYtWoTS0lK9eUilUvj4+Ggszs5iQwF7L0pNTbwwkUPTFSi0rjcwqDjT9DQuXl5eGD16NGJiYtTBo6OjAwUFBVAqlWhsbERjY6NGf0ZkZCSKi4sBPOjXWL9+PcrLy1FbW4uSkhKkpaUhPDwcycnJAw64Zs0abNmyBQsWLMClS5csVlEiov60BQqtfXhRUcCGDQa1vo35omfvLXKNPpDPPvsMn3zyCQAgPDxcI+GNGzcwfvx4AEB1dbX64UJXV1dUVlbiwIEDaG1tRXBwMJKSkrB582adz4KsW7cOPT09mD9/Pk6fPo1Zs2aZul5kDvrut0dF8X47OQStfXhman3bfQCRy+XqF3PnzoUgCIPu1DeNh4cHzpw5ozf9+PHjB+SbnZ2N7Oxs40pL1lVVBURHA9eu6U3m7++Prq4uh2uuE5EmTqZIQ6OlE9cRpmigIWIntFNgALFl1jwJ7bxpTZYx1P4Csm8MILbMXgIIg43TsmR/AdkeBhAaOgYQ6+L7P4Ahz3FwxoShYwCxAXxoiYaEAWQAQ84pfTMmmKMPz95HXGnDAGIDhhpALPqH6YAnAZElMICQyenshAwIMHjaEAYQIitx8rsHDCBWprMT0s47Ih3x2xbZOSMu9gb//TKAkM3pncSwd0JD9Wr76dxjACGbY44A4uQYQGxRVdWDiQz5gB4R2TAGECKiwWi5I2CKnzewdwwgRESD4e+uaMUAYmd4b5ZIP50jG528tWAODCB2hgGESD9Or2I5DCC2jMFiICcfNkk2RFu/COxrtORQMYDYMgaQgRhASAxTDIvvfz5q6xfBg9GS27Ztc4rRkgwgROT4TPG7NUZ8oXOWW80MIEREJAoDCBERicIAQkREojCAkO3RMbqFY/mJbAsDCNkeHaNbdI3l5w9ykUHM0bHtJJ3lulgsgMjlckgkErS2tlrqkOQkGEDIIAwgJicqgOTl5UEikWDdunXqdXfv3kVWVhZGjx6NESNGID09Hbdu3TJVOYnsC4MaOQGjA0hFRQX27NmD2NhYjfXPPfccTpw4gaNHj6K0tBQNDQ14/PHHTVZQIrvCADIQ3xOHY1QAaW9vR0ZGBt566y34+fmp17e1taGgoAC///3vER8fj2nTpqGwsBAff/wxysvLtebV2dmJlJQUzJ49m7e1yPR4sbI9NviZOMsDf+ZiVADJyspCamoq5s2bp7H+8uXLuH//vsb6yMhIhIWFoaysbEA+ra2tSExMRE9PD86ePYuRI0cOSNPd3Q2lUqmxkBMx8MTWOfPqhg1mGa3F/hbHwgAyNAYHkMOHD+Ozzz5Dbm7ugG2NjY1wd3cfEAjGjh2LxsbGAWnnzJmDoKAgnDhxAp6enlqPl5ubC19fX/USGhpqaFHJEWg7sXUN7+3PjDOvMoAQ/YtBAaS+vh5r167FoUOHMHz48CEdMDExEeHh4Thy5Ajc3d11psvJyUFbW5t6qa+vH9JxyQGYYj4jsltagzcDulUZFEAuX76M27dv4+GHH4abmxvc3NxQWlqKXbt2wc3NDWPHjsW9e/cG9GXcunULgYGBGutSU1Nx4cIFXLt2Te8xpVIpfHx8NBYiu8aL3ZAwgNgegwJIQkICrly5AoVCoV6mT5+OjIwM9f+HDRuGkpIS9T7V1dWoq6tDXFycRl55eXlYtmwZEhISBg0iRA6FFztyMG6GJPL29kZMTIzGOi8vL4wePVq9fuXKlcjOzsaoUaPg4+ODNWvWIC4uDo888siA/LZv3w6VSoX4+HjI5XJERkaaoCpE1pGfn2/fnbH5+U7/QByJY7In0Xfs2IEFCxYgPT0djz76KAIDA/Hee+/pTf/UU08hPj4e//jHP0xVDHJC1r54233Huh2UX+/vnAcEcH40KxEdQORyOXbu3Kl+PXz4cOTn5+O7775DR0cH3nvvPY3+j7lz50IQBI2RWrt27UJDQwMmT54sthhEVg8g9sKoQGdjQWXQ3znnb51bBSdTJPsy1GBhYxdGS7LVAGL3LTgnxgBC9oUBRBStt4AebDB4inyDL/TantfRcxwGEPvFAGICPAHI1mm9BfRgg8EPXRr8d65tOn5jH+7kOWUXGEBMgAHEAfEztS5D3v++LZ0+rR1/f394eXnBf7AZC2jIGECItDEwgOgdHcSRQebV29JpauLsBFbCAEI0BDpvDfVnySGnWvog+K2czIEBhMjUBusDMPeQU84ZRhbCAEJERKIwgJgTO2KJyIExgJgTAwiRTlFRUQgICOAgBDvGAALjhuFyyC45I10PIhrcOW/oj4EBJvlBME5vYxkMIBhaADHFE75Etk7XaLOqqips27Zt8M55HR37TU1Nhu1vJAYQy2AAGSJTPOFLDsgGL2DmuqgONV9e7O0XA4gRtLU2OL6etLL2RVHL8XmhJlNjADGCttYGx9fbP4fs1zI0WBg58aHJj092jQFEH0e8sDgDXR22Oi6MhgQQXSOG7L4FaoqJD7VhAHEKDCD6MIDYJ20XRWBIF8bm5ma2QIn6cfoAwlFUzo2TIVoQWyUOx+kDCEdRObdBfyqVTMccAYRByaqcPoAQOT17vgjbc9kdgNMFEHOMuOHwSBtkwc/E7j///uXndPBkIIsEkNraWkgkEigUCkscTq+h/K6zrpPI7i8gjogBRDxOB08GcomLi8OpU6cA/OtCr205evSozkyWL18+IL1MJrNUHcyDJxGRBocLlDRkbvHx8UhLS8Pnn3+OyMhIfPvttxoJ9u7di9dffx0pKSl6M5LJZCgsLFS/lkqlZikwEVmHxQKIvz/Q1TWg9d/V1cVbaDbGZevWrRgxYgTKy8vh6uqKwMBAjaW4uBhPPfUURowYoTcjqVSqsZ+fn5/OtCqVCitWrEBkZCTq6upMXSedOBUJWU3fW6LsW9CPrX+74XL48GF0dHQgLi5uwMbLly9DoVBg5cqVg2Ykl8sxZswYREREIDMzEy0tLVrTdXd348knn4RCocDFixcRFhamM51SqdRYhooPgpHV9F4Um5p4YSSH4bJ69WoUFxcjOjp6wMaCggJERUVh1qxZejORyWQ4ePAgSkpKsG3bNpSWliIlJQUqlUojXXt7O1JTU9HU1ITz588jICBAZ565ubnw9fVVL6GhoeJqSET2h5NB2gWXzMxMLFu2DNeuXdPY0NXVhaKiIoNaH4sXL8aiRYswZcoUPPbYY3j//fdRUVEBuVyukW7JkiXo6OjAhx9+CF9fX7155uTkoK2tTb3U19cbXTkie8ALoxYMIHbBJTc3F1OnTsUbb7yhseHYsWPo7OzE0qVLjc504sSJ8Pf3R01Njcb6+fPno7KyEmVlZYPmIZVK4ePjo7E4Aoec+ZWGhBdGslcuANDT04Pu7m6NDQUFBVi0aJHe20y63Lx5Ey0tLQgKCtJYn5mZiby8PCxatAilpaVDKLZp6TyBTXxiR0VFYcOGDezEJyKH4JKTkwO5XI6MjAz1ypqaGly4cAG/+tWvtO4UGRmJ4uJiAA/6NdavX4/y8nLU1taipKQEaWlpCA8PR3Jy8oB916xZgy1btmDBggW4dOmSeWplJEsFEHbi2wkdD5Ey2BNpcquoqMCZM2eQmJioXrlv3z6EhIQgKSlJ607V1dVoa2sDALi6uqKyshIHDhxAa2srgoODkZSUhM2bN+t8FmTdunXo6enB/Pnzcfr06UE76U2FY8nJIFVVQHQ00KdfsDfAR0dHD+gvdEi8rUYGcDt37tyAla+++ipeffVVnTsJgqD+v4eHB86cOaP3IOPHj9fYBwCys7ORnZ1tZHGHpqqqynkuADQ0zn4Bdfb6k0HcrF0AYieqxRjzhDM/E6JBOd1svBbDyRhtj7WfcObnTA6GAcRcrH2xItvDAEIOhgGEnAsv4kQmwwBCzoUBhMhkGECMZFR/BS9WROTAGECMxABCRPQAAwgREYnCAEJERKIwgJDT43M4ROIwgJDTYwAhEsfpAoi1LxbWPj4RkalIhP6zHNoopVIJX19ftLW1OcyPS5H94WSc5OiMudY6XQuEiIhMgwGEiIhEYQAhIiJRGECIiEgUBhAiIhKFAYSIiERhACEiIlEYQIiISBSLBBC5XA6JRILW1lZLHI6IiCzAoACye/duxMbGwsfHBz4+PoiLi8OpU6fU2+fOnQuJRKKxrF692myFJiIi63MzJFFISAjy8vLwox/9CIIg4MCBA0hLS8Pnn3+OH//4xwCAVatW4be//a16H09PT/OUmIiIbIJBAWThwoUar7du3Yrdu3ejvLxcHUA8PT0RGBho0EE7OzuRnp4OpVKJkydPYuTIkcaVmoiIrM7oPhCVSoXDhw+jo6MDcXFx6vWHDh2Cv78/YmJikJOTg87OTq37t7a2IjExET09PTh79iyDBxGRnTKoBQIAV65cQVxcHO7evYsRI0aguLgY0dHRAIBf/OIXGDduHIKDg1FZWYkNGzaguroa7733nkYejY2N+PnPf44f/ehHKCoqgru7u87jdXd3o7u7W/1aqVQaWzciIjIjgwNIREQEFAoF2tracOzYMSxbtgylpaWIjo7G008/rU43ZcoUBAUFISEhAdevX8ekSZPU2xITEzFjxgwcOXIErq6ueo+Xm5uLTZs2iagSERFZgsG3sNzd3REeHo5p06YhNzcXU6dOxRtvvKE17cyZMwEANTU1GutTU1Nx4cIFg35PIScnB21tbeqlvr7e0KISEZEFGNwC6a+np0fjFlNfCoUCABAUFKSxPi8vDyNGjEBCQgLkcrn6Fpg2UqkUUqlUbPGIiMjMDAogOTk5SElJQVhYGO7cuYOioiLI5XKcOXMG169fR1FREebPn4/Ro0ejsrISzz33HB599FHExsYOyGv79u1QqVSIj4+HXC5HZGSkyStFRETmZ1AAuX37NpYuXYpvv/0Wvr6+iI2NxZkzZ5CYmIj6+nqcO3cOO3fuREdHB0JDQ5Geno4XX3xRZ347duzQCCKTJ082WYWIiMgy+JvoREbgb6KTo+NvohMRkdkxgBARkSgMIEREJAoDCJERsrKyrF0EIpvBAEJkBAYQon9hACEiIlEYQIiISBQGECIiEoUBhIiIRGEAISIiURhAiIhIFAYQIiIShQGEiIhEYQAhIiJRGECIiEgUBhAiIhKFAYSIiERhACEiIlEYQIiISBQGECIiEoUBhIiIRGEAISIiUSwSQGprayGRSKBQKCxxOCIisgCXuLg4nDp1CgDw3XffYc2aNYiIiICHhwfCwsLw7LPPoq2tTW8my5cvh0Qi0VhkMpklyk9ERFbiFh8fj7S0NHz++ecQBAENDQ3Yvn07oqOj8c0332D16tVoaGjAsWPH9GYkk8lQWFiofi2VSs1ddiIisiKXrVu3YsSIESgvL0dMTAzeffddLFy4EJMmTUJ8fDy2bt2KEydO4IcfftCbkVQqRWBgoHrx8/PTmValUmHFihWIjIxEXV2dqetEREQW4HL48GF0dHQgLi5Oa4K2tjb4+PjAzc1Nb0ZyuRxjxoxBREQEMjMz0dLSojVdd3c3nnzySSgUCly8eBFhYWE60ymVSo2FiIhsh8vq1atRXFyM6OjoARubm5uxefNmPP3003ozkclkOHjwIEpKSrBt2zaUlpYiJSUFKpVKI117eztSU1PR1NSE8+fPIyAgQGeeubm58PX1VS+hoaHiakhERGYheeGFF4Q//vGPKC0t1QgiSqUSiYmJGDVqFI4fP45hw4YZnOn//d//YdKkSTh37hwSEhJQW1uLCRMmICQkBCEhIfjoo4/g4eGhN4/u7m50d3drlCc0NFTdIiIiItNTKpXw9fU16Frrkpubi6lTp+KNN95Qr7xz5w5kMhm8vb1RXFxsVPAAgIkTJ8Lf3x81NTUa6+fPn4/KykqUlZUNmodUKoWPj4/GQkREtsMFAHp6etTf9pVKJZKSkuDu7o7jx49j+PDhRmd68+ZNtLS0ICgoSGN9ZmYm8vLysGjRIpSWlpqg+EREZC0uOTk5kMvlyMjIUAePjo4OFBQUQKlUorGxEY2NjRr9GZGRkSguLgbwoF9j/fr1KC8vR21tLUpKSpCWlobw8HAkJycPOOCaNWuwZcsWLFiwAJcuXbJYRYmIyLTcKioqcObMGSQmJkIul+OTTz4BAISHh2skvHHjBsaPHw8AqK6uVj9c6OrqisrKShw4cACtra0IDg5GUlISNm/erPNZkHXr1qGnpwfz58/H6dOnMWvWLPPVkIiIzEIiCIJg7UIYwpiOHSIiEseoTnQLlYmIiBwMAwgREYnCAEJERKIwgBARkSgMIEREJIr+GRJtSO9gMU6qSERkPr3XWEMG6NpNALlz5w4AcFJFIiILuHPnDnx9ffWmsZvnQHp6etDQ0ABvb29IJBJRefROyFhfX+8wz5KwTvbBEesEOGa9nL1OgiDgzp07CA4OhouL/l4Ou2mBuLi4ICQkxCR5OeLkjKyTfXDEOgGOWS9nrtNgLY9e7EQnIiJRGECIiEgUpwogUqkUr7zyis5JHu0R62QfHLFOgGPWi3UynN10ohMRkW1xqhYIERGZDgMIERGJwgBiJyQSCf7yl79Yuxgm5Yh1Ahy3XkT92XwAWb58OR577DGz5f/dd99hzZo1iIiIgIeHB8LCwvDss8+qf3GxV0VFBRISEjBy5Ej4+fkhOTkZX3zxhVHHWr58OSQSyYClpqbGlFXSkJ+fj/Hjx2P48OGYOXMmPv30U/W22tpareWRSCQ4evSoQflbuk4XLlzAwoULERwcrPNCratOr7/+usHHsXS9cnNz8R//8R/w9vbGmDFj8Nhjj6G6ulq9faifVW99Vq9ePWBbVlYWJBIJli9fbsoqoa6uDqmpqfD09MSYMWOwfv16/PDDDxpp8vPzERUVBQ8PD0RERODgwYMG52+NOj377LOYNm0apFIpHnroIa1p3nnnHTz00EPw9PTEuHHjjPq7szc2H0DMraGhAQ0NDdi+fTuuXr2K/fv34/Tp01i5cqU6TXt7O2QyGcLCwvDJJ5/g0qVL8Pb2RnJyMu7fv2/U8WQyGb799luNZcKECaauFgDgyJEjyM7OxiuvvILPPvsMU6dORXJyMm7fvg3gwbQw/cuyadMmjBgxAikpKTZZp46ODkydOhX5+fk60/Qvy759+yCRSJCenm7UsSxZr9LSUmRlZaG8vBxnz57F/fv3kZSUhI6ODgCm+axCQ0Nx+PBhdHV1qdfdvXsXRUVFCAsLG1L5+58HKpUKqampuHfvHj7++GMcOHAA+/fvx8svv6xOs3v3buTk5GDjxo348ssvsWnTJmRlZeHEiRMGH9eSdeq1YsUK/PznP9e67dSpU8jIyMDq1atx9epVvPnmm9ixYwf+8Ic/DKksNkuwccuWLRPS0tIEQRCEU6dOCbNnzxZ8fX2FUaNGCampqUJNTY067Y0bNwQAwrvvvivMnTtX8PDwEGJjY4WPP/7YqGO+8847gru7u3D//n1BEAShoqJCACDU1dWp01RWVgoAhK+//lpUXfr7y1/+Ivz7v/+7IJVKhQkTJggbN25UH18QBAGA8OabbwoymUwYPny4MGHCBOHo0aN6jzdjxgwhKytL/VqlUgnBwcFCbm6uzn0eeughYcWKFTZbp74ACMXFxYOmS0tLE+Lj4w3OVxCsWy9BEITbt28LAITS0lKdaYz5rHrrExMTI7z99tvq9YcOHRJiY2OFtLQ0YdmyZYIgGH6eHT58WHj00UcFqVQqFBYWahzvgw8+EFxcXITGxkb1ut27dws+Pj5Cd3e3IAiCEBcXJzz//PMa+2VnZwuzZ8+2yTr19corrwhTp04dsH7JkiXCE088obFu165dQkhIiNDT02NQveyJXbVAOjo6kJ2djb///e8oKSmBi4sLfvazn6Gnp0cj3f/8z//g+eefh0KhwOTJk7FkyZIBTWd9en8L2M3twUwvERERGD16NAoKCnDv3j10dXWhoKAAUVFRGD9+/JDrdfHiRSxduhRr167FtWvXsGfPHuzfvx9bt27VSPfSSy8hPT0dX3zxBTIyMrB48WJUVVVpzfPevXu4fPky5s2bp17n4uKCefPmoaysTOs+ly9fhkKh0Gh92VKdxLh16xZOnjxpkjoBlqtX7y3UUaNGad0u9rNasWIFCgsL1a/37duH//7v/9ZIY+h59sILL2Dt2rWoqqpCcnKyxraysjJMmTIFY8eOVa9LTk6GUqnEl19+CQDo7u7G8OHDNfbz8PDAp59+alTL3lJ1MoSuOt28eRPffPON0fnZPGtHsMHo+ybY1NQkABCuXLkiCMK/vkX88Y9/VKf58ssvBQBCVVWVQcdramoSwsLChN/85jca669cuSJMmjRJcHFxEVxcXISIiAihtrbW6Lq4uroKXl5e6uWJJ54QEhIShFdffVUj7Z/+9CchKChI/RqAsHr1ao00M2fOFDIzM7Ue65///KcAYEDra/369cKMGTO07pOZmSlERUXZbJ36gwEtkG3btgl+fn5CV1eXYRX6/6xZL5VKJaSmpur9Jm7sZ9V7Ht2+fVuQSqVCbW2tUFtbKwwfPlxoamrS+Lben67zbOfOnTqPt2rVKiEpKUljXUdHhwBA+OCDDwRBEIScnBwhMDBQ+Pvf/y709PQIFRUVwtixYwUAQkNDg83VqS9dLZA9e/YInp6ewrlz5wSVSiVUV1cLkZGRWs9FR2A3kykCwNdff42XX34Zn3zyCZqbm9XfHurq6hATE6NOFxsbq/5/UFAQAOD27duIjIzUm79SqURqaiqio6OxceNG9fquri6sXLkSs2fPxp///GeoVCps374dqampqKiogIeHh8F1+OlPf4rdu3erX3t5eSE2NhZ/+9vfNL7FqlQq3L17F52dnfD09AQAxMXFaeQVFxcHhUJh8LH16erqQlFREV566SWj97XVOgEPvo1mZGQM+FZoCGvVKysrC1evXsWlS5e0bh/KZxUQEIDU1FTs378fgiAgNTUV/v7+GmkMPc+mT59u9PH7eumll9DY2IhHHnkEgiBg7NixWLZsGV577bVBZ4G11TqtWrUK169fx4IFC3D//n34+Phg7dq12Lhxo1F1shd2FUAWLlyIcePG4a233kJwcDB6enoQExODe/fuaaQbNmyY+v+9U7/3b6r2d+fOHchkMnh7e6O4uFgjj6KiItTW1qKsrEz9R1BUVAQ/Pz/89a9/xeLFiw2ug5eXF8LDwzXWtbe3Y9OmTXj88ccHpBdz4QMAf39/uLq64tatWxrrb926hcDAwAHpjx07hs7OTixdutToY1mqTsa6ePEiqqurceTIEVH7W6NezzzzDN5//31cuHBB5+zTQ/msgAe3fJ555hkA0DoYwdDzzMvLS+cxAgMDNUb8AVD/Lfb+/Xl4eGDfvn3Ys2cPbt26haCgIOzduxfe3t4ICAiwuToZQiKRYNu2bXj11VfR2NiIgIAAlJSUAAAmTpw4pLxtkd2ExJaWFlRXV+PFF19EQkICoqKi8P3335skb6VSiaSkJLi7u+P48eMDLgSdnZ1wcXHR+B2S3teDBSZDPPzww6iurkZ4ePiApe+3lvLyco39ysvLERUVpTVPd3d3TJs2Tf3HCzwIoiUlJQO+HQNAQUEBFi1aZPSJa8k6GaugoADTpk3D1KlTTZIfYL56CYKAZ555BsXFxfjoo4/0jvYa6mclk8lw79493L9/f8B9flOdZ3Fxcbhy5Yp6xB8AnD17Fj4+PoiOjtZIO2zYMISEhMDV1RWHDx/GggULjP62bok6GcPV1RX/9m//Bnd3d/z5z39GXFycyc4tW2I3LRA/Pz+MHj0ae/fuRVBQEOrq6vDCCy8Ync8///lPJCQk4ODBg5gxY4Y6eHR2duLtt9+GUqlU/6RjQEAAXF1dkZiYiPXr1yMrKwtr1qxBT08P8vLy4Obmhp/+9KdDrtvLL7+MBQsWICwsDE888QRcXFzwxRdf4OrVq9iyZYs63dGjRzF9+nT85Cc/waFDh/Dpp5+ioKBAvT0hIQE/+9nP1N/EsrOzsWzZMkyfPh0zZszAzp070dHRMaCDsaamBhcuXMAHH3ww5LqYu07t7e0az2LcuHEDCoUCo0aN0hi2qVQqcfToUfzud78zWZ3MWa+srCwUFRXhr3/9K7y9vdHY2Ajgwe8y9L1FaorPytXVVd2h7+rqqrFN7HlWXFyMnJwcfPXVVwCApKQkREdH45e//CVee+01NDY24sUXX0RWVpZ6Qr9//OMf+PTTTzFz5kx8//33+P3vf4+rV6/iwIEDNlkn4MH7397ejsbGRnR1dalvS0ZHR8Pd3R3Nzc04duwY5s6di7t376KwsBBHjx5FaWmp0XWyC9btghncL3/5SyE9PV0QBEE4e/asEBUVJUilUiE2NlaQy+UaHam9HWGff/65ev/vv/9eACCcP39eI03v6/PnzwsAtC43btxQ5/Phhx+qhwH6+fkJ8fHxQllZmVF10Tcg4PTp08KsWbMEDw8PwcfHR5gxY4awd+9e9XYAQn5+vpCYmChIpVJh/PjxwpEjRzTyGDdunPDKK69orPvf//1fISwsTHB3dxdmzJghlJeXDzh2Tk6OEBoaKqhUKqPqY4066fq8+neW7tmzR/Dw8BBaW1uNrpM16qXrb7D/UFKxn5W++giCoNHhLOY8KywsFPpfTmpra4WUlBTBw8ND8Pf3F379619rDHe+du2a8NBDD6nfx7S0NOGrr76y6TrNmTNH77WiqalJeOSRRwQvLy/B09NTSEhI0HrOOQqbn41XJpMhPDzccR/EISKyUzbbB/L999/j/fffh1wu13iWgYiIbIPN9oGsWLECFRUV+PWvf420tDRrF4eIiPqx+VtYRERkm2z2FhYREdk2BhAiIhKFAYSIiERhACEiMqO+M1hoe21sXr2LtvXG7KcrL31l7Z+eAYSIyMx6L7q6Lsj9t+u6qAuCoF76pu2/zpD9dOXVv8x9X/dPb7PDeImIHEXvRVfbhb/3/736rtembwDom3ffdYbspyuvvmXoWy5tx2EAISKyAEOfmBgsCPTf3j8Qadt/sP105dV3nbbjMIAQEVmBvltO+vRvFRjbAumbTlte/bfra+n8P5t6/lzVsXRwAAAAAElFTkSuQmCC", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -125,7 +125,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -137,14 +137,14 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 9, "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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unXrUFBQYDQ8dDodNBqNwURERO2HQYBcuHABQN05jddeew07d+7EwIEDERMTg/PnzxttJDIyEmvWrMHOnTvx2Wef4eLFixgyZAhu3bplUO+3337DSy+9hN27d2Pv3r0IDAw02mZ6ejrc3d2lyd/fvznrSURELczgRIVerwcATJkyBSkpKQCAxx57DLt378aqVauQnp7eaCNxcXHSzxEREYiMjETPnj2RlZWFyZMnS9/NmjULKpUKBw4cMHvpbFpaGt58803ps0ajYYgQEbUjdnv27MGSJUugVCrh7e0NoO55T/WFhIQYPSTVmG7duuHRRx9FSUmJQfnw4cPx888/47vvvjPbhkqlgpubm8FERETth93jjz+O5ORkFBUVoXfv3vD19cXZs2cNKp07dw49e/a0uNHq6mqUlpaiR48eBuWJiYlYv349Xn31VWRmZrbIChARUduwc3Z2hqenJ8LDw6FQKDB79mwsWbIEmzZtQklJCebNm4czZ84YHIqKiYnBsmXLpM9vvfUW9uzZg0uXLmH//v0YM2YM7O3tMX78+AYLHDNmDL788kukpKRg06ZNVllJIiJqeQ1u1khNTUVNTQ1mzZqFmzdvon///sjJyUGfPn2kOqWlpQaPRf/pp58wfvx43LhxA15eXhg8eDAOHDggvW/jQS+88AL0ej0mTJgAOzs7jB07thVWjYiIWpNCCCHauhOW0Gg0cHd3R1VVVYucD+F7PYiIGmrKtpZP4yUiIlkYIEREJAsDhIiIZGGAEBGRLAwQIiKShQFCRESyMECIiEgWBggREcnSaQOEr6YlImoeBggREcnSaQOEiIiahwFCRESyMECIiEgWBggREcnCACEiIlkYIEREJAsDhIiIZGGAEBGRLAwQIiKShQFCRESyMECIiEgWBggREcnCACEiIlkYIEREJAsDhIiIZGGAEBGRLAwQIiKShQFCRESyMECIiEgWBggREcnCACEiIlkYIEREJAsDhIiIZGGAEBGRLAwQIiKShQFCRESyMECIiEgWBggREcnCACEiIlmsEiCXLl2CQqFAUVGRNRZHRERW0OQAWbRoERQKBVJTUw3KCwsLMWzYMDg7O8PNzQ1PP/00tFptS/WTiIjaGWVTKh86dAjLly9HRESEQXlhYSFGjRqFtLQ0LF26FEqlEsePH4edHY+QERF1VBZv4aurq5GcnIwV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", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -176,7 +176,7 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 10, "metadata": { "id": "eN618pI5tNiT" }, @@ -189,7 +189,7 @@ }, { "cell_type": "code", - "execution_count": 187, + "execution_count": 11, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -219,26 +219,19 @@ "### Try draw attractive graph" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### arse" - ] - }, { "cell_type": "code", - "execution_count": 211, + "execution_count": 107, "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZkAAAEZCAYAAABFFVgWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAJ1UlEQVR4nO3d3W6DuBoFUDjq603v84R5TM5FhCaTEsDYOxBYS4paNYYQt83ms/nph2EYugp933dd13VrVlPS9nWZ0dSyW9bb9X3X1b11ABb8b+8NAOC8frYu+FphtGr7ukxNodViHQBsp5IBIKa4knmtDuaqlJK2S+sYpeZ+AGhPJQNATLM5mbnqoaTtq9c2Ja8DwL5UMgDEFFcyJZXFlipkfO7dPM5c9VPyegDkqWQAiOlrz/j/Ws74B4hTyQAQI2QAiBEyAMRsPk/mK93vj8fo9/fx9XZ7PABoysQ/ADGGywCIETIAxAgZAGKEDAAxQgaAGCEDQIyQASBGyAAQI2QAiBEyAMQIGQBihAwAMUIGgBghA0CMkAEgRsgAECNkAIgRMgDECBkAYoQMADFCBoAYIcOsvu/33gTgiwkZAGKEDAAxQgaAGCEDQIyQASBGyAAQI2QAiBEyAMQIGQBihAwAMUIGgJifqR+O16sahmFxBVvavvO8ji1t12wDAJ+jkgEg5j+VTMkVd2uuzltScdRUJyocgH2pZACI+em6v3v8c1VKSduldYzmKo2Stq/LqGAA9qWSASBmdk5mriIoaTt699zUsiVt320TAPtSyQAQ89N1f6uCuWqhpO3a+ZuSqqSkUjI3A7AvlQwAMf1w1d38vu+6i771En3fqwSBzSYvKwPPw5WTw45Tw5nCCHhhuAyAGCEDQMy1hsvu98dj9Pv7+Hq7PR4ANGXin0lTh5CbkwFKGS4DIEbIABAjZACIETIAxAgZAGKEzNG5fQHwxYQMADFCBoAYIQNAjJABIEbIABAjZACIETIAxAgZuLCpq21DS0IGgBghA0CMkAEgRsgAECNkAIgRMgDECBkAYoQMADFCBoAYIQNAjJABIOZn7w24qqlrRg3D8Nzg7/fPz6dfH6ABIcOkMXD6vhc+wGaGywCIUcmEGI7iFPq+6TAt1yNkdlI9HDV1H5AjfRgcffsu7nknaPy+aE7Q75eVhMxRjf+wR92TPPr2Ucfvl0bMyZydOx9SQ8BQScgAECNkAIipnpOZnDRs2Pad53WUrBeAz1HJABCzuZJZqjS2tn1VU52ocAD2pZJhloAGahRXMq/VwVyVUtJ2aR2j1nM/AOSoZACIaTYnM1c9lLQdvXuu5HUA2JdKBs7Mjhc7K65kXiuIucqipO3a+ZuS6ufSczPhm56dXdFN5f5tENyi/9r7pnewlgtkfisXMAS+QHXIlFQJJVVIi/WeooI5w3sALsucDAAxQgaAmGvNydzvj8fo9/fx9XZ7PABoqh9OMXGxQXjCfPHon6d2Vb+Cd+9j4eintduXev2jO9XRZf82WL/88gbMrh9Ghst2dtWMhyacB3R4QgY4LFfx+H5CBoJ8SHJ1QgaAGCHDd1MpwKFd6xBmuIqFyw454IRPETJbOYQTYJHhMgBiVDLA4TwflTd5yw63MvgaKhnq+McGZggZAGKEDHBdDoGPEzJwZoYz2ZmQAXhj98sC7f36DQiZb2dPFTgwIQNAjJABIMbJmBBQdDLhyNAnJ6SSASBGyLCvExw9A7xnuIx9LF17ynASnIKQIWPhfiaLz4dNnf9wpHusHH37Wun7PvK+FvvPBTY/RsjAhKN/oI/bl/qQhlbMyQAQI2QAiDFcdlbu8c6BLZ5HxGkIGeBwBM55GC47u6v/szoPB3alkuE7lZxn4xBVCrksUDtChmNae54NcGiGywCIETIAxAgZ9mXYC05NyAAQMznxX3JyVM2JVHPLTl3g7tnzMk7mAjgmlQwAMf+pZJaqh61ta5atqU5UOLAvV4nGeTJbrbw2mH8y4Mp+uu7vHv9cpVHStsWyr23S80SwysLf1tV3MuIXwNT/X0MlU8sfMBT71Ae/gNnf7JxMydFfW45Im1v23XpqjkiDs/EhytGpZGAP5vS4iJ+u+7s3NFctlLR9fW7Lskuvv3XbODk3bYNDcJ4MADGTw2Ule3kllUXLZde0tbeKAzOYVPHZRBmVDFn+WeHShAwAMdc6uux+fzxGv7+Pr7fb4wFAU/1w1cHHd7f1bf4yDkG9strf/2H/fhbucT91dOgh38dWC++/6et8eb8ZLgMgRsgAECNkwk41RABQ6FoT/wAHsDhn9fz8+P2X7rAKGaCckxlZyXAZADFCBoAYIQNAjJCBIHMTXJ2JfzgwIcWkT11xoAEhA3A0Bw2MLQyXARAjZACIETIAxAgZAGKEDAAxQgbgpKYuxFny/OSh0oUcwgxwMs/hMX4/vLlz6dTzLa8CLWQALmYMlLe39254no7hMgBihAwAMUIGgBghA0CMkAEgRsgAECNkAIhxngxAa190U7E0IQNQagyMvr9seKxluAxgqy8PmE/c3lvIABBjuAygtYXhtE9UEEehkgEgRsgAECNkAIipDpm+75fvrrahbcmyNesFIEclA0DM5qPLSiqHmiqjxbJXOpID4EhUMgDEFFcyr9XBXKVR0ja5LAD7UMkAENNsTmaueihp2/J1ANiXSgaAmOJK5rWCmKssStq+Pley7JbXAyBPJQNATPVVmEuqhJIqpMWyKhiAfalkAIgRMgApRlMudtOy+/3xGP3+Pr7ebo8HAE31w1UnLt7csQ7g8KbOCXz6PJs6Z3Cvj3rDZQDECBkAYoQMADFCBoAYIQNAjJABIEbIABAjZACIETIAxAgZAGKude0ygDNYeWuUvu93v+WJSgbgpPYOmK4TMgAECRkAYoQMADFCBoAYIQNAjJABIEbIABAjZACIETIAxAgZAGKEDAAxQgaAGCEDQIyQASBGyAAQI2QAiBEyAMQIGQBihAwAMUIGgBghA0CMkAEgRsgAECNkAIgRMgDECBkAYoQMADFCBoAYIQNAjJABIEbIABAjZACIETK17ve9t+C76b86+q+O/quzov+ETC1/pHX0Xx39V0f/1REyAOypH4Zh2HsjdtH3e28BwOldt5IZhjaPf/5pt64rPvSf/tN/3/tY0X/XDRkA4oRMrdtt7y34bvqvjv6ro//qrOi/687JABCnkgEgRsgAECNkAIj52XsDPql/OTdmajrqtc2rkimscV1zy6zZpqMo2dYt7+td3+s//fdqabtb9F+LdaKSASDoEpXMu4pi6ufv9k6m9hKX1ttqm/ZWsq01bZf6fuvr7E3/tTdu3+v/Wov+q1knf6lkAIi5RCVTY25vZWnPZk1Fczbv3vua/htdeey75G9H/9XRL5+hkgEgRiXzRsmRYUtzMlcau20x/2Dse90837vK+Ur9VEN/fYZKBoCYS127bMt5CjXd4zyZdW3fLZN6nb3s1X9z6/im/puydjShxflt395Xe1HJABBzqUoGgM9SyQAQI2QAiBEyAMT8H1FwJY3GxYi7AAAAAElFTkSuQmCC", + "image/png": "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", "text/plain": [ "
" ] }, - "execution_count": 211, + "execution_count": 107, "metadata": {}, "output_type": "execute_result" } @@ -259,8 +252,8 @@ "\n", "s = mpf.make_mpf_style(\n", " marketcolors=mc,\n", - " base_mpl_style=files.base_style,\n", - " mavcolors=['#1f77b4', '#ff7f0e', '#2ca02c'],,\n", + " base_mpl_style=[files.base_style, files.expanded_style],\n", + " mavcolors=['#1f77b4', '#ff7f0e', '#2ca02c'],\n", " rc={}\n", ")\n", "\n", @@ -288,17 +281,20 @@ " datetime_format=format,\n", ")\n", "\n", - "#ax[0].xaxis.set_major_locator(mdates.AutoDateLocator(interval_multiples=True))\n", - "#ax[0].xaxis.set_major_formatter(date_formatter)\n", - "#ax[0].xaxis.set_major_formatter(mdates.ConciseDateFormatter(ax[0].xaxis.major.locator))\n", - "#ax[0].xaxis.set_major_formatter(MyFormatter(df.index))\n", "for a in ax: \n", " a.yaxis.set_major_formatter(EngFormatter(sep=''))\n", " a.autoscale(enable=True, axis=\"x\", tight=True)\n", " a.autoscale(enable=True, axis=\"y\", tight=True)\n", - " a.margins(0.05, 0.2)\n", + " a.margins(0.1, 0.2)\n", " _ = a.set_ylabel(\"\")\n", " _ = a.set_xlabel(\"\")\n", + "\n", + " for label in a.yaxis.get_ticklabels():\n", + " label.set_horizontalalignment('left')\n", + " \n", + " for label in a.xaxis.get_ticklabels():\n", + " label.set_verticalalignment('bottom')\n", + " #a.tick_params(rotation = 45, ha='left')\n", "fig" ] } diff --git a/src/drawing/market_chart.py b/src/drawing/market_chart.py index 6206560f..78292c9f 100644 --- a/src/drawing/market_chart.py +++ b/src/drawing/market_chart.py @@ -14,88 +14,4 @@ def __init__(self, config, display, files): font_manager.fontManager.addfont(font_file) def create_plot(self, chart_data): - return PlottedChart(self.config, self.display, self.files, chart_data) - - -class PlottedChart: - layouts = { - '3mo': (20, mdates.YearLocator(), mdates.YearLocator(1), mdates.DateFormatter('%Y'), local_tz), - '1mo': (0.01, mdates.MonthLocator(), mdates.YearLocator(1), mdates.DateFormatter('%Y'), local_tz), - '1d': (0.01, mdates.DayLocator(bymonthday=range(1, 31, 7)), mdates.MonthLocator(), mdates.DateFormatter('%b'), local_tz), - '1h': (0.005, mdates.HourLocator(byhour=range(0, 23, 4)), mdates.DayLocator(), mdates.DateFormatter('%a %d %b', local_tz)), - "5m": (0.0005, mdates.MinuteLocator(byminute=[0, 30]), mdates.HourLocator(interval=1), mdates.DateFormatter('%-I.%p', local_tz)), - } - - def __init__(self, config, display, files, chart_data): - self.candle_width = chart_data.candle_width - # ๐Ÿ–จ๏ธ create MPL plot - self.fig, ax = self.create_chart_figure(config, display, files) - # ๐Ÿ“ find suiteable layout for timeframe - layout = self.layouts[self.candle_width] - # โž– locate/format x axis ticks for chosen layout - ax[0].xaxis.set_minor_locator(layout[1]) - ax[0].xaxis.set_minor_formatter(plt.NullFormatter()) - ax[0].xaxis.set_major_locator(layout[2]) - ax[0].xaxis.set_major_formatter(layout[3]) - # ๐Ÿ’ฒcurrency amount uses custom formatting - ax[0].yaxis.set_major_formatter(price_formatter) - - self.plot_chart(config, layout, ax, chart_data.candle_data) - - def plot_chart(self, config, layout, ax, candle_data): - # โœ’๏ธ draw candles to MPL plot - candlestick_ohlc(ax[0], candle_data, colorup='green', colordown='red', width=layout[0]) - # โœ’๏ธ draw volumes to MPL plot - if config.show_volume(): - ax[1].yaxis.set_major_formatter(price_formatter) - _, opens, _, _, closes, volumes = list(zip(*candle_data)) - volume_overlay(ax[1], opens, closes, volumes, colorup='white', colordown='red', width=1) - self.fig.subplots_adjust(bottom=0.01) - - # ๐Ÿ“‘ styles overide each other left to right? - def get_default_styles(self, config, display, files): - small_display = self.is_small_display(display) - - if small_display: - yield files.small_screen_style - yield files.default_style - - if config.expand_chart(): - yield files.expanded_style - if small_display: - yield files.small_expanded_style - - def is_small_display(self, display): - small_display = display.size()[0] < 300 - return small_display - - def create_chart_figure(self, config, display, files): - # ๐Ÿ“ apply global base style - plt.style.use(files.base_style) - num_plots = 2 if config.show_volume() else 1 - heights = [4, 1] if config.show_volume() else [1] - plt.tight_layout() - # ๐Ÿ“ select mpl style - stlyes = list(self.get_default_styles(config, display, files)) - # ๐Ÿ“ scope styles to just this plot - with plt.style.context(stlyes): - display_width, display_height = display.size() - fig = plt.figure(figsize=(display_width / 100, display_height / 100)) - gs = fig.add_gridspec(num_plots, hspace=0, height_ratios=heights) - ax1 = fig.add_subplot(gs[0], zorder=1) - ax2 = None - - # ๐Ÿ“ align price tick labels for expanded chart - if(config.expand_chart()): - ax1.set_yticklabels(ax1.get_yticklabels(), ha='left') - - if config.show_volume(): - with plt.style.context(files.volume_style): - ax2 = fig.add_subplot(gs[1], zorder=0) - - return (fig, (ax1, ax2)) - - def write_to_stream(self, stream): - self.fig.savefig(stream, dpi=self.fig.dpi, pad_inches=0) - stream.seek(0) - plt.close(self.fig) + return NewPlottedChart(self.config, self.display, self.files, chart_data) From 09a4c3aa4eb3dc4a52bb0dffe78548672fab076e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 26 Mar 2022 22:39:39 +0000 Subject: [PATCH 15/66] chore: autopublish 2022-03-26T22:39:39Z --- tests/images/BTC EXPANDED.png | Bin 2114 -> 2224 bytes tests/images/BTC HOLDINGS.png | Bin 2135 -> 2479 bytes tests/images/BTC OVERLAY2.png | Bin 2170 -> 2498 bytes tests/images/BTC VOLUME EXPANDED.png | Bin 2336 -> 2224 bytes tests/images/BTC VOLUME OVERLAY2.png | Bin 2427 -> 2498 bytes tests/images/BTC VOLUME.png | Bin 2353 -> 2427 bytes tests/images/bitmex BTC 1d defaults.png | Bin 2087 -> 2427 bytes tests/images/bitmex BTC 5m defaults.png | Bin 2337 -> 2411 bytes tests/images/bitmex ETH 1d defaults.png | Bin 2177 -> 2490 bytes tests/images/bitmex ETH 5m defaults.png | Bin 2312 -> 2422 bytes tests/images/cryptocom CRO 1d defaults.png | Bin 2193 -> 2562 bytes 11 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/images/BTC EXPANDED.png b/tests/images/BTC EXPANDED.png index 926745bb4fbf68385752973ac51a2bf8f943f126..e50f8b8ca3e19ca9c15044bb40a5f6ce14f4dda2 100644 GIT binary patch delta 1430 zcmV;H1!?-i5U>%jEdzgUNkliMpd83`U9X|Ijm60wjP{kR?d|nXgqE7Ef6t z_8Oy-A^`9&Ho*KH+c3beGZg%%aa>@>Hu`b`@}HhVII#!D1M`N4g8}}snDG0Iuh>?Q zD42z~O5|z{tj!^+5v(4-FA%f^L?KIZ2sOfhujZuNAlK^p4HkbFTyqKOtlCMaR4Ubt z0Cg8u6Xz}+Q4$LxOjfF**W@P?grB@92pBd^%N6pj;Pi8Me3woo48VC@|9(a`2)_jE z-!|3&F`&B?4}vd)`w57Cg~f5=o^0R}8R3p53UcSLLtg475>ESjmLMp)O( zLPKzgib0IDjp}Q}2U^A(5PsCC zj4n%WKzvFH0=0fG*GLND)S)1(6a;E-5D?zB20_=G3gTd^tvy9SY%K-xr(=5%c-1XI z(9LA)C<1?B8WdmR_QD?m_SO^xgbfu7us9pS;l93>AY6S|#8uZ5#JKH+4HQ6-Ub1P8 zSj1=955%&4gd<=EY}OPg2ZG&)*&D zG5&#^(B!F~_=q3vPe$CHAg0W%vmlHGL7x)(JP4BoVT^ygJrt@2MAh|32f_3U1b^o2 z`R{*cM2~1q(ItqhZ|4b!;{}M~D`=z?gn11D??|i#;w*=03BuHYz=DVaaoJw6>Zc`k z6B7pF84Hs2Y)3>EM7C5%=tHTZ^Z9o|B(1w52KscAo`$`dhUTZ}Vwmv|My<`jotO>$) z6fgH#rXb7{5P2_9_-u^mA6so$BUoVGSQrRHM~(M=L~^teh-S)OOfiVaAE+Q^xN94! z1_XDRgNZ;)UvpNe$ax$5Rb)%S<{%88lan^nvUCGg3c_tAW@r0>Fbo9uURjf6L6m=r zgFp|E12N}L#vEOP_~9b{qOu_D2U~+M6omAhgiUn^VjD>Vk-Nn|L@5ZO2^_}$k!T_U zLWBZ{(S_=}*QihpU3JA02Lgi2Zm1-Iur;BL&vJEzQDb)!DwRs5QWYt)0Su!1OzEr> zz;N$LjR_giPR~V#@&DR5uAAZ&i%)d*w4Dm0-%FM*Wn3IsK|0KtDu(ws7V z#GOeC5Y7)_zb0Qd@}ov*-FU)mawc$N0%=YmmSde*#3q?Us#yFy%~=mIc~F*iCTQr_ z;SZjS_$-KIH<_gJjja*b)}7B%Qu!u;*uF-%5hEVZ24pVDWNPM;Or~Zo$wZ}6sZ=VJ kN~Kb%R4SE9r5dJx3BL^r&TJ04FaQ7m07*qoM6N<$f`A%`k^lez delta 1319 zcmV+?1=#wq5yB9#Edzf5Nkljk>K65Qb;m|3&Xz4NanCmEZ5%=P8NsCI+<* z5mZCW>^7SRE$+>a#c%axch--~2lp1eJF)twk9j}X9OQtxfOG`I$4zIF`{|c>t012D z!N*o2TWh#)4qlBo)C0Z(p`QTHr%MidjUaZ_Ts0f2thU`a#ASc`xa`;IwUK}z2)YrA z?)-A%++C+B0fY!3L;yi<%yjD)J8#{0*J&O`3m}>x1P~&C5V6vgpC89}$F37{pRV_7 zA>I%`h#CNK^B@)yK!{?63Y~u%2Ot3A*>(0)KNR3C0fbVhVT}3Z#JPYVL4L^mn*s;wq0trI}3PfvRA zPV^iE%Z6#F`s0I0iy}%k|)d<^bB$jL3HsXIFh%p5aB4zWKe0K_H*LRv|H00@Af z69_xX0tkN@WlamheY~eY%q0avSAi)(94yOeHTm?*uGz+zQMC=CU{!4vgq;>CnO>6u z2oXSt0Adjr2EmPjum(Rsh`|pKg+YAudokO$p}%~%QUk;XBQ2Iq&ZkUU_)$Ro@Nt_0 zLEVEOI(^)hoQO;ojsb$tAGakXB2yycfC#0O8fbr8fUE+dOiGD?^u!_c3nKn;Thc7p zI3O-k3W6}FKzat1Mg!q)^yy3l1eFC*%Dfiy)z}-Y7EVkkp!WS91eXOtGLRGymWwJS zQ>YIs0pg=^Mj)vjgnBz`*=ZPcK@_negtiBQ5cCQN z)gdRVA_!|aXMqTwWYr7jfN;M%_n;7ODF;O4Z7vRhNQR+%sdhlbn{Ex_G%&FsTwQx$ zchm+!F%Xg5*y#-qgt4ZmJCxmX5L69BsH%U*Z;PQT5bBEJ$^lVJ;b%S>#6Exx1@9k3 zG_dY=iADnPNB|-7K=8p53Irb*gf_$g0wDIeJb+LjtTmYoB8sJd5CJP)2Uj4@X1UTB zAmXNo0-?LyvpNQ$2h9L+c6!0%AkM35T`638fH*t7;I`!F_f=J#Qj48$DqQ5pAP#@4 z9>o?r-&78WecdJwqS|ast};O=%WKulAoTmHJSvEI@E{1c611ti_F+*52xWi^mkB|r zWsdd817RPO=|Jpj<$izCo!$XK{e#F*9K`kV;&2LsxPJvVSZ82k2D)m+p~z8wLCs8D~0wumT^%llTDf dP4aa?`~i)D5B&*-XuJRb002ovPDHLkV1g6~L-hav diff --git a/tests/images/BTC HOLDINGS.png b/tests/images/BTC HOLDINGS.png index 5b68f223771f364d519c049069e2d4bffce472ec..dcf82b21d08e3f37ac93e204409d42dab87f7310 100644 GIT binary patch delta 1688 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 diff --git a/tests/images/BTC OVERLAY2.png b/tests/images/BTC OVERLAY2.png index 6486b3b5d27f6cedd35a442a6916cf95d508627d..a064944d2ad0158ba7137f28805497f97d97772c 100644 GIT binary patch delta 1707 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 delta 1542 zcmV+h2Ko805ug&VEdzhvNkl4zd0N^jq!EE==4bbi93jVDO3(>s`KAnL5$DbiQxEtevd5v4x&ax^#Jxj@D?CkrsNQ6gaKd8S+~LRO8rI@7N~!@gm`A{BvdMu>Og=x zayt{|D4wCDAW(0E7>1I9F#enA(5>{I?vLWxg<5OulTr|<0YHq=l`04nFzva?F!H_> zPwqaA?s7J+OF^I%1WG}mN}0;NZw;d$>OnxXR{o|205RT#YH1LgavfvI?M#@X{y{+~ z2>$w_@pq~#h&X@aV}YpAPN_CV6x}Zl!uop!f%gi6;+zh|Z6XkW^XrNbfR~X*+RNH9 zZ>{wo8OJ#Tynv~~c2;(?YWu;9dwfnDL|qXFpN}>pi~pj_gOVUBLKr%u@@$P59z>@; zf-v}|(E$W?mLKZ++NB^+4InJ4i(TF2XHZ%r7>JdnAW(k_0;M2O3x95MSq0&=GzgyY zQvhN5g6K89##x)Cg0_Ew3(F;Br+3eTfTw1anWS8g%+BBt z2nNGj6C2bEM9&dJfH3&iXqZ)R%~=p@pb;s4INKG}b2LHIF2LEv5Z zM5+f-#48&KkIJ)#v~Oc3tDmFo6czyL#3d5P)}M3FjM~hL}-7xC(k_(>PAiU%I5%tU=A{ zEZZ5x0Ap-ky$w?kFQvDiX3Z|%sW*Sef$mMO4y%G_39lfYNnSzJ26_X8N_CgIF1?Se zZR=J+7zN>_AW#Ydr65oW0;M2O3Ie4dPznO2AW$bjeDm|<42VxwqQ+bS95t_ z)e2(s&OqE)IbMdE&q~p#CqbBdcjAElZwGrG*i#-vDT9-MAOcV_4?Rc_3AcaCATni< zEgk0XRuE_xxXi`TdP*q>48@GP48kP2%AU>Oam7InYj#nrKc}1}QSO7N$zTl#mKb*} zf(X@A3`Xb9wLn}W&?VpzAPCP%5WWpsV1`Hbi*n%UhBr2t%7VnEwm`syQV^j8C5Xs_ zoF7m@CGCsFCm6fOO!2bB7%6^Xaa4&efMB^|Abf#K5X_*YM&vRWcOLAexIHRf8<$Y7 z=s1(xK%mhn2w@Nd5m$MZ!KfugFIkYwAmaM;CWzgVPU91y6A+?!SwqN!$hP9?L8Qfd sSR=j(;xJtW@f?WnsttrnrBeO$2ay&QqH4!hC;$Ke07*qoM6N<$f_A>SxBvhE diff --git a/tests/images/BTC VOLUME OVERLAY2.png b/tests/images/BTC VOLUME OVERLAY2.png index 6134442daa59082ba15b69454f941f2d89853935..a064944d2ad0158ba7137f28805497f97d97772c 100644 GIT binary patch delta 1706 zcmV;b237g{62cR(EdzgmNklc{r-6n;G=XgpjYamN1UC)L%+WE?yg%9Gh&wbgvD(nPo8RZ z-y_uPlNbt`r$x4i8Z_nguS;`5DW#APP(4L+CXv; zE*SA%5PyTEi%8O=k)@^e!cbiSh%{7}*lesY91CG;^61Bp5J1g_)wQd*xO5(bnH8$* zuN(;fFHL`Z?-*f3AaWjhRBOBx1d1Q*6hx4oKNeZGtZ>$C$LB#{bxT2n`#UTzyjKLml;0z` z(9NbGfP9ESq+_MK>E1LR@jDR?`+HV^aQ(qYsJ4F!)ja}XTgQ+9E^!BW5Wy(<3`Ei+ zeCh^j2I4(qge73^m*!=c(xF9KmU1(EcK*amDkFcM8jZf-UM@k_gmS%L>aLxK^AxKnio0qF}l zC3(+JiEW(A28i89^lE={3GNA^?%vw)gJplVD3|B=K|z=kMEI7_>p>V6gfZ^*_Dok3 zf_Qr8*5X-Q;iO9rg6IlFF#2K`TBe`|6F{8Gg2??k5)elP2w@i9jddoljT2H3rWyo3 zk=P3aCN>0No`JxM)PexvI3os;JzwpOM{>;Gm=F*$7D3TdL6{5(*81>c2vZHTaUXxh zAZpYC1iy%rwe}zml308q1?8*-LZ}0K3~A*OApCGCu&ggE0Rd)d5Z#s+rXbFnhZR7e zJL>!V-Uo!Smm0jvE)2rPWU|xn#|q}{i-F)4rJwx)dMqX*AYcy=BvjXGon;EbNI>x6 zFn_Fp+-%uSloe z^6UUi1foT?(AR7bSz{NkvKJTA6NGX8TiD#_DF{RF$%AvIzD`t&g0M@8$+z!;Fa!jR zUSXAX1yL#r0wX{cgfNU!rtLsngovxO6NvM`r$LwyM5||8RGWfmF9l(UfB%22Pt3AZ zDTqK_>chk=SNLxn0}z9h#4Oz=XER29*BUXR4Nf9dtwMFhnhpYJ%rdbVrI{dp(|_m_ zvs_=ftH$gxVz?H)j~Finfl?4C1%Xl!CiQ@X;@4 z0yid*mgI9;)`>-I0?s1uKnY4~V=`3&s@sG32eEPx@w5~Jm;e9(07*qoM6N<$g2y-s AQ~&?~ delta 1634 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 hACpH_LG|+>{s1u@nRKgMz zuL1Ei8wG(<5U78_AnHj$I6d~PMj-6J_7B{+!-kp`1pX77mQoO?xk0d|@l_Drr64we zg4ne|P!I;aK?hU{BIwf~xZPE5+|~zCp`+ZSAW#c~uzpWL>^t`+arY$H$?mBa1@UkD zerNC8;RXlXKzK)HZ4l@VcO1eygZHN8LEL+f1D)Yb9&vwjB=w>`Vy}9IAtg#dpcKR= z>r^49-tt2S^#}q{NeTj`AW#YdwIm2z=Y})Nb3uI^1evZNti$nb5bi!}C!in#i2A>v zpde6-fUq%$7A4HBFn`2Aw2*>8%?kqfhYeE@t)5t30R(&+1g%^s2wKANGu8@1LExeu zPSh$0tmc1*LE!2pfoP=#K=k>Ex|umCMt6Xsh!sHi9=)X$1eMXYfJisY zfes)lJt|kAa&z33T|wZLy)B5^FMeN8i8;93*at-KU;0%LsPG)`1lZm^1_25p z#OMp6vlxiqmW6qN7lVK_2ze}KikgC`@$zE1Y-oRw``y1`Qy{`pIYH761k`zXv0MTK zO@?eAWGNiGueKlt{JDV8=#wCvx&AvU2XW`I`2pUrDKvTs0-FYbh@Wx&1p*2#Mm&-G zm=*+8tq??Ttt;Bg+-ooy2$KLI(&Y{G=HCP{pnupz)vOJI^1GsmK)BTt2Ev?zNUyi} zmPLOcF0f#a1Pupak{~jzHV1;n8wBEtSFnC)1`s9*B2_hSpqS5QgA(I0*`LiQh{2u% z1nWIfneQm{AW0A+>p~D?bPghMjPYc5$nQ;~s7rzgy=240>b#|s(s)6QiE7B z7~U?-01(ES2*dlLNsXJMXQn!~wrLlmcP+4O^dTkOG6wze9f| zLF_fb;4y;;`up|1=qW(-sRI|_6?-y|=u-!&Df$Rsk$7*UI)TV6icO@BASRaem+}rp z^(f?t)FV*SSFo291WG}mz6=8V?FQXs6YJJGW0b-X%= zRiz+M3Ig>t5ZOhCnjk_M^PA_!b%nPX8rC-Cco@yiOeLHN0Wd4NcUS?>;oOiUu^@GeUc2>YIE%zY5}xH^P`x)mF(0ucW(2}BLon2Kh?qD+5J&;UgH z&IEov$0N?9K%{$uWd^r`t1ti)ik5jBZHVBt}D ztOenV;{rs&r4aSv6h({oP0U8hD;2sKM9EcaF3J8_zbNT~=$rcfv?Kuq|00000 LNkvXXu0mjfBC@)} diff --git a/tests/images/bitmex BTC 1d defaults.png b/tests/images/bitmex BTC 1d defaults.png index 584bb7ca00e51843f68ff8d8fd35eedca5fbfef7..6f49210ff0b6ac2a0d946680e4814119c2609c13 100644 GIT binary patch delta 1635 zcmV-p2Auh)5c?9aECYWAIY~r8RCt{2oQrmYAPj~R-~XX^Rs$pQ2oi7PZw~qWmTiU=sxzdQvdy3}L8$b3 zL8Rxb>W8k+3)M;dDcOuF69i_-<11@1<~}hWhz6U_%R!JF1j&CvkQ@ZbL695-$w83j z27%^bjrm}55F`gdauBPq1Oh20GfSwh1OmhP^dK-r>86NBY|SjLE?ys9h% ztpS(e2SDVZy3FRo;^EkR5GpJ)Qq0ndOS7x;c;rxBJqSK)j5gV?pL$*;La z4{34`RNcivtbZCn#LZ+M4b`Fe6F|W6cRPk|rU!xW>8(S*j*QT-R>aPdmRLXht)ek;0Hj!4IuOva*k)v z$)H*ZrQ@FaEE_;zXk^SNG&W04&?tfwy(xbdUdO?TS?=t!tiXcM1VVU(@B`ce z!Fzykrs_J!W9Eb!Q0c6gDN?ZPmvGJ_Ai6sXm9Q~_cL_>I7Ku;!)C>~3kpv=^md7mX zK;U^0r_>x-)x7}Ia9pr43tY5GSQ38}MCK9N217Vd$ppbJe+vZ7zFC(-ZV^Dpke~vg zo$7yL5HdJ-GLJ(xsmt>?@$!q1$%;W62*iAJveJOLU+q11J{>^73W9%2Xm}7{f`DJw zU?8%LD?xDL!+;Rl0>MUK3Paa5fYsmu5V2i0h-|t@HQKaJ-j~ zyxs`}G=rc|B)$cL5<7x`b0DZ9uLF_#t5Sb>@GvUY3<4eo0R<4I^^(RAU9p%LAI*@7 zSK1gXfnV3hrF^X8HW2nEPSZMpSVW@bKi>pVsf9d73>V{os80LksZAmgsrY1_7cHC zr1W?}fZ#Xay3XoQvzTKin;o42f#S0R1O)=d0Z}xL@v1Pn!1N$MK9jRPGYN>Wl~|l9 z5PkJZ5FkMC=vDludtU`{L`x6`cL;wm9Rh)~fS`}ga0%W348%r=xJh3E@w+%5h}1O{ z2*k#ngr;5y;$L#GWRV((!&2oU+Fvuk3ON0ozMx}-j8T}B_E-B9qh7>Jvc#UtWN z$>ttizUfNK4%NkEYvq269tVLkW|`UCr6)mz&y+v=mFOmwW{s!Eh}-qj=ZJs%~^h<(-(>P=;cqf= zxm>OaWupnw)_9eoY{E-}31)vLxeNsIHW38=Q?86dPt zMJ^kx${vxK^zsNqmaFngWrnd*#v7$g%r|P+B=z_0u94^6p=&_gZI@fqU`=54DuCcs z2OESm$xAZEh&_`|9zmYQ|FchF)(9K&)`lQR8%)u!Xo5Q?n3t693am2=ZGti18&y$S hACpH_LG|+>{s1N2?;US?2FrSF6 zOg14D0a7~^`~KH76hRTc*21VR*n(CQ*K9ioUMP-uK(auH{Bc;Ml1htuwn zd{PnryTAATp*s97La-3?9NqLHo;~6urZVWm>J=g$q*s6Xsk&Fyh({Tyx3m#xEK5E5 zM-hM`cD9oOIkiS#L$O9!5rv=#KoNiUCVSplx zi1M$Sp$IUEh%FRRql6joMN}$bY)p?LMeM9BLfk)_>6EJVc*hJPWN8uTu%`$s!WqM$ z2#UaXH@biBDFU0hum}wNTM@OGK!j5X78Rjeh9(Rxq9u<-RDWu31`)bNuL(uiGU^r( zKoQ`g{IS{^FOE6WzC^FFL7oUfkn=&y7LmJu87j_O^FqdJUWvd6M++2XA!pY?|BEvbAy zLv~NZgJ+C-NZ7Hb3{M0O4J#s?2fv^QyJ>ethD{p5*6WP{iBFJT#JZ& z#(I8p==N3wt4=H8X2N%i_#vSqBIvCMR(*fFh_gAQ2#PQXkHmJS(>)RK65k`@<6_KN z)rd%6bH7SNYR=OlBK!-g=&A`3?&@=kNQeAYFGY0gjH_VM~o{zbcV55 zHFAwmX5f5r5n|s`RI%EcLIyTrm|zpzKoNwH7xM?QAP_B0uVnB50000~F(1Hke9_}=z4+4G%{j`ZcJg=h1ap;M|&-(tCXBEqzCt5i&NLUzh*$eu%S zbAGP;n8b|iS$<4~$(1g0-BEs5t0`gm)k?Lx{=C=gUa#l#$NT?Jx%rfN0|hITawOYPVqBa9+cj(C_!_m+CU}0ku8dY*71_}6GhKqzrQ1Z z{ie^ASRLLQ=>+-Kv<5R3XKgNVLjvR1e^?a%7_&*Thru&uwrTy@CzP*4PAR19^wdxrV1qb_ zW;p@d0v|zfp(?HO=4HmAmCnZ=3sl-tv~YJr=<=>M&Ai8|J@M_R&hD@sCFdELloU(smtX?Gq>Fs6<8CxU!Q66K8ybY;~}o0Co&N)l3HFdUn%LNH|0kMa4t> zI&Bc%{{Gpu;2Qv6-Y=INu#!+@RFKMjU>=Cf8`RtB4&X2VUZaYB={i}I~M`dhs9fl3({0^@hWj&bS%K-)Bl z*j)+T$@kwFd_)xCO@OHU;hFI>!Iva1x5aF^-c4Lwh51e@S@8reLkY(iDXCA=V-`CO zw&-!nivW63@HY5h;~J3ahbI|&mti`XNIaI=NH0)jCWk=o0UiwZ-a7glEXk-gMchWJ zSM>mxfE4lLeg-s0`h^D@mRLCLHjcSpeD^DI+7JKK@iKh{IG>o1}4C20|B80aIDk31<6p{KCeM^*Jj1^>Lj{A7{~bZ zRaleeR+eccxVy?_X!LLtG%Wxf_w#?(yB-`dWke*YqvIat>m_il$}mL-7>%3+Kv_if zL2Sbj9L5AnwOU_2x=34=W@l)I1N*(j*X-W`%Z~9#R3D4-6mUUiCc@`m4~Bf1O@l9C zZuoyTNz81xSrLwbb2S1ZnB^?K=E!tyd66+qgtt5Oh-r8daSQ06j{TRo!tg{G6qQZX zsydn)`X%8pWUPJIB3hV0%ZBrM(wEM|Th0~5+F+5QF(kKslauEK);|pjxbip({lCh~ zjPCkemrq6O+A-Q28{*BVU<~IyNB`m^mwJ0?D@u^6LsOaHJ}L=+GZ~f1+9!mU{W{9@B@IdtKm}yBcQK@ckhQO4L{I zpdkz`0OkjxVR`V`O=Xr}6DlaDxloS!EQkLHrDHw_gpo|Y^og5`Z(xXDdem>AR~EoI zh^KM0tSiUiVV*lQ^2x$2dDQS~qJGy{9UgqYZnORmI_&NR26jN#Z_8o3{8ZQr{OK>e ztevki&Fn6~kUD+a=qdrfkpT5OWR1+em3MRZ)bDEKtMckK2U6|B3CVragtY1=S)nm@gE zd5*HygA>@13^)|dxP->59U@lWUj}zpUvhD}IhW zKXKxQQa|M3nmn7`+5T%{d&%tgonn+om&;;18#6TSynXd#Bi7=zg{LM@DMfvWwQUzt I?-L>V6Bc0PzyJUM delta 1545 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 delta 1383 zcmV-t1(^D}6M+%1ECYW9KS@MERCt{2oQYzjAPhj0`Tvh@X9)Kp$`vGUw;ih-`icmV zT>ya}h^W5c`}ezpHuV9}d(j+q^XfEe6KpxVL6>JPKyNxfP%3@V=wvj>tiWwWplJYf zwWdWxBD_7i2~bn9BKGtUvfLJ(l}9+`la%f)Ejeh=BOwQperT)Uj6}A_x&dhzKZOWGYRmvmAf60}&Af zZxNsVMdlC@1P0{NxS!#6X|(G3wn>?Gpz&+mi2sUJJBl?eLdee1qeY;zW@Wkv=hj#) z0?pbRIJ>j_J-ZjQh@njFBbW?^lT3YThzMO-TUA486Y)`0SLS{2VnvG(5vY0 z5(`B9SJ`!z@R(&H$N+t;SHVLBgGRwX#COubLxdaRZZChW5>_HmM9|5&PcWP=!dA{n z1R@?QLO;Weh&kbW)Ro)&l7|TOF-^qJfU1v&2wX41<`WT=Z@CC+o#BZ+Wk(UTGGL7e zdR*IlYem?QfQV3=B7!zW1Z|24+Kf)@Db*r?mk7PtEo^v4gqKf5P(Bes`N|^tSxS_2 zo(N2r|o!$UNBFr=VWDzDH)FnQN&cBYivry!rh(;Hvr~i?N z9_;{4fj5>8EfJxE4k;1Mpd*#aYZ8%uitCr7ZMO$CTQ#TBwe=F=^gCTzL{@}aM%W+% zhl-&4OW$VgeZ-}R$0uz>sLnD7)Q(^W5wMAfu!w&SBB-Y{*++}0Tuhb|ky$d*M}+rZ z@-c4_BSfGnA|awzG%Cfli1bJ<7Ga0Ik4517L;$!$p;|%_VQpK9z_*H^4m`>iEi0pd zvPtd?g=#^k6pkX2mDA|o4yD6Ocq9Vt@}ylwM3>N0#Do>UoJ6SGDk%bBTw73tU4F!c z2*`hmu(O0(RNnO>(r26-$_*2tOCEdO5f>uzaWP+ncXzu*-wDw;BH&FTz#QF2gbs>D zbP-W?d!QYX-Z}qnj22NFt3n%{77;h1hy6*4umP8|L|`DonM_rRpc#hQ=cl_VVh!Cy z@@ zu{2)!WlHS)133|9z`!nOB7!(l1daBQVnS^TMK%ZNE5CH;2uzD8EG9bvcZKcIErL3S zK8wlTMwN&u%W5XnaaDhA33XyCm!e@e?e9~^Lq5gTWCw`=>*5`>%DCEnLW^Ihs_PUH zmz?m_5ClPJV9GmtQwQI7Vd~7(w0+oF(iD)#nz9^fqUuDnM$}=#M0`B}X@Jv3sKz?@ p)&NrpV-toAPH_$*LJ))(^9KY!6fDaqS@Qq@002ovPDHLkV1k(1VUqv= diff --git a/tests/images/bitmex ETH 5m defaults.png b/tests/images/bitmex ETH 5m defaults.png index 82a259db1b1134c7b6339a9b16a55a7e750aa249..768f8c5cae640fa7ad2fdf1c60c931fa8f40ef7e 100644 GIT binary patch delta 1630 zcmV-k2BG;R}#DwXP@@DpkQaXab-#47nu<(~~^ZT1xgZy<#}1%d_8{>nDHN(2FJ=x82CUN7D? z&>mv3r|c<=4>6AZ7zm_U1L*JDW5flU*GoZ=6a+~@kQ4+-L6CnG1W7@V6a+~@kQ4+- zL68&#X%>j%hBPlpL6D|^z_me;V+NC&e+dKz;SYmw0mKK~`L6&WxUs(k!tZGOem#eK z_B9p;;SSO95N*cf`2%tM!&rw$>dwD^j941PRhym+6$B-wApR3W1z{311CWBC$yh;n z5XZ|wT*Ts+X9|CUWP8W41dWLxetJ8Iu;^VC*#^XKAs!XItBvdm;%H2RUC%@NfS_B| z_PQttpjD-U5FNvtf;h^Fz66AQI=}42z6HbrEV|wKDTx0F6LSWH87HQ%w!7W=c@P+b zNa|byF}sHdURnf{qHW+75c7u$US@Y(a_5I2&^VlawP1feqy!?>QXu$YPm3T*F$iPw zN)T>%=o=#jfq->DG}~+iLg){T=J$el9EE}~!nHscDG1VjATS2;dvk!Y+5-e1`5B1d z4H`f^OyX7$coKxY_i8E7DBS?U$bo>rw1M!Y$GbqZYZwTcE?DWn-2)U_1lZl0s;ds(00Id_P`aZT z1iF`;&1*rhyO~PYFpVMTSF$@F_66Y%>6^)#S_FUALDOu^{X>#ky{24>4F? zAYgwmEhpu)^LEsoYak>SWK`;>KpbHO>>&%V1N7er$ZUOa5g;jx;9``XO39Y`(H0R@ z(YA;P1QH-0=^K&(hY|-F1i*42f))|9gP_0I2o}k%vAs(wNw{fXmqKfR@ZI0H2-hE| zF}N4HmbHj@jIhl}8YIB(0YD6*;mMNB{X~CTC0lInoF@`p1<{w=h9FQu7%2$S!yu4J zyr^(q@OlY$e#7(>h)%H!{CJN!n@J#kB@jV`EZF3H8bmO$tqB6+4=7oMj{v~~$ue&~ z2xtT0ZpcP}z%-reV3~sJMIAy-G^N68typ$+*wdgc@2nu zDF`v`n$2Vo!g;>@o(IB5*B4DTjw`mS4VH-%ggYPIkbM?}Dc$}c=#i(a*mBdnJq03J ze5ZpPuVBq4PAkn?L6CYuoc|}F#X)~mN~j>x^QZblM>dg7**sgBD^d`RQV=%N;O%NM ztu~(kf!r~Zv$>ev4H^pqgQyRK-~s+5Lu}&@53|$cUZ#B!#%&-lX%jLC`UzfUXiy{N zJl#v|YLzbB6ofmZmt2eRvKU;~*aU=|FpBQ{6*ay^+?~};QV=8sK~fMT1wnsO5F`aL zRtkcoAV>;=q##HNf}|iw3WB5{ND6|aAV}%H1|&8A5{S@s`C$+~K!5M?Sq@TVU!(Bc z!e&bLHU1A!ve{e7E*2Jdy7pDFuK{n{*BB&SN01Z*NkNbl1gQzcCp4VfekM~hU&&-@ z<|~;@&3q-3shO{2qEe|;O)`HDT@(V$1YIoVP1uvHd6R}ziY7MR7x(1l>}1(N(=kx7tVWDiLHZZ5)U|1dEJfm$gY9zg$I)IRmOW`!pDhB4ZvEKO#Hjhe;CY+ cjY`#|KPO}p=v@j;k^lez07*qoM6N<$g2Kks)&Kwi delta 1519 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 FV1fg3gxmlC From 3c522e65f4b0a0507d0212cfc66d5f5e6b50d6d2 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 26 Mar 2022 19:48:17 -0400 Subject: [PATCH 16/66] add missing base style --- src/drawing/mpf_plotted_chart.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/drawing/mpf_plotted_chart.py b/src/drawing/mpf_plotted_chart.py index 8f8068ff..2a39e5a0 100644 --- a/src/drawing/mpf_plotted_chart.py +++ b/src/drawing/mpf_plotted_chart.py @@ -63,8 +63,9 @@ def __init__(self, config, display, files, chart_data): # ๐Ÿ“‘ styles overide each other left to right? def get_default_styles(self, config, display, files): + yield files.base_style + small_display = self.is_small_display(display) - if small_display: yield files.small_screen_style yield files.default_style From 260cf9e6eb6ee163893561c26a1e5d962b2755b0 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 26 Mar 2022 19:59:11 -0400 Subject: [PATCH 17/66] volume toggle --- src/drawing/mpf_plotted_chart.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/drawing/mpf_plotted_chart.py b/src/drawing/mpf_plotted_chart.py index 2a39e5a0..3d4caf7e 100644 --- a/src/drawing/mpf_plotted_chart.py +++ b/src/drawing/mpf_plotted_chart.py @@ -44,7 +44,7 @@ def __init__(self, config, display, files, chart_data): returnfig=True, type='candle', # mav=(10, 20), - # volume=True, + volume=config.show_volume(), style=mpf_style, tight_layout=True, figsize=tuple(dim/100 for dim in display.size()), @@ -64,7 +64,7 @@ def __init__(self, config, display, files, chart_data): # ๐Ÿ“‘ styles overide each other left to right? def get_default_styles(self, config, display, files): yield files.base_style - + small_display = self.is_small_display(display) if small_display: yield files.small_screen_style From 0865310791209909788f95b77a2a04c4226c3b09 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 26 Mar 2022 23:51:56 +0000 Subject: [PATCH 18/66] chore: autopublish 2022-03-26T23:51:56Z --- tests/images/BTC EXPANDED.png | Bin 2224 -> 2219 bytes tests/images/BTC HOLDINGS.png | Bin 2479 -> 2384 bytes tests/images/BTC OVERLAY2.png | Bin 2498 -> 2393 bytes tests/images/BTC VOLUME EXPANDED.png | Bin 2224 -> 2219 bytes tests/images/BTC VOLUME OVERLAY2.png | Bin 2498 -> 2393 bytes tests/images/BTC VOLUME.png | Bin 2427 -> 2323 bytes tests/images/bitmex BTC 1d defaults.png | Bin 2427 -> 2323 bytes tests/images/bitmex BTC 5m defaults.png | Bin 2411 -> 2363 bytes tests/images/bitmex ETH 1d defaults.png | Bin 2490 -> 2458 bytes tests/images/bitmex ETH 5m defaults.png | Bin 2422 -> 2352 bytes tests/images/cryptocom CRO 1d defaults.png | Bin 2562 -> 2392 bytes 11 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/images/BTC EXPANDED.png b/tests/images/BTC EXPANDED.png index e50f8b8ca3e19ca9c15044bb40a5f6ce14f4dda2..11d3e2faf2240a38f158ace53611422ab9e87a79 100644 GIT binary patch delta 1425 zcmV;C1#bGV5vvifEdzgPNklT!v%Hjshr1CW z(gK)95hD7-o&jrm&qK=Fa?!sVm&G8x7oScj{>#_MFZKj@VBQcyFc=;t6MdfX8Sf4f zWd}LViJaHq+#Dj02>by5fsj`~lrtp<_6R`l=3>|o=jz6dpe%p7%Z2Nib&xO(FXVBk zcUQU#{VnXqwy4wp|s}%@&n2*H* zt*(hNw-HCjjti5Ez5_niz!efscZ)M|!IW#L!ad-{>nM+Oeb3(9kjvBm=PuwLsu= zAdmtQcWy@b3J|XT8-W?Z_&kUwzmU^nd!a6f2djU-zP*qh!M_0n-r8QsAYgV7xhBg@ zT#RVTFc7LB9#|#*`r1$v}{JmF~8*6obf7=>Vd^KFcErC;^cUhw*#!Nq_)9 z<|OaF@Ffs%NQTBa5J7=yK^#(dK3o6mr7TZw~LThL}VnR0wsRR;nB5DO5Jj$Ed>5 zB2|k^B+skVWIw#dQUsMF>YrUQ}s z8OMUv@%v1=Ha?O`*TzROVOx$_j?_Q%2yK(DjgMr~wegWmx;8$NiOFO#nM@{=$z(E_ fOeT}bq^2L0@(sqH2Y^!m000R9NkvXXu0mjfk57#} delta 1430 zcmV;H1!?-L5wH=kEdzgUNkliMpd83`U9X|Ijm60wjP{kR?d|nXgqE7Ef6t z_8Oy-A^`9&Ho*KH+c3beGZg%%aa>@>Hu`b`@}HhVII#!D1M`N4g8}}snDG0Iuh>?Q zD42z~O5|z{tj!^+5v(4-FA%f^L?KIZ2sOfhujZuNAlK^p4HkbFTyqKOtlCMaR4Ubt z0Cg8u6Xz}+Q4$LxOjfF**W@P?grB@92pBd^%N6pj;Pi8Me3woo48VC@|9(a`2)_jE z-!|3&F`&B?4}vd)`w57Cg~f5=o^0R}8R3p53UcSLLtg475>ESjmLMp)O( zLPKzgib0IDjp}Q}2U^A(5PsCC zj4n%WKzvFH0=0fG*GLND)S)1(6a;E-5D?zB20_=G3gTd^tvy9SY%K-xr(=5%c-1XI z(9LA)C<1?B8WdmR_QD?m_SO^xgbfu7us9pS;l93>AY6S|#8uZ5#JKH+4HQ6-Ub1P8 zSj1=955%&4gd<=EY}OPg2ZG&)*&D zG5&#^(B!F~_=q3vPe$CHAg0W%vmlHGL7x)(JP4BoVT^ygJrt@2MAh|32f_3U1b^o2 z`R{*cM2~1q(ItqhZ|4b!;{}M~D`=z?gn11D??|i#;w*=03BuHYz=DVaaoJw6>Zc`k z6B7pF84Hs2Y)3>EM7C5%=tHTZ^Z9o|B(1w52KscAo`$`dhUTZ}Vwmv|My<`jotO>$) z6fgH#rXb7{5P2_9_-u^mA6so$BUoVGSQrRHM~(M=L~^teh-S)OOfiVaAE+Q^xN94! z1_XDRgNZ;)UvpNe$ax$5Rb)%S<{%88lan^nvUCGg3c_tAW@r0>Fbo9uURjf6L6m=r zgFp|E12N}L#vEOP_~9b{qOu_D2U~+M6omAhgiUn^VjD>Vk-Nn|L@5ZO2^_}$k!T_U zLWBZ{(S_=}*QihpU3JA02Lgi2Zm1-Iur;BL&vJEzQDb)!DwRs5QWYt)0Su!1OzEr> zz;N$LjR_giPR~V#@&DR5uAAZ&i%)d*w4Dm0-%FM*Wn3IsK|0KtDu(ws7V z#GOeC5Y7)_zb0Qd@}ov*-FU)mawc$N0%=YmmSde*#3q?Us#yFy%~=mIc~F*iCTQr_ z;SZjS_$-KIH<_gJjja*b)}7B%Qu!u;*uF-%5hEVZ24pVDWNPM;Or~Zo$wZ}6sZ=VJ kN~Kb%R4SE9r5dJx3BL^r&TJ04FaQ7m07*qoM6N<$f(12*d;kCd diff --git a/tests/images/BTC HOLDINGS.png b/tests/images/BTC HOLDINGS.png index dcf82b21d08e3f37ac93e204409d42dab87f7310..02e89e19f6087cbc7de371a84f86d292a175f8a2 100644 GIT binary patch delta 1591 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 diff --git a/tests/images/BTC OVERLAY2.png b/tests/images/BTC OVERLAY2.png index a064944d2ad0158ba7137f28805497f97d97772c..c28911977d0c2e7b24f10e3ba61f3b6549c88540 100644 GIT binary patch delta 1600 zcmV-G2EX~j6WJ25EdzfSNkl=cpDI6 zYyi&i>!$+cldhq%FEf%w~Ypf0_M3g;a`K0PVoNKbXUkAnYE1?varlb$2k2sD4A78}p4+f@B*5p?Tj z7GDK{pg~ZZm^xUZzJ2~U)^bk5&yT^925aOS`j#3Fp0n#E^0)jLRgg>Cgj``>K`zb%M{aOhKl7Juy2-5Vy(!QwJ_qFE; z2mw*&r&I!hwA_E9D>k6E_^H*oATsk-Dv7PW2?FiSZTL|T)FR-8m}QBc_H)Ga|;6M=gc@Td}?+OUo6%f~635d(Uxwjkw z;_uS`rfTS2Udo&{=jB-v2tBvXHwa`9D~9UYWq~Nkb2p7)&6s7oJP-x;z@6y0t^xNL z(fHbffFKe@hrZWd23{2_EcGzdrx4h`B61Xh434a;l<0RU;+T227x|^UfK_Y)doHaqW*u8Ud^m?GZ6JBm8t`XN$=1OKJDRE zP{z)92?$fr*b@Z=>B&{#ED*&{Y2s&xry}yxKz-=JRp7=TwAU_y83H;UM9T{~o`Zb?0|NF05s`ZpC82RJF{0bU${<>k$<_tYeri*C zVHtl2yhn!hL9{QrFgOx3(JR4IL7)x?rcGcz2%HWA4G3x&^x=Wau9S{)RNYsdb$DjGTk$t2_k`UhmE-7<|70LL?G>RsR63^AWdQ3ox(%0000c{r-6n;G=XgpjYamN1UC)L%+WE?yg%9Gh&wbgvD(nPo8RZ z-y_uPlNbt`r$x4i8Z_nguS;`5DW#APP(4L+CXv; zE*SA%5PyTEi%8O=k)@^e!cbiSh%{7}*lesY91CG;^61Bp5J1g_)wQd*xO5(bnH8$* zuN(;fFHL`Z?-*f3AaWjhRBOBx1d1Q*6hx4oKNeZGtZ>$C$LB#{bxT2n`#UTzyjKLml;0z` z(9NbGfP9ESq+_MK>E1LR@jDR?`+HV^aQ(qYsJ4F!)ja}XTgQ+9E^!BW5Wy(<3`Ei+ zeCh^j2I4(qge73^m*!=c(xF9KmU1(EcK*amDkFcM8jZf-UM@k_gmS%L>aLxK^AxKnio0qF}l zC3(+JiEW(A28i89^lE={3GNA^?%vw)gJplVD3|B=K|z=kMEI7_>p>V6gfZ^*_Dok3 zf_Qr8*5X-Q;iO9rg6IlFF#2K`TBe`|6F{8Gg2??k5)elP2w@i9jddoljT2H3rWyo3 zk=P3aCN>0No`JxM)PexvI3os;JzwpOM{>;Gm=F*$7D3TdL6{5(*81>c2vZHTaUXxh zAZpYC1iy%rwe}zml308q1?8*-LZ}0K3~A*OApCGCu&ggE0Rd)d5Z#s+rXbFnhZR7e zJL>!V-Uo!Smm0jvE)2rPWU|xn#|q}{i-F)4rJwx)dMqX*AYcy=BvjXGon;EbNI>x6 zFn_Fp+-%uSloe z^6UUi1foT?(AR7bSz{NkvKJTA6NGX8TiD#_DF{RF$%AvIzD`t&g0M@8$+z!;Fa!jR zUSXAX1yL#r0wX{cgfNU!rtLsngovxO6NvM`r$LwyM5||8RGWfmF9l(UfB%22Pt3AZ zDTqK_>chk=SNLxn0}z9h#4Oz=XER29*BUXR4Nf9dtwMFhnhpYJ%rdbVrI{dp(|_m_ zvs_=ftH$gxVz?H)j~Finfl?4C1%Xl!CiQ@X;@4 z0yid*mgI9;)`>-I0?s1uKnY4~V=`3&s@sG32eEPx@w5~Jm;e9(07*qoM6N<$g5;G6 AG5`Po diff --git a/tests/images/BTC VOLUME EXPANDED.png b/tests/images/BTC VOLUME EXPANDED.png index e50f8b8ca3e19ca9c15044bb40a5f6ce14f4dda2..11d3e2faf2240a38f158ace53611422ab9e87a79 100644 GIT binary patch delta 1425 zcmV;C1#bGV5vvifEdzgPNklT!v%Hjshr1CW z(gK)95hD7-o&jrm&qK=Fa?!sVm&G8x7oScj{>#_MFZKj@VBQcyFc=;t6MdfX8Sf4f zWd}LViJaHq+#Dj02>by5fsj`~lrtp<_6R`l=3>|o=jz6dpe%p7%Z2Nib&xO(FXVBk zcUQU#{VnXqwy4wp|s}%@&n2*H* zt*(hNw-HCjjti5Ez5_niz!efscZ)M|!IW#L!ad-{>nM+Oeb3(9kjvBm=PuwLsu= zAdmtQcWy@b3J|XT8-W?Z_&kUwzmU^nd!a6f2djU-zP*qh!M_0n-r8QsAYgV7xhBg@ zT#RVTFc7LB9#|#*`r1$v}{JmF~8*6obf7=>Vd^KFcErC;^cUhw*#!Nq_)9 z<|OaF@Ffs%NQTBa5J7=yK^#(dK3o6mr7TZw~LThL}VnR0wsRR;nB5DO5Jj$Ed>5 zB2|k^B+skVWIw#dQUsMF>YrUQ}s z8OMUv@%v1=Ha?O`*TzROVOx$_j?_Q%2yK(DjgMr~wegWmx;8$NiOFO#nM@{=$z(E_ fOeT}bq^2L0@(sqH2Y^!m000R9NkvXXu0mjfk57#} delta 1430 zcmV;H1!?-L5wH=kEdzgUNkliMpd83`U9X|Ijm60wjP{kR?d|nXgqE7Ef6t z_8Oy-A^`9&Ho*KH+c3beGZg%%aa>@>Hu`b`@}HhVII#!D1M`N4g8}}snDG0Iuh>?Q zD42z~O5|z{tj!^+5v(4-FA%f^L?KIZ2sOfhujZuNAlK^p4HkbFTyqKOtlCMaR4Ubt z0Cg8u6Xz}+Q4$LxOjfF**W@P?grB@92pBd^%N6pj;Pi8Me3woo48VC@|9(a`2)_jE z-!|3&F`&B?4}vd)`w57Cg~f5=o^0R}8R3p53UcSLLtg475>ESjmLMp)O( zLPKzgib0IDjp}Q}2U^A(5PsCC zj4n%WKzvFH0=0fG*GLND)S)1(6a;E-5D?zB20_=G3gTd^tvy9SY%K-xr(=5%c-1XI z(9LA)C<1?B8WdmR_QD?m_SO^xgbfu7us9pS;l93>AY6S|#8uZ5#JKH+4HQ6-Ub1P8 zSj1=955%&4gd<=EY}OPg2ZG&)*&D zG5&#^(B!F~_=q3vPe$CHAg0W%vmlHGL7x)(JP4BoVT^ygJrt@2MAh|32f_3U1b^o2 z`R{*cM2~1q(ItqhZ|4b!;{}M~D`=z?gn11D??|i#;w*=03BuHYz=DVaaoJw6>Zc`k z6B7pF84Hs2Y)3>EM7C5%=tHTZ^Z9o|B(1w52KscAo`$`dhUTZ}Vwmv|My<`jotO>$) z6fgH#rXb7{5P2_9_-u^mA6so$BUoVGSQrRHM~(M=L~^teh-S)OOfiVaAE+Q^xN94! z1_XDRgNZ;)UvpNe$ax$5Rb)%S<{%88lan^nvUCGg3c_tAW@r0>Fbo9uURjf6L6m=r zgFp|E12N}L#vEOP_~9b{qOu_D2U~+M6omAhgiUn^VjD>Vk-Nn|L@5ZO2^_}$k!T_U zLWBZ{(S_=}*QihpU3JA02Lgi2Zm1-Iur;BL&vJEzQDb)!DwRs5QWYt)0Su!1OzEr> zz;N$LjR_giPR~V#@&DR5uAAZ&i%)d*w4Dm0-%FM*Wn3IsK|0KtDu(ws7V z#GOeC5Y7)_zb0Qd@}ov*-FU)mawc$N0%=YmmSde*#3q?Us#yFy%~=mIc~F*iCTQr_ z;SZjS_$-KIH<_gJjja*b)}7B%Qu!u;*uF-%5hEVZ24pVDWNPM;Or~Zo$wZ}6sZ=VJ kN~Kb%R4SE9r5dJx3BL^r&TJ04FaQ7m07*qoM6N<$f(12*d;kCd diff --git a/tests/images/BTC VOLUME OVERLAY2.png b/tests/images/BTC VOLUME OVERLAY2.png index a064944d2ad0158ba7137f28805497f97d97772c..c28911977d0c2e7b24f10e3ba61f3b6549c88540 100644 GIT binary patch delta 1600 zcmV-G2EX~j6WJ25EdzfSNkl=cpDI6 zYyi&i>!$+cldhq%FEf%w~Ypf0_M3g;a`K0PVoNKbXUkAnYE1?varlb$2k2sD4A78}p4+f@B*5p?Tj z7GDK{pg~ZZm^xUZzJ2~U)^bk5&yT^925aOS`j#3Fp0n#E^0)jLRgg>Cgj``>K`zb%M{aOhKl7Juy2-5Vy(!QwJ_qFE; z2mw*&r&I!hwA_E9D>k6E_^H*oATsk-Dv7PW2?FiSZTL|T)FR-8m}QBc_H)Ga|;6M=gc@Td}?+OUo6%f~635d(Uxwjkw z;_uS`rfTS2Udo&{=jB-v2tBvXHwa`9D~9UYWq~Nkb2p7)&6s7oJP-x;z@6y0t^xNL z(fHbffFKe@hrZWd23{2_EcGzdrx4h`B61Xh434a;l<0RU;+T227x|^UfK_Y)doHaqW*u8Ud^m?GZ6JBm8t`XN$=1OKJDRE zP{z)92?$fr*b@Z=>B&{#ED*&{Y2s&xry}yxKz-=JRp7=TwAU_y83H;UM9T{~o`Zb?0|NF05s`ZpC82RJF{0bU${<>k$<_tYeri*C zVHtl2yhn!hL9{QrFgOx3(JR4IL7)x?rcGcz2%HWA4G3x&^x=Wau9S{)RNYsdb$DjGTk$t2_k`UhmE-7<|70LL?G>RsR63^AWdQ3ox(%0000c{r-6n;G=XgpjYamN1UC)L%+WE?yg%9Gh&wbgvD(nPo8RZ z-y_uPlNbt`r$x4i8Z_nguS;`5DW#APP(4L+CXv; zE*SA%5PyTEi%8O=k)@^e!cbiSh%{7}*lesY91CG;^61Bp5J1g_)wQd*xO5(bnH8$* zuN(;fFHL`Z?-*f3AaWjhRBOBx1d1Q*6hx4oKNeZGtZ>$C$LB#{bxT2n`#UTzyjKLml;0z` z(9NbGfP9ESq+_MK>E1LR@jDR?`+HV^aQ(qYsJ4F!)ja}XTgQ+9E^!BW5Wy(<3`Ei+ zeCh^j2I4(qge73^m*!=c(xF9KmU1(EcK*amDkFcM8jZf-UM@k_gmS%L>aLxK^AxKnio0qF}l zC3(+JiEW(A28i89^lE={3GNA^?%vw)gJplVD3|B=K|z=kMEI7_>p>V6gfZ^*_Dok3 zf_Qr8*5X-Q;iO9rg6IlFF#2K`TBe`|6F{8Gg2??k5)elP2w@i9jddoljT2H3rWyo3 zk=P3aCN>0No`JxM)PexvI3os;JzwpOM{>;Gm=F*$7D3TdL6{5(*81>c2vZHTaUXxh zAZpYC1iy%rwe}zml308q1?8*-LZ}0K3~A*OApCGCu&ggE0Rd)d5Z#s+rXbFnhZR7e zJL>!V-Uo!Smm0jvE)2rPWU|xn#|q}{i-F)4rJwx)dMqX*AYcy=BvjXGon;EbNI>x6 zFn_Fp+-%uSloe z^6UUi1foT?(AR7bSz{NkvKJTA6NGX8TiD#_DF{RF$%AvIzD`t&g0M@8$+z!;Fa!jR zUSXAX1yL#r0wX{cgfNU!rtLsngovxO6NvM`r$LwyM5||8RGWfmF9l(UfB%22Pt3AZ zDTqK_>chk=SNLxn0}z9h#4Oz=XER29*BUXR4Nf9dtwMFhnhpYJ%rdbVrI{dp(|_m_ zvs_=ftH$gxVz?H)j~Finfl?4C1%Xl!CiQ@X;@4 z0yid*mgI9;)`>-I0?s1uKnY4~V=`3&s@sG32eEPx@w5~Jm;e9(07*qoM6N<$g5;G6 AG5`Po diff --git a/tests/images/BTC VOLUME.png b/tests/images/BTC VOLUME.png index 6f49210ff0b6ac2a0d946680e4814119c2609c13..c95398d978cc5cbe787d5335fcce78080aeecdf8 100644 GIT binary patch delta 1530 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 V6$RR5>f`_b002ovPDHLkV1n8zx=#QA delta 1619 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 LNkvXXu0mjf^?}dX delta 1698 zcmV;T23`4@6S@iI%G%42Bcm|Dk890m5no%2M;6d#ln2);VUEo@paS-NI{Sk1W7@V6a+~@kQ4+-L68&#NkNbl1W7@Vn3LzY;~afp z*5-GG!2w2zZv}zifTV1GRUrtXV3Nf{_3f3o@(6+JZvugC_l$psI8c6F&U<=b&{N~x zZA633_EHd}SA*aW1qEUDCH7yd$z&-Al7b*92$F&zDG1UH2n-Wn3Ih9p*nyrTBAN$X z+k?PP!|>k#fzGschH7^Zc(oDTBI18@)SNy~5b$acZ1Z&xhXX+g zF9g9F2d7m*@NXqKJS%QZ5O}$MwGm|y-Xd_uMo{3|Am9dsH9?jb*a!<;69fuD*aK#r zwh@%b9v7q~K=1+aJqX}Il(LbOxG@Oy_Zw!YHV47?+h%{LkfSwP1BBUy)U*Jy?fJj; z)uCkkYy_g1No9#n3WB5{NXvmp7)UayEYax>L|0D9%w7iq6$BN343cx?#+y`eTVfw-y#UmAT1Ks+ia&ZQFwHj&U{ zKEl&+t#l;Y#Eu}KQ$)Cl8QyYK%uq$z62y#%fCdn((*!9HAalTbYG7*{fnpH+mh1__ zE3*njqm8v33c|&}S|GBW`YZ^y?s8nKLeHL}D}#SXTiYc^)5)ZVsXL(-1ZxoY0l{9L zF@50gfuQfD*^LDO<3T*gs*BBKn0;X1gRpncBM?{y@g%FqHia|lKsXbq0Kvk40*Fjy zn?RVa_XiQJqBHp*unaQ@aQp#9daEAcEc-KVe}IB_(}U5T!)e1B92@3Llf0Qd;vPBkD9w*etnB?yYUvl6uCQF79V+msqh@0>&? zVd8=y@cSUZjxmci4^;~Srh+JpK5Mlj2rSJ|4bd%#oHItLb|hu%eV@+9KYs2@lW6X5 z1rWIzsxdlX1rUh%g*M`mVi1P~ag2YAh{*n_CygqCpen_UUB>D9#xmA)5bPxqyFT;= z5a5G|;^Vy_QY(fE0_@U^Rj$!|A_Zac=w#Db3W8JuarSf+gnU-)nG^(R4-mjW{0nIW za!?%g8|1!I8pPZgs*k3Du;=q##Iq;lpm`&qs_`=;R_3GvkH9?im*gj6R1e1Q88A;dLNfYXRYs>EJp|5vF!t zeQV(LHXXGQ(FqD%<4*u*9r=m zB-`&G7j|qv?@auI7TKSTWbdJRSyM?YPBI|;P)dRbqAl$u+FygqfwTwwLefZ$b!Gzi}$E-BGQ+?jNW2#PdX{IN%grv{p^20HL;(A>1l1aC|*F3Fu` sSVtD23EF%IN>ExKlc^dKP~9HH9~pTPi9ned)&Kwi07*qoM6N<$g6&N7%>V!Z diff --git a/tests/images/bitmex ETH 5m defaults.png b/tests/images/bitmex ETH 5m defaults.png index 768f8c5cae640fa7ad2fdf1c60c931fa8f40ef7e..4e3fe95eb43710e44a49f6ae5f20c3fda9c7b8a7 100644 GIT binary patch delta 1560 zcmV+z2Iu+q60j1mECYW9?ny*JRCt{2oC~6(APhwl_rK`(tN{`T;0F{XcV=1(5yBBE z1g8L|w+Ruqf3W^t6X?)ofJ@~c`1wBVXMi&MJwkfH=#YJ22SkH4-e-u?L=A}k4T<@H z@|Q6*(IrG6kN}0m(2=&*p~itFQTCXfM)nBN55)cA5_mhpIqZK*r)_k-B@|9JOP?m4 z6T7j!gXlYe93vPCc7Eta*+C-QP6({jp+NMPBZ!>YFK03kc^L?jfmpR{dfE*yWICE3 zr|xm=?^H&_}7l7S!@h)7x^ za%o(#-D?L+Cj);$G7zMxLBtK>>2ZF}CN3+fA-uV`s=5YfNnbU`D7 zVEY>A_5`juofD1?g6(U#!2Xsz6bQ9Etua?hWBVG|^VS#}L|z7hWFS`c*w-KsL(Nb2 zsI|lEK&lZjyoUbvJ+1`pC|85bV}?F$l215)6bF zO@01BEH4LfaSn%m{bC?ou?uyK*U(5oTyR~k3T~beT~rOkp+52%5bHv3F%Ss|3To|d zi-GXxM@0_@f`{{ekq$kae+7gK0tSr;0``UTiy#(JPFg<3c|(HO7tU`B0yYrCp@86M zE}Y*7#7KXWOdih1d^kS^@k>}Z4-{|wTn*BDX4|)b7;mUZbpwbI$IM7^IA4O;?xSBT z91r*?2q^Xl8cbpkn~4fSE&d}Q;I$wQh7|gPfQP0N27+WDHXYqMHV~v^ATS0ILRzJY z4TP)Y6Ci#jDG2daso1T(E(XaDsS^m_F;0PSYp;JEAac>8{vbdBvFrk&#D=enEr?`# z3lNL{#0=jAqUMhx4Fr{{gMhOjz(Z^*1|k&Q0tB1_u~aMW1cEJ*TZ4duAmDKjAVFXO z1P|wf_~n)Nf}nt70wRP^vgf(ei!n>6gP?K-0D*@=Q1W(`dvX3Ts{jJaAYc#>bSOa- zr?G!D@%Xj26wZfJAnJbK0|F}`#MAli?(+UgvyLF36$tcS7tFgoAgcaR`DZ~KsIMsq z;oV{&fUjoGfY8GEFe3=a_Xw31a8@npd*?yFjQc7>G(Q`vwU2 zRVSUmuw07WN>%jEK)B4aPVw@G0HMWVr8;;w3JCqFl$<^S0&*Z=P7p4Rf_^Hr4+M4w z5mpxuf?&HzImtjoJC9fe%?mG7dlE#t+G^%esAC2Y(bM_tyLK`VASd$d$M=6J4!q=QUXTUST?bjqLQv;FT zWoY6~@WeonCvO4K$(`WIcp%vHdmeufO1^=hd;_uNL$o0KDhT&@MIl@6hTa9D)7Mh5 zY6C%49|CdaIhaGkTsXd4t;ruy3uyB63 zNmfk;A`0hEd~0N7AV>ycm3%sXTo8At>ul|^3yc zRs3T+Gs`HD3h<>M=~*) zOs0MEk7q~6x(T}d0L{jgq85Jw{(lCzH@%{YiSr|>^SVL=6Qe+X&IA+_O4`h@U;&|w zOhsiAR}ru8blcN{(TBLpAbbos3nG~2TL3v&J50m{=>%d|kI2;?u8@4@JuL)0000< KMNUMnLSTYd8mu7z delta 1630 zcmV-k2BG<|67~|XECYWAG)Y83RCt{2oQZaXAPhwl|No;R}#DwXP@@DpkQaXab-#47nu<(~~^ZT1xgZy<#}1%d_8{>nDHN(2FJ=x82CUN7D? z&>mv3r|c<=4>6AZ7zm_U1L*JDW5flU*GoZ=6a+~@kQ4+-L6CnG1W7@V6a+~@kQ4+- zL68&#X%>j%hBPlpL6D|^z_me;V+NC&e+dKz;SYmw0mKK~`L6&WxUs(k!tZGOem#eK z_B9p;;SSO95N*cf`2%tM!&rw$>dwD^j941PRhym+6$B-wApR3W1z{311CWBC$yh;n z5XZ|wT*Ts+X9|CUWP8W41dWLxetJ8Iu;^VC*#^XKAs!XItBvdm;%H2RUC%@NfS_B| z_PQttpjD-U5FNvtf;h^Fz66AQI=}42z6HbrEV|wKDTx0F6LSWH87HQ%w!7W=c@P+b zNa|byF}sHdURnf{qHW+75c7u$US@Y(a_5I2&^VlawP1feqy!?>QXu$YPm3T*F$iPw zN)T>%=o=#jfq->DG}~+iLg){T=J$el9EE}~!nHscDG1VjATS2;dvk!Y+5-e1`5B1d z4H`f^OyX7$coKxY_i8E7DBS?U$bo>rw1M!Y$GbqZYZwTcE?DWn-2)U_1lZl0s;ds(00Id_P`aZT z1iF`;&1*rhyO~PYFpVMTSF$@F_66Y%>6^)#S_FUALDOu^{X>#ky{24>4F? zAYgwmEhpu)^LEsoYak>SWK`;>KpbHO>>&%V1N7er$ZUOa5g;jx;9``XO39Y`(H0R@ z(YA;P1QH-0=^K&(hY|-F1i*42f))|9gP_0I2o}k%vAs(wNw{fXmqKfR@ZI0H2-hE| zF}N4HmbHj@jIhl}8YIB(0YD6*;mMNB{X~CTC0lInoF@`p1<{w=h9FQu7%2$S!yu4J zyr^(q@OlY$e#7(>h)%H!{CJN!n@J#kB@jV`EZF3H8bmO$tqB6+4=7oMj{v~~$ue&~ z2xtT0ZpcP}z%-reV3~sJMIAy-G^N68typ$+*wdgc@2nu zDF`v`n$2Vo!g;>@o(IB5*B4DTjw`mS4VH-%ggYPIkbM?}Dc$}c=#i(a*mBdnJq03J ze5ZpPuVBq4PAkn?L6CYuoc|}F#X)~mN~j>x^QZblM>dg7**sgBD^d`RQV=%N;O%NM ztu~(kf!r~Zv$>ev4H^pqgQyRK-~s+5Lu}&@53|$cUZ#B!#%&-lX%jLC`UzfUXiy{N zJl#v|YLzbB6ofmZmt2eRvKU;~*aU=|FpBQ{6*ay^+?~};QV=8sK~fMT1wnsO5F`aL zRtkcoAV>;=q##HNf}|iw3WB5{ND6|aAV}%H1|&8A5{S@s`C$+~K!5M?Sq@TVU!(Bc z!e&bLHU1A!ve{e7E*2Jdy7pDFuK{n{*BB&SN01Z*NkNbl1gQzcCp4VfekM~hU&&-@ z<|~;@&3q-3shO{2qEe|;O)`HDT@(V$1YIoVP1uvHd6R}ziY7MR7x(1l>}1(N(=kx7tVWDiLHZZ5)U|1dEJfm$gY9zg$I)IRmOW`!pDhB4ZvEKO#Hjhe;CY+ cjY`#|KPO}p=v@j;k^lez07*qoM6N<$g29E<{r~^~ diff --git a/tests/images/cryptocom CRO 1d defaults.png b/tests/images/cryptocom CRO 1d defaults.png index 0c0726edb48883d2e3575450b8651b876d50041d..1ef2b10b41c567bdd9da06b7a54a4fa83a3a919d 100644 GIT binary patch delta 1599 zcmV-F2Eh4(6xb55EdzfRNkl0lVuE42F~b{~vwMCJ3U{Hk38r-LunaD!ju; zZ5P0_oDlyX=nh=M|G)1;I)lL?y&mb%UEv;U34zM(3y<+NKVqgB>q$v08=kO~auBgb zh$0C7h6g76<(eE^HDYsSjUv>#4kBp?{&joD*p%v^BaCB0tY3fV0ofQ4#txnV>onnt zCKhvncu)p{WFSZef;1fnBpszocC~BsjQmi_livpd_*^AgzYqknIS7WS$@@Ui#B*v8 zc|~jICA*_*vrNLI?Y$r>G7uyK@zLgVp~!vI3c?@r!SR(X!XFz5Fc1dfD9u0^h&0VW z{33{t_yFi%*N%Vl3QK9Nx(VXrRF|cJ2sw5If$^SzYJ}=PGvz6I{}zEgB2@YyddmkR zlmj!%fk1ki8w4$d!&8TqvFi(AjF=S!{Y#z($v_0(x6}g!>l&j#+>cN#H&|9RRf~91 z27+WDNQ;5Ew4Q2`fgl+O(ijkGtbPE5P8AG<_otGJr1yV;NLHUw3xc5N;N=XTj8KgM z(dYtQ0bQ1(fAmRt+T@b7z zh#(-;xgCUlgen7py+M>~*h?VvBUFbVFb4tmKooys@tIQ~_(m#)ctit;vNV@K)TRZy zAa*ikEn*!IRM{gCEae!4a)hc5f?{ctf{@i2MCtD|h@Ba834&6e1cAs8RY6o|%vBI) zbuU6S7KC(K4aDWEzA_Lb13?l&uqEkD5HvCMgQa95gSe(HAV3oY7>FhiT3P}G7>Kn& zfPsJL2SU^WAgUAo6Ckh;2=w6?od^|<0Kpb=ibD6~7U8!eR1F|RO#%WzD=^a;1oj0H zSj-N>FT8t#P>N6u00DaQ=LTIHcxmi)Im8f>I*5U~0RnD<*s1Ag5LY8q$%pVI5C^lR z#aaaAu!WAoGHV1;F}wI15O<^o0t|$Kpd5crgV+p21cAQ*B3rs`AWVLaLHPKM>|q%Y zX%_9Xz~2E;EacDKYcvqvcpVT2XqE>NM!2I0Rd*16Q`l22BKe{fk@o;27xUR zs?H#QZxeh91bey!0+T=lyI?U8ag4YJqMSROD)!SLWSs{A${^gsKuiImh)`i(BA|al z#Q?20W4WvkBKKbfvGoJ-{Srs+_Gu7&WxNTAa`EnffEhu=5JA!~hJ(QAK)Aw;0O5Lw zFNd_Nzq=$5DUZ$|Xs}E{jE?2QE{GCK6~sB0lY>AB1Uv*{yb=(!AWT8{Rbqb-TP(z?l}&(R&1OYrAQ=dffgl+O(k31@SpSHLWII#&48&-YX!{DC0HTI?F_TA~ z&t&qb^O;OcCX=Z_`ECT-zK?%JT7FTMmfMtD!b%G%7k^OmliO%*Jwu4M0h2GcVqy~t z6}R`Nx97ASoGBQ{5r x{RlQXAW|2%4VrA!%dM=2!S@{?OeWJ?^#`lZ6)4m!ijV*R002ovPDHLkV1m$zvaA3A delta 1770 zcmZ9MX;f1O0)>;1Krk$i#TqflBkbz{YAh7xy)*^^Q$m^`#FQmUKnSY>ib}#GOy3BC ziqjSl1XRE%%P>~T4iy0vOF)naxUk5uR5n3bWjg1~nbR}($M@r&d+yIqsf*}W*{Mic zJQy(d%=P#ADY-YTHJEyDwuiOrM(?=_@P-^JCsq}^a^qElso zpc)(pnEn}~%vsX5bN&lfz*eRrYN-YS0piBY4v&GAFHofk`%^|10_E@v6;g4< ziaxs8V8YLqOq4=PgSLP9^Hm+T&45&$2Z=A(M=1_~G&QUiRTM~KC?hCJfvwOA@TJg) z1a?9*VBP%uH?nXmpxQknlU=?|ct#e^12)WSYWZy(FepG4?g-@5++P~vLlS{&n<8L9 zJ_8!WIivR7j^_-~NN(S#L=DPN4{;{iNAvB~dfqvUBp7^}$1X~;CgUIICq@|)fvi8^ z&`=Yu#Ow$ryEz>!B7Ln4pQry7Cm?lidm*y%>T8Av&c3pCom>yubGZ;HO3nwZyxihk9+sNuMv@(N#yDEg|>YAj4>Ox%cevq%j&L#Ko@(g!{|BZ2t=v_P8xLl=>7E8i-B&bW&d-y>YqtR zzZQG?dx0%*mrC%H{}tMhz7akQlTr%GztgO?3ORrcmaEH@o$)8liKhYMH%Z_})`XJS zF8~@AX34+&?W^VXxOE}0BSKW0?M}8o{56%^(~W>ZT#3wjXBhQ|1RVyteo8bRn!o5h zX*qKLn6V*Jw@OIJBI_0z;Bd#sxc!s0SuwN1yDzz2MkB+j`<;vjJ5z&olBi>e{W2vz2v;*J7fD zot7kFpF66R-DlxT>XDs#U6P=w8mu1^Icq(Y0MOmRGaUcjGJa`P+yj?y@mRkAo-LkU zc7Kfa4pb^ti;{;Vg5zb)xS&lQ#)ifFrC9h3RKPL~BW!H7&9qvpcA7J~x1Cg1RA}z? zdAMrN^DdVg(+L0@)0($>2fWG)Z)Hk+e>UYqOH!!?3^w|SjzZ(9svs0o-cw}{ z3|#`-cq-YaT<4;oMm*L;9r@fbK2TikF0G1~# zB~T3;y;IqKL0_QFTT^(ysKWbSdD_sbe^s>uE-z(uOAGU3w;?r8Z{V<6qZoV_0UI3M zWVU^0*~H_;z}p-E)a&3bs6m2@XG43z2b;aM3;RpXHF-tP=%QcR467oa-y3a6_D(eO$6{ z*a>?6HZi5F%Z;OjjDv?O39&U4nc~{oJ)-a;1^*b9T>cL)J2;1?IN)PEz%QYJ>*vb86S?tYg=MDeg!T(kAEoAWqp!tgMv+?UH7)_b_2F@Q|C8^l<%Eb^0=`{_o_b z&wPB!=&tIz!iZnll#&cyDU<437AWG3yp!^3-A|a`Ou`q>%ad+9rPq)y>D^{^>BWcZ zcC0TbIxh&d$p%s|N@oYr;=s=sy04)axZ@FU)zSTWj>fc3-}8^91c!z_6$YKJ3?^B^ zRM)UH^@5**0ytfd?(HE(BCT_ms-+-%zCW8^+Y~C1M^2b4t>L@pa&uU E1{bRSPXGV_ From 0e263c4613365fe2040d536925e24c518a280d5f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 27 Mar 2022 00:03:29 +0000 Subject: [PATCH 19/66] chore: autopublish 2022-03-27T00:03:29Z --- tests/images/BTC VOLUME EXPANDED.png | Bin 2219 -> 2272 bytes tests/images/BTC VOLUME OVERLAY2.png | Bin 2393 -> 2472 bytes tests/images/BTC VOLUME.png | Bin 2323 -> 2411 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/images/BTC VOLUME EXPANDED.png b/tests/images/BTC VOLUME EXPANDED.png index 11d3e2faf2240a38f158ace53611422ab9e87a79..00190aa9d2d81d4e95cc53108020ba9201f487f4 100644 GIT binary patch delta 1478 zcmV;%1v&bw5#SN9Edzg^Nkl3znoH3`L3iUvzhs2}uxtB?!uUGskiefm{P3 zpc4YrLPQidb3pj)&tb%2-%yH2({st~&!<05Wd7QJlm27g2@zO~7(5vAn}><7XKL~6 zAW5(b5hoI_p=WbQJi_?_ZGo^gAPIRS2la?R(alY>VQiIl!<~OiQe8Bis*MDxC)Ud1 zF{0Rrjm<(^^WixJQy0h8+zL^hmWWt;VZWTSmrhp#2-XupOst}bJ`qH5!(#h?2DS%)B1gjSi%_*%Jl{`5QJ{1I=1i{Wwe(sa!2I8jlR6$<<=6o{Z4#b(75uKrQ z<2~^ox2Y}#an{9c8&Q-*4N(ANO~ z!hsn2cHu$To>c3S-7E${JUYua%)vou=ztvvdP2wPo_UMT>i{?5H{??Z#5@IieH!5T zAb4|S?vsC;@Ebr>d>66A+$X0|9|YBXDf7bICy$ig2%=hlfiBH`z6iu>o`<5$-COo0 zfVdSzbtQA3+5VdkA=}>#uK{86(}%p^tj~ea2cF6x&aDJ0lcl@X`eQ&)=3Z741jXmg zJ4JGZ6A+WE`v}=JN(VvwWK5f{I>^AN2N8lSfKh)ZJq|+KoO69pKCdGX-;fl9)0TOr za-9NU7s)ky?5qI7%*`EBH*3QvSP)?!L~hVb?n1$WIM|@Xs?i~cwI!`$9*?Fwrad{Aa3T7Gk z-5`Is5da8o1au1KAc!?8F98t_fgoDgnJMBEfi`jH@rM=eVx{X`JK59fDeWebmJxug?<`qfK5+6O`X2^EV45G;UT0R(>w zAXosw0tgmBumFMu5G;UT0R#&mSpOU_*7wm_k9e&I0R#&mSf>p0Bc$(Q0uZd6HLDg@ z0#WgQNIYJ~7lZgDyH!S??K?oE=YI(#AY3LCB_W@flys`TVJ<{JV>Wld=8t-L5b+H2 z*-^3~F3y}ukontdAk6D+@yj|91gC$l1t6o~K+Fc|vXgHB`HTW%j@DBGLdp?h20BwO zmfARibOGWAEDA#Mqy-563Icg$K$wy(K=4~rT z(Jcc)>1=_ZZ4kU7MXAZDYKFXYs2PwROF@W7lmel(f@lSV7`gz#dwP*Mn)rW)EsK=b zC6<6-LeY$9q6r~!q{1K^lxWu>5Fr6UvC=9MIjouZ#1zCb6JM%Di4=r~ejP-TpZ;V) zB-S_(*~7PhSX`@<1YDL^L2Mshf*^aWEQoV`l-M$FfuMpQXzQ2*vB+`@#PVX*08!B+ z%&CV!tPyw^2-*PQGs$IH6+}MkHliO83S<>Twp1g67{Mc?XrZh1#cki$fFKBhAP9mW g2!bF8f}kq;1HmR4GWF3U)&Kwi07*qoM6N<$g1ozq-T(jq delta 1425 zcmV;C1#bG_5vvifEdzgPNklT!v%Hjshr1CW z(gK)95hD7-o&jrm&qK=Fa?!sVm&G8x7oScj{>#_MFZKj@VBQcyFc=;t6MdfX8Sf4f zWd}LViJaHq+#Dj02>by5fsj`~lrtp<_6R`l=3>|o=jz6dpe%p7%Z2Nib&xO(FXVBk zcUQU#{VnXqwy4wp|s}%@&n2*H* zt*(hNw-HCjjti5Ez5_niz!efscZ)M|!IW#L!ad-{>nM+Oeb3(9kjvBm=PuwLsu= zAdmtQcWy@b3J|XT8-W?Z_&kUwzmU^nd!a6f2djU-zP*qh!M_0n-r8QsAYgV7xhBg@ zT#RVTFc7LB9#|#*`r1$v}{JmF~8*6obf7=>Vd^KFcErC;^cUhw*#!Nq_)9 z<|OaF@Ffs%NQTBa5J7=yK^#(dK3o6mr7TZw~LThL}VnR0wsRR;nB5DO5Jj$Ed>5 zB2|k^B+skVWIw#dQUsMF>YrUQ}s z8OMUv@%v1=Ha?O`*TzROVOx$_j?_Q%2yK(DjgMr~wegWmx;8$NiOFO#nM@{=$z(E_ fOeT}bq^2L0@(sqH2Y^!m000R9NkvXXu0mjfnvRWZ diff --git a/tests/images/BTC VOLUME OVERLAY2.png b/tests/images/BTC VOLUME OVERLAY2.png index c28911977d0c2e7b24f10e3ba61f3b6549c88540..f16105983308a8903ef709d3d920f85416996bc1 100644 GIT binary patch delta 1680 zcmV;B25p-{;B|=K%QNro>{`|;KYZwLs zWgt)n0@VdX+Mr3-(lF_H$&Ym2LIwh5AW+kSsHN1kv80)jzOM~qAPhvEALg<$-39`6 z>+Dl%P|x@glTd$|W&?qm5(I#OK${2j8d@oe_XXbu0)2lL1b21D^L!vc17fvc1!s~C zo?m{JaC+Ridc*1VJ|hTFfxyDhbMF)P2g0Gpc0sQHjQt|Q0mO052!$b3(Doqkj~%)z zg3vvMLEDH`nVZ!K7hJwVz&;EF zuzsRRXcMv%5Hm^-2mN{`!FUjFJ+>xz_IL zNJ`sOrd4CT!a-~{WKqP`fQW5Q-53heeOw48aN8V9fOb-&3rH9Cp)bwARvG>b-D3K5H)TZ zE#5A^T`>^rS=fS6f+)q_tZL{T^#I{iAOOncNH z?Zo>Y5XXK+5Ns^geBwQ1r>p2<4}>3emO+2Cdl1Im4WeiqreMCm^)pj%(Hz9ZA+}z1 zARO&c{4^!5gf-vP`bqEzE?FJF8HA%_v2Gx8g}t4?qU*w|tP+T28<>s&;Q`$Ho3|o} zc)jhb(((om;G;M9{^o50!X+RY_ZWp$OVUO>rE0hoL^}UyeHteQ z@pHSEMjq{~Al5z8GKhS8dEI4Aj1NG-fmxm}DW@cKUl4L~L=b6)E|!RkAWnZ_(SgAK z4nV||4FdsTZy%ze`iXqzEsgF55c&O#7qXnj>!U$n+H(+iRstcWg*bCzzD6PvL4+&B zup@|=uTvl}3&7hv~5Ktq2JyO3BmvMBdJ_6`%;xGZ zh;zS$1`noEsZE~C%m7{GiD4cj5ad=h0|CH6q{YEUPwtVN!o)_*L*gWj z=~fW2R%}Q%GOR*FC?uPmcr$aGq-vxF;0>8kILOfmHjO~=I4&Esa&oH_t?xHLm`tXR a>JOZfA92czT`T|q000O{MNUMnLSTZ!(g6Vg delta 1600 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 R8uI`E002ovPDHLkV1nYl#_0e6 delta 1530 zcmVRCt{2oQt-sAP9z`_kZZUb|K=W(M-(?|2eDOG=%nz zS`r1I8byf6i)#b?uV34cww+s%zxDS;XZ_lJI-&S4KcoF{tpEdKLvX>MyO>P$d-_Lw zH4tyJv&A$b(`s;T4ql6J+5!FoA$x$gr83c{YjsZDePfuz*7l6_KsBA&s3Kn3Am#cT>9l!74j zx}XXwnX0(_-mItm6vH?!747>(!-D{A5iA8k>IT9e&|=&Cef;%1Ke6?vQV=8sK~fN; z?t`T~sMz;U_fdZk3gVfcTqy|BaFedsfLh|`sn!LNxNfDA*lJG@C>NLErXZ+Azy~qQ z9KG%5uCw3YQG4JLmj#iU+j5H-F`VBIL?{J88VW>BJp$1yX8DDNY!O787kvW8&+Pkv zpnuMyrBFefIx0RsnzE&qg0RSP%qm58^PZ3W8P@ z#JQFO;xus1EsKEoKlJ}gHS`Ye&YTwOHAnf3WBsZ z2(*8;2XTLZf{^pgLqQzQB;(P}_*HsgZM_2_7c<8r4tUomMo%wH%hvks;4pN0VOo_y z$QChK*Ffiw0ReAj7p^7*fqR3%GX<>?h>1dVZ9%|{Eka&Wf`U*GOaNeO5a@%brTIXJ zHn1s(cenIXnhZocRdC+v8QR7LygUlZ*l8~XVGDn1D+NJ%a}?MM1l9(D6p*NsUWgNe zFkY(!W(a6|5G4=fq&?P4FYF7Vy3-ozg>(ykUJzI*z0iVyIYC6^9z{lRGDdWHP!K&q zv{ewZ%mabf$gmIyh_#5|xB?S16I>Mp@>37DCeR-Qb_anL1T_r$XVFn1*ePv1V7$xE0qrd zWn+3EThJ&VfI(mZ2s7v$9EQ%5_lQ;x6@hR)GzO8m%Ugvf%LX9mj>KFb=)CDBqohFG z-Fu_EQe_}O%njQsTD2I6+x~hB!rq<}Ao71$h-CXAK}2hH*sdd-9rnTmoU5}(AfOot zq`+l5W_kE^z`I%{K!{RGK(rCpEghH%K+tYcOPY(C%MFmzbkBGQ5Xe)Qbj&jU!g)pz zR6yN4OBV!!iSZ8%0z`|bmuG3u8WVvCq##K3KmhlUd=Ph~_XbfX&oTr7IUwTUF#CU9 zXVq;Hz@ty}>f zLB+bd2taU*bbb(zi@XJK^aF9m+vI;>Gzy68i*6t|6j3uC@l?M+bh@`?0DSxQLJtH4 zAlg^K1hBt-BsvA6i^Lc)O4k4<=>N$XLsX?}kpT#yoj`n2=5KxUNc4ChKwAV$L6C;5 z)E80^Bn3fI5F`abQV=8sK~fMT1wq;qgn32V3a@c|E6hzVTw9o*Ubwm%q!)iqsEJ?W z*jx&Nq#*t^(Q6!=D Date: Fri, 1 Apr 2022 23:23:39 +0100 Subject: [PATCH 20/66] fix tight layout issues --- hotdogs.ipynb | 250 ++++++++++++++++++++++++------ src/configuration/bitbot_files.py | 2 +- src/drawing/mpf_plotted_chart.py | 22 ++- src/exchanges/crypto_exchanges.py | 8 +- 4 files changed, 227 insertions(+), 55 deletions(-) diff --git a/hotdogs.ipynb b/hotdogs.ipynb index ba6a04de..5d249fb8 100644 --- a/hotdogs.ipynb +++ b/hotdogs.ipynb @@ -23,7 +23,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 1, "metadata": { "id": "TGhh4E4ctNiS" }, @@ -43,7 +43,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 2, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -51,19 +51,76 @@ "id": "gohAI0ditNiT", "outputId": "49b29a80-c7e0-42a4-b407-a02f62d744a5" }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting git+https://github.com/donbing/mplfinance.git\n", + " Cloning https://github.com/donbing/mplfinance.git to /tmp/pip-req-build-_ku6i39v\n", + " Running command git clone -q https://github.com/donbing/mplfinance.git /tmp/pip-req-build-_ku6i39v\n", + "Requirement already satisfied (use --upgrade to upgrade): mplfinance==0.12.8b10 from git+https://github.com/donbing/mplfinance.git in /home/chris/.local/lib/python3.8/site-packages\n", + "Requirement already satisfied: ccxt in /home/chris/.local/lib/python3.8/site-packages (1.66.90)\n", + "Requirement already satisfied: yfinance in /home/chris/.local/lib/python3.8/site-packages (0.1.69)\n", + "Requirement already satisfied: matplotlib in /home/chris/.local/lib/python3.8/site-packages (from mplfinance==0.12.8b10) (3.5.1)\n", + "Requirement already satisfied: pandas in /home/chris/.local/lib/python3.8/site-packages (from mplfinance==0.12.8b10) (1.3.5)\n", + "Requirement already satisfied: aiohttp>=3.8; python_version >= \"3.5.2\" in /home/chris/.local/lib/python3.8/site-packages (from ccxt) (3.8.1)\n", + "Requirement already satisfied: certifi>=2018.1.18 in /usr/lib/python3/dist-packages (from ccxt) (2019.11.28)\n", + "Requirement already satisfied: requests>=2.18.4 in /home/chris/.local/lib/python3.8/site-packages (from ccxt) (2.27.1)\n", + "Requirement already satisfied: yarl==1.7.2; python_version >= \"3.5.2\" in /home/chris/.local/lib/python3.8/site-packages (from ccxt) (1.7.2)\n", + "Requirement already satisfied: cryptography>=2.6.1 in /usr/lib/python3/dist-packages (from ccxt) (2.8)\n", + "Requirement already satisfied: aiodns>=1.1.1; python_version >= \"3.5.2\" in /home/chris/.local/lib/python3.8/site-packages (from ccxt) (2.0.0)\n", + "Requirement already satisfied: setuptools>=38.5.1 in /home/chris/.local/lib/python3.8/site-packages (from ccxt) (60.9.3)\n", + "Requirement already satisfied: numpy>=1.15 in /home/chris/.local/lib/python3.8/site-packages (from yfinance) (1.22.0)\n", + "Requirement already satisfied: lxml>=4.5.1 in /home/chris/.local/lib/python3.8/site-packages (from yfinance) (4.7.1)\n", + "Requirement already satisfied: multitasking>=0.0.7 in /home/chris/.local/lib/python3.8/site-packages (from yfinance) (0.0.10)\n", + "Requirement already satisfied: pillow>=6.2.0 in /home/chris/.local/lib/python3.8/site-packages (from matplotlib->mplfinance==0.12.8b10) (9.0.1)\n", + "Requirement already satisfied: packaging>=20.0 in /home/chris/.local/lib/python3.8/site-packages (from matplotlib->mplfinance==0.12.8b10) (21.3)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/lib/python3/dist-packages (from matplotlib->mplfinance==0.12.8b10) (0.10.0)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /usr/lib/python3/dist-packages (from matplotlib->mplfinance==0.12.8b10) (2.7.3)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /home/chris/.local/lib/python3.8/site-packages (from matplotlib->mplfinance==0.12.8b10) (4.28.5)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/lib/python3/dist-packages (from matplotlib->mplfinance==0.12.8b10) (1.0.1)\n", + "Requirement already satisfied: pyparsing>=2.2.1 in /usr/lib/python3/dist-packages (from matplotlib->mplfinance==0.12.8b10) (2.4.6)\n", + "Requirement already satisfied: pytz>=2017.3 in /home/chris/.local/lib/python3.8/site-packages (from pandas->mplfinance==0.12.8b10) (2021.3)\n", + "Requirement already satisfied: aiosignal>=1.1.2 in /home/chris/.local/lib/python3.8/site-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (1.2.0)\n", + "Requirement already satisfied: multidict<7.0,>=4.5 in /home/chris/.local/lib/python3.8/site-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (5.2.0)\n", + "Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /home/chris/.local/lib/python3.8/site-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (4.0.2)\n", + "Requirement already satisfied: charset-normalizer<3.0,>=2.0 in /home/chris/.local/lib/python3.8/site-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (2.0.10)\n", + "Requirement already satisfied: frozenlist>=1.1.1 in /home/chris/.local/lib/python3.8/site-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (1.2.0)\n", + "Requirement already satisfied: attrs>=17.3.0 in /usr/lib/python3/dist-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (19.3.0)\n", + "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/lib/python3/dist-packages (from requests>=2.18.4->ccxt) (1.25.8)\n", + "Requirement already satisfied: idna<4,>=2.5; python_version >= \"3\" in /usr/lib/python3/dist-packages (from requests>=2.18.4->ccxt) (2.8)\n", + "Requirement already satisfied: pycares>=3.0.0 in /home/chris/.local/lib/python3.8/site-packages (from aiodns>=1.1.1; python_version >= \"3.5.2\"->ccxt) (4.1.2)\n", + "Requirement already satisfied: cffi>=1.5.0 in /home/chris/.local/lib/python3.8/site-packages (from pycares>=3.0.0->aiodns>=1.1.1; python_version >= \"3.5.2\"->ccxt) (1.15.0)\n", + "Requirement already satisfied: pycparser in /home/chris/.local/lib/python3.8/site-packages (from cffi>=1.5.0->pycares>=3.0.0->aiodns>=1.1.1; python_version >= \"3.5.2\"->ccxt) (2.21)\n", + "Building wheels for collected packages: mplfinance\n", + " Building wheel for mplfinance (setup.py) ... \u001b[?25ldone\n", + "\u001b[?25h Created wheel for mplfinance: filename=mplfinance-0.12.8b10-py3-none-any.whl size=70315 sha256=66d07837a58a0cea5ed2470a7b9ec389c0f65dc3ef39279a61a5ce4b7806c86d\n", + " Stored in directory: /tmp/pip-ephem-wheel-cache-up87tvqv/wheels/7a/19/79/ca6b247407a3bdbf9008674616b262fd49f79b6324a5746057\n", + "Successfully built mplfinance\n" + ] + } + ], "source": [ - "%%capture output\n", + "#%%capture output\n", + "!{sys.executable} -m pip install ccxt yfinance git+https://github.com/donbing/mplfinance.git\n", "import pandas as pd\n", - "from src.bitbot import BitBot\n", "import sys\n", - "!{sys.executable} -m pip install ccxt yfinance git+https://github.com/donbing/mplfinance.git\n", "import ccxt\n", "import mplfinance as mpf\n", "from matplotlib.pyplot import imshow\n", "import yfinance\n", "import pathlib\n", - "import os\n", + "import os" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from src.bitbot import BitBot\n", "from src.configuration.bitbot_files import use_config_dir\n", "from src.configuration.bitbot_config import load_config_ini" ] @@ -77,14 +134,15 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "curdir = pathlib.Path(os.path.abspath('')).resolve()\n", "files = use_config_dir(curdir)\n", "config = load_config_ini(files)\n", - "config.set('display', 'output', 'disk')" + "config.set('display', 'output', 'disk')\n", + "config.set('display', 'resolution', '400,300')" ] }, { @@ -96,14 +154,22 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 5, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/chris/bitbot/src/drawing/mpf_plotted_chart.py:53: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.\n", + " self.fig.tight_layout()\n" + ] + }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -125,26 +191,85 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# fetch configured candle history\n", "from src.exchanges import crypto_exchanges\n", "exchange = crypto_exchanges.Exchange(config)\n", - "chart_data = exchange.fetch_history()" + "chart_data = exchange.fetch_history()\n", + "chart_data" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 7, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/chris/bitbot/src/drawing/mpf_plotted_chart.py:53: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.\n", + " self.fig.tight_layout()\n" + ] + }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAEsCAYAAADtt+XCAAAldUlEQVR4nO3de1SUZeIH8O/AyIDcJAZBAkzFuIrmlhSr4QpegKS0wnVJk6w8HlOxkymVP3XbE57Wto5KZa7XNkWyxTzeWjQQVDRvqKxXUJNKVHRhRIfJmOf3B/nKCHPhBQYGvp9z3nOYZ573eZ/3Ed8v710hhBAgIiJqIru27gAREdkmBggREcnCACEiIlkYIEREJAsDhIiIZGGAEBGRLFYLEIVCgc2bN1trcURE1MqUCoUCM2fOxCeffAIAKC8vx+zZs5GTk4Nbt24hKCgI7777Lp5//nmjjSxYsAALFy40KAsKCsKZM2darKN6vR6//PILXF1doVAoWqxdIiK6TwiBW7duwdfXF3Z2pvcxlBEREQYFEydORGVlJbZs2QK1Wo3169cjKSkJhw8fxmOPPWa0obCwMOzatet+w0pl89biAb/88gv8/f1btE0iImpcWVkZ/Pz8TNZRenh4GBTs378fn332GQYNGgQAeO+99/Dxxx/jyJEjJgNEqVTCx8fH4s7Nnz8fX3zxBb777js8GGKNcXV1BVC3Um5ubhYvh4iILKfRaODv7y9tc01psJsQFRWFjRs3IiEhAd26dUNWVhZqamowdOhQkw2dP38evr6+cHR0xFNPPYX09HQEBAQ0qCeEwIwZM7B161YUFBQgMDDQopW6d9jKzc2NAUJE1MosOVXQIECysrIwbtw4eHp6QqlUomvXrsjOzja5oY+MjMSaNWsQFBSEK1euYOHChRgyZAiKi4sNUuy3337DSy+9hGPHjmHv3r14+OGHjbap0+mg0+mkzxqNxuzKEBGR9TQIkHnz5qGyshK7du2CWq3G5s2bkZSUhIKCAvTr16/RRuLi4qSfIyIiEBkZiZ49eyIrKwuTJ0+Wvps1axZUKhUOHDgAtVptsmPp6ekNTswTEVH7oQAgFAoF7OzscPbsWQQGBqK4uBhhYWFSpdjYWAQGBuLzzz+3uOEnnngCsbGxSE9Pr1uQQoGUlBRs2LAB//znP5GcnGxy/sb2QPz9/VFVVcVDWERErUSj0cDd3d2iba3d448/juTkZBQVFeHOnTt1hQ9cumVvbw+9Xm9xB6qrq1FaWooePXoYlCcmJmL9+vV49dVXkZmZabINlUolne/geQ8iovbHztnZGZ6enggPD0dwcDACAwMxZcoU/PDDDygtLcVHH32EnJwcPPfcc9JMMTExWLZsmfT5rbfewp49e3Dp0iXs378fY8aMgb29PcaPH99ggWPGjMGXX36JlJQUbNq0yRrrSERErcDgHEiXLl2wfft2zJ07F6NHj0Z1dTUCAwOxdu1axMfHS/VKS0tRUVEhff7pp58wfvx43LhxA15eXhg8eDAOHDgALy+vRhf6wgsvQK/XY8KECbCzs8PYsWNbafWIiKi1KGzljYRNOS5HRETyNOkciJX6REREHQwDhIiIZGGAEBGRLAwQIiKShQFCRESyMECIiEgWBggREcnCACEiIlkYIEREJAsDhIiIZGGAEBGRLAwQIiKShQFCRESyMECIiEgWBggREcnCACEiIlkYIEREJAsDhIiIZGGAEBGRLAwQIiKShQFCRESyMECIiEgWBggREcnCACEiIlkYIEREJAsDhIiIZGGAEBGRLAwQIqLWlJHR1j1oNQwQIqLWxAAhIiIyxAAhIiJZGCBERCQLA4SIiGRhgBARkSwMECKijsLKV3wxQIiIOgoGCBER2QIGCBERycIAISIiWawSIJcuXYJCoUBRUZE1FkdE1OIyOvAjSeRqcoAsWrQICoUCqampUll5eTkmTJgAHx8fODs7Y+DAgfjmm29asp9ERG2KAdJQkwLk0KFDWL58OSIiIgzKJ06ciLNnz2LLli04efIkxo4di6SkJBw7dqxFO0tERO2HxQFSXV2N5ORkrFixAh4eHgbf7d+/H9OnT8egQYPQu3dvvPfee+jWrRuOHDnSaFu1tbV45ZVXEBwcjMuXLzdvDYiIOhob2duxOECmTZuGhIQExMbGNvguKioKGzduxM2bN6HX65GZmYmamhoMHTq0QV2dTocXX3wRRUVFKCgoQEBAQLNWgIiow7GRAFFaUikzMxNHjx7FoUOHGv0+KysL48aNg6enJ5RKJbp27Yrs7GwEBgYa1KuurkZCQgJ0Oh1yc3Ph7u5udJk6nQ46nU76rNFoLOkqERFZidk9kLKyMsycORNfffUVHB0dG60zb948VFZWYteuXTh8+DDefPNNJCUl4eTJkwb1xo8fj9u3b+M///mPyfAAgPT0dLi7u0uTv79/E1aLiIhanTAjOztbABD29vbSBEAoFAphb28vSkpKBABRXFxsMF9MTIyYMmWKEEKIixcvCgDi9ddfF127dhW7d+82t1hRU1MjqqqqpKmsrEwAEFVVVWbnJSJqaSEhIXJntM48zZmvnqqqKou3tWYPYcXExDTYk0hJSUFwcDDmzJmDO3fuAADs7Ax3Zuzt7aHX6w3Kpk6divDwcCQmJmLbtm2Ijo42ulyVSgWVSmVBBBIRUVswGyCurq4IDw83KHN2doanpyfCw8Nx9+5dBAYGYsqUKVi8eDE8PT2xefNm5OTkYOvWrQ3amz59Ompra/HMM89gx44dGDx4cMutDRERWY1FJ9FN6dKlC7Zv3465c+di9OjRqK6uRmBgINauXYv4+PhG50lNTYVer0d8fDx27tyJqKio5naDiKjFhYSEoKKiAgCg1Wrh5eUFAFCr1Th9+rSpGYHf54NWC/w+H9RqwNR8NkYhhBBt3QlLaDQauLu7o6qqCm5ubm3dHSLqBLy8vKQAqU+tVuP69eumZrwfIIYzAqbmuyc0FDh1qgk9beZ89TRlW9vsPRAiInqAWn3/Z60WcHJqWP6gjIz793/89FNdGADAtGl1U2Pq7+ncW5YV93YYIERELa3+htvSvYL6QWHpPBUVDfd0bt+2vJ/NxMe5ExGRLAwQIiKShQFCRO2DjTz/ie5jgBBR+8AAsTkMECIikoUBQkREsjBAiIhIFgYIERHJwgAhIiJZGCBERCQLA4SIiGRhgBARkSwMECKi9sbY03fbGQYIEVF7wwAhIqKOjAFCRESyMECIyKgMPuCQTGCAEJFRDBAyhQFCRESyMECIiEgWZVt3gIjal5CQEFRUVAAAtFotvLy8AABqtRqnT582NhPw+zwG1GrA2Dxk8xggRGSgoqJCChAAuH37tiUzNR4g1KHxEBYREcnCACEiIlkYIERErclGHksiBwOEiKg1MUCIiIgMMUCIqNPhHfYtgwFCRJ0OA6RlMECsgL+sRNQRMUCsgAFCRB0RA4SIiGRhgBARkSx8FhYRdQpyHhKpVquln7VaLZycnBqUd2YMECLqFOQ8JLJ+sISGhuLUqVOt0jdbxQAhouar/xe5Vgv8/pc6zP2lXv8x8Fot8PteAR8DbxsYIETUfPU39qGhgKV/qT/4GHhLHh1P7YZVTqJfunQJCoUCRUVF1lgcERFZgZ1CoUBqaiqA+xv6xqavv/7aaCOTJk1qUH/UqFFWWgUiotY3rQM/FFEuu4iICOmDv78/rly5YjAtXLgQLi4uiIuLM9nQqFGjDObbsGFDa/ediDo5a96kywBpyM7Dw0P6YG9vDx8fH4MpOzsbSUlJcHFxMdmQSqUymK9+uw+qra3FK6+8guDgYFy+fLnFVoaIOhc+5aFtmTwHcuTIERQVFWHy5MlmG8rLy0P37t0RFBSEqVOn4saNG43W0+l0ePHFF1FUVISCggIEBATI6zkREbUpk1dhrVy5EiEhIYiKijLZyKhRozB27Fj06tULpaWleOeddxAXF4fCwkLY29tL9aqrq5GQkACdTofc3Fy4u7sbbVOn00Gn00mfNRqNpetERERWYDRAtFot1q9fj3nz5plt5M9//rP0c79+/RAREYE+ffogLy8PMTEx0nfjx4+Hn58fvv/+e+mOTmPS09OxcOFCS9aBiIjagN2ePXuwZMkSKJVK1NbWSl9s2rQJd+7cwcSJE5vcaO/evaFWq1FSUmJQHh8fjxMnTqCwsNBsG2lpaaiqqpKmsrKyJveDiKhDU6sNJ2dnw8+tTPn4448jODgYc+bMMTjctHLlSiQmJkrPi2mKn376CTdu3ECPHj0MyqdOnYrw8HAkJiZi27ZtiI6ONtqGSqWCSqVq8rKJiDqNB+/Wb8pNnC1A6ezsDE9PT4SHh0uFJSUlyM/Px/bt2xudKTg4GOnp6RgzZgyqq6uxcOFCPP/88/Dx8UFpaSnefvttBAYGYuTIkQ3mnT59Ompra/HMM89gx44dGDx4cKutHBF1PHIeinjv+3v4YMSW0eg5kFWrVsHPzw8jRoxodKazZ8+iqqoKQN2lvydOnMDatWtRWVkJX19fjBgxAu+//77RPYjU1FTo9XrEx8dj586dZk/SExHdI+ehiAAfjNgaFEII0dadsIRGo4G7uzuqqqrg5ubW1t1pEv6yki3x8vIy2EDfo1arcf36dfMNNOUwipeX4bOw7i8MMLKsZvcPHfj/ZEYG0MwbHpuyreULpYiIOgor3y3PACEiIln4OHciajvGTmCbOLHNk+HtBwOEiNqOjJdG8WR4+8FDWEQ2hg8QpPaCAUJkY2QFCEOHWgEDhKyLG7K2wXGnVsAAIevihoyow2CAEBGRLAwQIiKShQFCRC2L7w7vNBggRNSybCBAptlAH20BA4SIOh0GSMtggBCRzWIQtC0GCBHZLAZI22KAEBGRLAwQojbE51qRLWOAELUhBgjZMgYIERHJwgAhIiJZ+EIpIhsQEhKCiooKAHVv4fPy8gJQ9xa+08ZeyhQSAvw+D7Ra4Pd5fp9R1suciOpjgJBsGRkZvIzSSioqKqQAAYDbt29bMtP9AKmbqRV6Rp0ZA4RkY4C0c/XfEa7VAr+/O7zBdw1m4zvHyTIMECIrqn8oCrD8cJSsjXr9tkJDAQvfHc53jpOlGCBEVvTgoSjAssNRbbVR5x4mmcKrsIjIKAYImcIAIWoBvCGQOiMGCFELYIBQZ8QAISIiWRggREQkCwOEqDPgyXBqBQwQsg08x9A8DBBqBbwPhJqkRZ/J1JTnMWVktLuNoJyxePDGPzl3evPSWmovGCDUJHwm031yxuLBYJFzUyADhNoLHsIiIiJZGCBERCQLA4Ran1ptfDIlJKTufImXF3D58v2fQ0IsWixv7iNqXTwHQq1P7ouLmnnuxBYeN9/e+0dkCvdAiNoQA4RsmdUCJC8vDwqFApWVldZaJJkQEhICLy+vBlOImcNDarVampydnQ0+dxQ89EVkGVkBsmjRIigUCqSmpgIALl26BIVC0ej09ddft2R/qYXcuwS1scmU06dP4/r167h+/ToCAgKkn43eA2KDGCBElmlygBw6dAjLly9HRESEVObv748rV64YTAsXLoSLiwvi4uJatMOdBjdiRNTONSlAqqurkZycjBUrVsDDw0Mqt7e3h4+Pj8GUnZ2NpKQkuLi4NNrWnTt3EBcXhz/+8Y88rNUYBohV1T+kd/nyZYsO6XWGw3lEpjTpKqxp06YhISEBsbGx+Nvf/ma03pEjR1BUVGT0UEBlZSUSEhLg4uKCnJwcdO3atWm9Jmphzb2rnO8Op87I4gDJzMzE0aNHcejQIbN1V65ciZCQEERFRTX4rry8HOPGjUPfvn2xfv16ODg4NNqGTqeDTqeTPms0Gku7SkREVmDRIayysjLMnDkTX331FRwdHU3W1Wq1WL9+PSZPntzo98OHD0dgYCA2btxoNDwAID09He7u7tLk7+9vSVeJiMhKLAqQI0eO4Nq1axg4cCCUSiWUSiX27NmDJUuWQKlUora2Vqq7adMm3LlzBxMnTmy0rYSEBOTn55vd3U9LS0NVVZU0lZWVNWG1qLOScy4D4PkMIjksOoQVExODkydPGpSlpKQgODgYc+bMgb29vVS+cuVKJCYmSo+2ftCiRYvg4uKCmJgY5OXlITQ0tNF6KpUKKpXK0vUgAiDzacHg+QwiOSwKEFdXV4SHhxuUOTs7w9PT06C8pKQE+fn52L59u8n2Fi9ejNraWgwbNgx5eXkIDg6W0fXmsYXHXJDt4O8SdUYteif6qlWr4OfnhxEjRpit+/HHHyMpKQnDhg3DuXPnWrIbFuHNYtSSGCDUGckOkLy8PHzyyScGZR988AEuX74MO7uGzQ4dOhRCCHTr1k0qW7JkCX755Rc8+uijcrtBRERthA9TJCIiWRggHQwPzRGRtfB9IK0kJCREuhpIq9VKV6Wp1WrjDx4MCbn//guttu7lSXUzmXynxoPLWrBggdll1b88VavVwsnJqUE5EZEpDJBWIutyUpkvUOqwj+GoH2ZaLfB7yJl6kyGDkch6GCDUftXfewoNBSwIufrByEu1iVoXz4FQh8XwIGpdDJAm4klqIqI6DJAmYoDcx7/wiTo3BgjJ1lEDpKOuF1FLY4AQPYABQmQZBghxg0lEsjBAiAFCRLLwPhAz6t/lDVh+VzlvaCOijo4BYsaDd3kDrXint4w7r+u+ZlgRkfUxQNoTGXde181mA48lIaIOh+dAyDbwPA1Ru8MA6WA67AnxjrpeRDaMAdLBdNgAIaJ2hwFCRESyMECIiEgWBggREcnCACEiIlkYIEREJAsDhIiIZGGAtFe8HJeI2jkGSHvFACGido4BQkREsjBArIB3hxNRR8QAsQIGCBF1RAwQIiKShQFCRESyMECIiEgWBggREcnSqV5pGxISIr3fXKvVwsvLC0Ddu8Prvxa2vgffK853jhMR1elUAVJRUSEFCADcvn3b7DwPBgvfOU5EVIeHsIiISBYGCBERycIAISIiWTrVOZD6J715MpyIqHmstgeiUCiwefNmay2uUadPn8b169dx/fp1BAQESD8buwKrMXwsCRFRHTuFQoHU1FSDwsLCQgwbNgzOzs5wc3PD008/Da1Wa7SRBQsWQKFQGEzBwcGt3PW2wQAhIqqjjIiIMCgoLCzEqFGjkJaWhqVLl0KpVOL48eOwszO9sxIWFoZdu3bdb1jZqY6OERF1OkoPDw+DglmzZmHGjBmYO3euVBYUFGS+IaUSPj4+Fi94/vz5+OKLL/Ddd9/hwRAjIqL2z2C34tq1azh48CC6d++OqKgoeHt7Izo6Gnv37jXb0Pnz5+Hr64vevXsjOTkZly9fbrSeEALTp0/HunXrUFBQYDQ8dDodNBqNwURERO2HQYBcuHABQN05jddeew07d+7EwIEDERMTg/PnzxttJDIyEmvWrMHOnTvx2Wef4eLFixgyZAhu3bplUO+3337DSy+9hN27d2Pv3r0IDAw02mZ6ejrc3d2lyd/fvznrSURELczgRIVerwcATJkyBSkpKQCAxx57DLt378aqVauQnp7eaCNxcXHSzxEREYiMjETPnj2RlZWFyZMnS9/NmjULKpUKBw4cMHvpbFpaGt58803ps0ajYYgQEbUjdnv27MGSJUugVCrh7e0NoO55T/WFhIQYPSTVmG7duuHRRx9FSUmJQfnw4cPx888/47vvvjPbhkqlgpubm8FERETth93jjz+O5ORkFBUVoXfv3vD19cXZs2cNKp07dw49e/a0uNHq6mqUlpaiR48eBuWJiYlYv349Xn31VWRmZrbIChARUduwc3Z2hqenJ8LDw6FQKDB79mwsWbIEmzZtQklJCebNm4czZ84YHIqKiYnBsmXLpM9vvfUW9uzZg0uXLmH//v0YM2YM7O3tMX78+AYLHDNmDL788kukpKRg06ZNVllJIiJqeQ1u1khNTUVNTQ1mzZqFmzdvon///sjJyUGfPn2kOqWlpQaPRf/pp58wfvx43LhxA15eXhg8eDAOHDggvW/jQS+88AL0ej0mTJgAOzs7jB07thVWjYiIWpNCCCHauhOW0Gg0cHd3R1VVVYucD+F7PYiIGmrKtpZP4yUiIlkYIEREJAsDhIiIZGGAEBGRLAwQIiKShQFCRESyMECIiEgWBggREcnSaQOEr6YlImoeBggREcnSaQOEiIiahwFCRESyMECIiEgWBggREcnCACEiIlkYIEREJAsDhIiIZGGAEBGRLAwQIiKShQFCRESyMECIiEgWBggREcnCACEiIlkYIEREJAsDhIiIZGGAEBGRLAwQIiKShQFCRESyMECIiEgWBggREcnCACEiIlkYIEREJAsDhIiIZGGAEBGRLAwQIiKShQFCRESyMECIiEgWBggREcnCACEiIlmsEiCXLl2CQqFAUVGRNRZHRERW0OQAWbRoERQKBVJTUw3KCwsLMWzYMDg7O8PNzQ1PP/00tFptS/WTiIjaGWVTKh86dAjLly9HRESEQXlhYSFGjRqFtLQ0LF26FEqlEsePH4edHY+QERF1VBZv4aurq5GcnIwV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", + "image/png": "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", "text/plain": [ - "" + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "from src.drawing.mpf_plotted_chart import NewPlottedChart\n", + "from src.display.picker import picker as display_picker\n", + "import io\n", + "from PIL import Image\n", + "\n", + "display = display_picker(config)\n", + "chart = NewPlottedChart(config, display, files, chart_data)\n", + "with io.BytesIO() as file_stream:\n", + " chart.write_to_stream(file_stream)\n", + " chart_image = Image.open(file_stream)\n", + " chart_image.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/chris/bitbot/src/drawing/mpf_plotted_chart.py:53: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.\n", + " self.fig.tight_layout()\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "" ] }, "metadata": {}, @@ -174,9 +299,16 @@ "## MPF plot" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Fetch Data" + ] + }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "metadata": { "id": "eN618pI5tNiT" }, @@ -189,7 +321,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -206,7 +338,6 @@ "df = pd.DataFrame(exchange_data)\n", "df.columns = [\"Date\", \"Open\", \"Low\", \"High\", \"Close\", \"Volume\"]\n", "df['Date'] = pd.to_datetime(df['Date'].astype('datetime64[ms]'))\n", - "\n", "#df.index = pd.DatetimeIndex(df[\"Date\"].astype('datetime64[ms]'))\n", "df.set_index('Date', inplace=True)\n", "# df" @@ -216,28 +347,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Try draw attractive graph" + "### Try to draw an attractive graph" ] }, { "cell_type": "code", - "execution_count": 107, + "execution_count": 11, "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "execution_count": 107, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ + "import matplotlib\n", + "from matplotlib import pyplot as plt\n", "from matplotlib.ticker import EngFormatter\n", + "\n", + "\n", + "matplotlib.use('Agg')\n", "import numpy \n", "\n", "display_size = (400,300)\n", @@ -250,9 +374,17 @@ " volume={'up': 'black', 'down': 'red'}\n", ")\n", "\n", + "def get_default_styles():\n", + " yield files.base_style\n", + " yield files.default_style\n", + "\n", + "\n", + "\n", + "bb_style = list(get_default_styles())\n", + "\n", "s = mpf.make_mpf_style(\n", " marketcolors=mc,\n", - " base_mpl_style=[files.base_style, files.expanded_style],\n", + " base_mpl_style=bb_style, # [files.base_style, files.default_style],\n", " mavcolors=['#1f77b4', '#ff7f0e', '#2ca02c'],\n", " rc={}\n", ")\n", @@ -273,7 +405,7 @@ " returnfig=True,\n", " type='candle',\n", " # mav=(10, 20),\n", - " # volume=True,\n", + " volume=False,\n", " style=s,\n", " tight_layout=True,\n", " figsize=tuple(dim/100 for dim in display_size),\n", @@ -289,13 +421,43 @@ " _ = a.set_ylabel(\"\")\n", " _ = a.set_xlabel(\"\")\n", "\n", - " for label in a.yaxis.get_ticklabels():\n", - " label.set_horizontalalignment('left')\n", + " # for label in a.yaxis.get_ticklabels():\n", + " # label.set_horizontalalignment('left')\n", " \n", - " for label in a.xaxis.get_ticklabels():\n", - " label.set_verticalalignment('bottom')\n", - " #a.tick_params(rotation = 45, ha='left')\n", - "fig" + " # for label in a.xaxis.get_ticklabels():\n", + " # label.set_verticalalignment('bottom')\n", + " #a.tick_params(rotation = 45, ha='left')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Output" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.show()\n", + "with io.BytesIO() as file_stream:\n", + " fig.savefig(file_stream, dpi=fig.dpi, bbox_inches='tight', pad_inches=0.0)\n", + " chart_image = Image.open(file_stream)\n", + " chart_image.show()" ] } ], diff --git a/src/configuration/bitbot_files.py b/src/configuration/bitbot_files.py index 8a658976..5dd048ee 100644 --- a/src/configuration/bitbot_files.py +++ b/src/configuration/bitbot_files.py @@ -24,8 +24,8 @@ def __init__(self, base_path): self.logging_ini = self.existing_file_path('logging.ini') self.base_style = self.existing_file_path('base.mplstyle') - self.volume_style = self.existing_file_path('volume.mplstyle') self.default_style = self.existing_file_path('default.mplstyle') + self.volume_style = self.existing_file_path('volume.mplstyle') self.small_screen_style = self.existing_file_path('small.mplstyle') self.expanded_style = self.existing_file_path('default.expanded.mplstyle') self.small_expanded_style = self.existing_file_path('small.expanded.mplstyle') diff --git a/src/drawing/mpf_plotted_chart.py b/src/drawing/mpf_plotted_chart.py index 3d4caf7e..cbe7e475 100644 --- a/src/drawing/mpf_plotted_chart.py +++ b/src/drawing/mpf_plotted_chart.py @@ -5,7 +5,6 @@ import pandas as pd from matplotlib.ticker import EngFormatter -matplotlib.use('Agg') class NewPlottedChart: @@ -27,7 +26,7 @@ def __init__(self, config, display, files, chart_data): wick={'up': 'black', 'down': 'red'}, volume={'up': 'black', 'down': 'red'}) - # ๐Ÿ“ MPF doesnt support multiple styles, so we hack them into rcparams + # ๐Ÿ“ create styles list style_files = list(self.get_default_styles(config, display, files)) # ๐Ÿ“ setup MLF styling @@ -51,7 +50,7 @@ def __init__(self, config, display, files, chart_data): xrotation=0, datetime_format=self.date_format(data_frame), ) - + self.fig.tight_layout() # ๐Ÿช“ make axes look nicer for a in ax: a.yaxis.set_major_formatter(EngFormatter(sep='')) @@ -61,14 +60,21 @@ def __init__(self, config, display, files, chart_data): _ = a.set_ylabel("") _ = a.set_xlabel("") - # ๐Ÿ“‘ styles overide each other left to right? + # if config.expand_chart(): + # for label in a.yaxis.get_ticklabels(): + # label.set_horizontalalignment('left') + + # for label in a.xaxis.get_ticklabels(): + # label.set_verticalalignment('bottom') + + # ๐Ÿ“‘ styles overid left to right def get_default_styles(self, config, display, files): yield files.base_style + yield files.default_style small_display = self.is_small_display(display) if small_display: yield files.small_screen_style - yield files.default_style if config.expand_chart(): yield files.expanded_style @@ -91,6 +97,10 @@ def date_format(self, df): # ๐Ÿ›ถ save plot to image stream def write_to_stream(self, stream): - self.fig.savefig(stream, dpi=self.fig.dpi, pad_inches=0) + self.fig.savefig( + stream, + dpi=self.fig.dpi, + bbox_inches='tight' + ) stream.seek(0) plt.close(self.fig) diff --git a/src/exchanges/crypto_exchanges.py b/src/exchanges/crypto_exchanges.py index 76a34882..a254a32b 100644 --- a/src/exchanges/crypto_exchanges.py +++ b/src/exchanges/crypto_exchanges.py @@ -2,17 +2,17 @@ from datetime import datetime import random import collections -import matplotlib.dates as mdates from src.configuration.log_decorator import info_log from ccxt.base.errors import BadSymbol import logging + class Exchange(): CandleConfig = collections.namedtuple('CandleConfig', 'width count') candle_configs = [ - CandleConfig("5m", 60), - CandleConfig("1h", 24), - CandleConfig("1d", 60), + CandleConfig("5m", 40), + CandleConfig("1h", 40), + CandleConfig("1d", 40), ] def __init__(self, config): From 4bdd5b5cde7f0245e777dbc2c3029db263ecc236 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 28 Mar 2022 22:30:10 +0000 Subject: [PATCH 21/66] chore: autopublish 2022-03-28T22:30:10Z --- tests/images/BTC EXPANDED.png | Bin 2219 -> 2230 bytes tests/images/BTC HOLDINGS.png | Bin 2384 -> 2382 bytes tests/images/BTC OVERLAY2.png | Bin 2393 -> 2389 bytes tests/images/BTC VOLUME EXPANDED.png | Bin 2272 -> 2275 bytes tests/images/BTC VOLUME OVERLAY2.png | Bin 2472 -> 2466 bytes tests/images/BTC VOLUME.png | Bin 2411 -> 2400 bytes tests/images/bitmex BTC 1d defaults.png | Bin 2323 -> 2320 bytes tests/images/bitmex BTC 5m defaults.png | Bin 2363 -> 2363 bytes tests/images/bitmex ETH 1d defaults.png | Bin 2458 -> 2460 bytes tests/images/bitmex ETH 5m defaults.png | Bin 2352 -> 2337 bytes tests/images/cryptocom CRO 1d defaults.png | Bin 2392 -> 2388 bytes 11 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/images/BTC EXPANDED.png b/tests/images/BTC EXPANDED.png index 11d3e2faf2240a38f158ace53611422ab9e87a79..57192b69d7d967e192b0b31dc0924cecdb115c43 100644 GIT binary patch delta 1436 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 diff --git a/tests/images/BTC HOLDINGS.png b/tests/images/BTC HOLDINGS.png index 02e89e19f6087cbc7de371a84f86d292a175f8a2..c921f56dffcb16bdec6e24aaddf083f5c461b084 100644 GIT binary patch delta 1589 zcmV-52Fm%+63!B^EdzfHNkl0g{6t3`G;~f9RdnKoY=$3J8)vJFUeK@D&jv zb^%PI2oe3ukpTbOM;cPvo{D~Nm>1Rdk$pO$_>-TJKO7t2fq6sFU{JqICi*_ZBR(2P zkgQT%BXX?<=jIT!2-Obo7YKO<1S!=yY_%PxUR=d zK+K>eK_GWNK5a=5;5#E`u_y?>fV(!)4Fr;MX?ODE{KSsIfj|SH2QiC+NXS5tdJU+e zO6Dpq_q*+!pC>Rj(%t+;ngYb#j8|kJNCtw0Lch|&JmL14pVanM83>YrAQ=c!_s&ut zRBHd#JO;u*T=RcZDg!|pZqk+NQ1AG;s_%mMg=G&#{AXaJB|)HkA-gp}P>X;!VwNR( zdY)@%KX*}k-~vAj;-@FkB8Cj-cLR}-fglY9qNXl`=n=E@wc6kPMI6)zkx;Y9QuP^P z%Xf9r;t$kqaqsoC%ppPeZ`*a$$ZZ5w|6KWv~p$3uhYC<8&dGcNlIh;TM~*}(@v;PN0gw`m|~(?IN7 z1t8?Wh4c{+|A+oRbHwoY($@6y!F84d!i}x74Z_cP#*A6smjF>PUE#(sXw34y0uXs~ z;K|LA^dWx`u=xq>4H*cMfgtsXSvHrCfq}J%d{d^7a%0T~F= z+8~hMmItwcfspgf%|L8wl5r(3zP7xuwjP0yFH^@OHh6SS48OcEFaG)-b`EYa!mOdX zIv`|=nC;X+_2xjpli7vVgdlKj5dSB_))K@dp}K$eAS(H3Ee0WnlwcqXgeL&7Gzbhq z)Y5z)8cmcY0`crlR!)$y!a| z7}0;>!9er`(Of!aSq1`+p5bF4bdga?%EZkCzX}5VQxB&m&>sYL2Z0QN8V0=uAi}{- zOAzR*)m#b$xRYP5!Pq+x?n9yn0osFTf60Il1cV^q0I~VUrEY_`buhIj89$`@h&>?$ zvHvj$wsanTfk4@qE{F>n1q65ycmss%bT)qyMf zU;=7%b_oQu0)Z5`EQncdVIA=DnqYu zZBVgBE`EX7cxHM6qT8HPRIHJUJP3brC;iJHPK}cwRM2J_5N;{4`m_ga4wL@$Btegd?=!7JmRW;f#`E@ z%K>=#*9!v>5P@i30~f%4`H|=xh#nGs#4x7@sJgsz#Sm5LT4V%5XeAJ@l$n3k8;?Yf z31X2lvoa8*AuIKU3eee@eotAn?NS z!jG%P^1}I)`5DIoCf_qj*^X2{1JT=rZ8>H+QvIw&^fpP^j#NJb(c6S=m(T?uCX>mO zQ@BWj=O#KS%%jsnlf+`6*d%}9#ciAv6Pi?9b0k(*`I@4CiE1SR8>qc#llXDo*d*lz z#q#vHn8>8!Q^O3x`9!zEhHYr&kuyouFf>WjFg77yQC*aa1PJj(RRqCHto%{N&Jo0S zl&oQ3lB{9m1x5nFXT^c!AR|v`@gr|8tPy>eu}O3Yp$Wzho^xZwWHBuXlWHJzDG&Eo nGkI6}{&x`&CX>lzGA*t@{7MkD)-A-n00000NkvXXu0mjfL=D|C delta 1591 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 O0000;EawtoYM+d1%sEGX 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 delta 1618 zcmV-Y2Cezv66+GMEdzfkNkli*~Fa3`L3m|Iw}E0TMt(4Jev(@0waBhOiCz zK&^A8J48g`V<~X+@=``9`;}7oHeHv*^0NAHBKDvEPVtvz!3AK!&`B^PKL!)FXWHT= zL6Txo;*-c{4UNqq$q11Lv;~6qfTW}ghe_LE$OuOv&DpTQ+UkGD4Y4ly?h^ep7$hj> zpD$7eF^VV*T?>n^f{0@{a^j;P!WbSp>xV(e{a6za1nrfbS!d7BSs4h(K+KvJsrsBX z90=FufGP`eFL3_7U*7Yh4Z}b{1_Ck=P!ka8fL1C?*GZSx{FIh8WFQ~|0lgN)QA$k* zOWvr`_ea+;5C(tZm>=QtVB7`*y7la{G@zdGQw-r?%mxB_B?uw|0hAXi2Mo5OxLG?l4pZI952%_$83O+_O>Kab~aYlcQK(MaS3&dQ_Z#$p!@Rq^y z8i-bNpZ$d)&oY96I4J`G83^bNAf|JtS(%eD#aeD4rugH-Ai}YvKcu{-7l81IaZO`_ zm{JfbE=N*4XIASIF1Q>*Bz_nO68j02!2ucs1pN}gKnM`Zy9;PY5d26=tA?>a5U$Q5 z>W_nnrJ8@i4+NrZtP0Ni%v&^@F@`R-0z-InDT7!hUNz@FM+Jcoow-j8;T=FwgN#s| z`-HdlAV?jAQ=0q4mC}wNlphW!rMb`HK@^lUqN2WV-h-?%5M4pERX+DwJbsfU#E*B~ zJ3u(mNQx(U@{1CPc*4^dM9rN*8sZ?twvIoT4HbX(Wi3HaINxk83F23hf|&e$AFg0zUJtaBX#!Eci555kw| zgJ5%Wb-I3U*kP4JBga9weGsLKW_~Z^IEcytC3KAkf>^ty)i;lXw<+$09KYCF4+3%A z3&MY8Al!OXvFEVcp(k-4hUJ2`U;?3qYLSR>Q z1%%_rVjV%SDZf?^x9w{U#Izik_5cyzM1AKwZ;K#ec^444_2%Ap-XJ|GBJEmPwMwXzEcCokuJLS+hgdc`tg&Gw%hapM@#55&p4>NY?W zqxvF<*Js4^6&*>9N8L?&!<~P(>aGn$XOo5?OeT{lRpHuTe7c91r7PuE&QgFL%o~W^R*ojnsg=p)d*`+^UMv_ZuKgCeugt2Ru?9N;gy* Q^8f$<07*qoM6N<$f~IB1FaQ7m diff --git a/tests/images/bitmex BTC 1d defaults.png b/tests/images/bitmex BTC 1d defaults.png index c95398d978cc5cbe787d5335fcce78080aeecdf8..b725f25cc5d9ea81cc1ebe3dad06204be423d1bd 100644 GIT binary patch delta 1526 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 KMNUMnLSTY6MzDYY delta 1560 zcmV+z2Iu*^61x(xHv@lSs~`-9iSPf=TQ!h`yX7L5{AX*`MG`)NLUcRE{0rd!`}{ih z*!EsJYyMB;to#M#84hO%_(GB4F^umz%6Itr?(MX=dqHin)FR*^5bTTZ1MRR44BNA% zy7M~Sh`=@l*-hrk)y&n{wFnP{ZMSrg8UVknFYV#7MTm9)l8=AI5VoGMh#oq66;vl` z>)?hdHf)G7f}vpNyY}OCrzRbj+6(#tDFu{*Kq&~+Lmn1{;YR<2dfR8SBWhn@hf)5_e%q2YX269WU6j65b0Fi zZXm3GW0&!;CkTHUBfv{~J^&(D=^7BVQ0_@VpcKSM^HX(;f-p-jy6y~!xq-G$T|vNA zU`3ew$ot zURvVGYaj@tAgJ^Yh-Ze10U+usp&-z!g2;LOWf0NwlU}cL6~wwA*joJ3G!U~_9(fR7 z~t_ES(-}n|!)kzRIQRN_jK+xR!2@vkWa1bK$^qDpXkxA8sAgoCa zM7?^00EmEq+}~XT*&XHZt?{P(+nbnze#Dj>-+Nj* zZtl_w!b}0-{Iu&Z9tiSTx+gXR#PK2!(K2m-GeC4x0K#_g!`KL<=yM_qf|=fph{xuE z7^smT@;ciLPDA*`eij7#kUn@k_d(Q(Vx z|0N)rhAy6}12KJG7ldTd2?UK1AiBw_Aj0gX%ukwmZp%iTtkCEB;7?fSI{RM>dRByg_|pA zCWu7Nat&#VKq&|&1%Xl!sEJ7t1%XfYBzrnG8GZe zM=YrBAb6?{QjZrdsQw^o9xvQO6^|G0Ed_y65Fh!!3B0qE0!l%k6a-2^pcDj3L7)@_ zNOCnCRf4B}Qg#7qo394~(aE$D`P!coD*#^L#FmwiM4=*_$-;piw6cWAl$_I6eT?%gz z*``N6`hmDVMnp}}#>Sc%BV4;GjuG(@fQ=C*ZlO}CR4P@w{s0kQ6$KF5W$NSr0000< KMNUMnLSTZUbF|g~ diff --git a/tests/images/bitmex ETH 1d defaults.png b/tests/images/bitmex ETH 1d defaults.png index a45def20e3b96eaf9cae901b94db2316f1ca7774..0b98b82be9273c9f1ca97203748f7dc3a8856459 100644 GIT binary patch delta 1667 zcmV-}27LLN6Py#UEdzgANkl4cnwD2!^5m|D*Ss4G_O7)0EzL&Yr1^Q18r9 zY-a&n?+_yH|HJRkFM)RX1aKIaTKxqI} zTWJv)h$w}d05z2W;+-6l77?`rJOYv3|KxO=wvHMM5~8BOb(DXnK=l#QZ$#H3eMlp^ z$HD*z8*&gN2SIWWBtsxDbc|WLK36+V)7#`ANDhMZH4ro_;el*0HUi?T5`3;?)6xp` z6mH)zi*JG8CJ+X$(k4Cz0%czJ|4@zKzXgIPG{}(-Q;)_`B}+C(o#p*fI0%x1AZ?`k z9=c@&#QjT02@`+SZ1gtWKT5kM2SIWWBnLq<0D_fPqE_iY+gY;4f@p=}AV>~^WC(;- z-}AnEXtVz^h-gLZ!ywE}!%La~0;9!Nt04My4g%3&glfDl_YpmhMrW%{L{R|w7!wqj z@~tr#1pOC%bjv}InnB!&P+_#`6=RS`<8>_pE%&vvKx}_t4@6X$i6DMiZDZQ;7)=L3 z1RO*RV(C&qq)qqVvq69n5Wi|W2#7%J<#7Y zo5j5d)$4yja8to#AN~di6?;5y5jC}gfaLKr0YXOx90YWMXo*n$X%MYBngsCfe7o*V?}Eg%r|a!R#WRzYy! zs9!km462Ja3!>5|4g>*DgJ_LV6+Ao#LX8!`OpB-u;c^ga#QQLaD6vn^gMgbL zLe+o&9*DLM2~rSIp36W~2lZtTn+yhlKw#r=BFrxAfhgxHD{Va54j^Q~{2mC^A-)HM zdS`^kzz>3eWbW0kcY>hvBg3JwuLHcNAfOIHo}MNUcnV^qauAim)<-VSfl$qVOtnKy z295(WRS|6%t(%)o!?s5tw43Iw0N3<4hlfhe1!z)U^XIu69e zS&dvivO^@#Qu%6N=3x-m-^x^@x1k_HOy)Q+QwFhjSMxy>3izN@KA3{w(E)rMgbqPp z27&Z+hs4;j8N@89z)S$KHw7JnZUX`J8)+AW%Deyq)`6I;2*m${I10A$MBzIipaOs5 zbdVcdY~f|pKL-MuKmeR|_TK@K@5aXO2XVng8;ICvHnN+n3`B^$Jq#ilz1af+DTw&o zk&6$2xai^}5gbHFFM-Gg9y35BvB%1!yBkE+c;gFJg8&N49DUzE4+0Hp>husI(pjLGA8;fuc1JoZEj#jEj4`6hvCE$u1lO8wU_z3q=19gbxRC6#RHh zvtpx?pG11-=%)^L1P00Ak8O+Zjt9E1WfU)Dh2XF;f!NW%Ki0xbp+jyCuf2uMK` zR}2@(L2#)SWa%I%%XJ{aJ5-%NzcfTgAgb^84ioYQ>1fw|!=-vK z*NV<|B?xM92v0<)T9tr+s4PpqF;r2eW?2J~?9P=n5X-dUpRn7~2h#+I zHF>V#CglW34ua$$NLz9Dg7qIUDcM>opM#ifQnIyF zJ_j+|q-1NUd=6r^NwEEd8i2T5F4vjTH`@3|{?erMnm8>rDZE0On-sk8P9>YvWZ;{s z9NpHnNBPJ~rPc*7_7a=qzebXql)Rw&Yi@ZqnaSagp0p`|V4r&-;ud?c2f^iK#k>Hi zNuh+fiLAIJWrMV-^ZxfEAY3k&%jNpG{s97U6SIVEqcZ>i N002ovPDHLkV1jX{+6@2z delta 1665 zcmV-{27dXR6PgpSEdzg8NkliI$`w3`G2$F#yDFT7MV@%TJxzcf*-X;S3fZBy zp*KF#1tQGBKu`__f^xXXVkoC(h7nDNB5P2 zkn`yQ1Q_P~#D$AzTVVjCdag5hUKz^B|xTgm3!q zfoOm0kRS#Tl(`HPWah{J`nj*-AWsewmk^9VBQBpbcpW(A>J9` zG4O*RAewvK*E>Pb`H|t!Fs~E5mmr`F!aY4rAn+2zNTnbOl`W54o&zD=e^9f1Oa@K^ zGer&=`$qC!59RO4&dV;WC*$%1k%&( z6GO{p5K|NeW;}?)6=Vpy4Fr^Lq)reZD~vf1unxpz1t9(t!YJ6r6NT@9fC7liL9Tz# zV)HMf{u~Hs0s(N<*?$K_x*Hn5A4EkKZ6LxtlabwIB_Mp{?O_nn=uIC8h(Uzs&a(Ib zh{`N362UDx^IIh8gG2Tau7ganUm@M^B_m{k`D zQ~;tJp^|zW1o_>6eS$R)oZLqYi-do@6+~3A$ypc(HufMu4~Q{e5I!8lS@7dA&5Dh> z@?4~cj&>y=X2z9V;3`Ft$-f=?yKsp*W4R6&Yh$jn2$HBcl1FnB6lXV5+ zNn!Z8_6x$7f*_YecpyU6st5!G3&%@-Vu-3tEwTh6+MO$HAl7Kne_^*l)KxDB0ZTk0 z1))KUKyc*P?$2l}Z@}l7S!@2$F#y83>YrAQ=eKmffwe{t=U$t)}`J zh}kCI_7iFVG7Ry{OqLd|$z*BanoLY4lc_@S>z(|Cmq}WDQIr2bmjE@$gWwF0Dnxl6ajXcrH+M6| z$2K(4c3A1Pla0rqm8$5PU4ox z(tDZOTv=fF#U^CrHu-WgHe*19Mcg*1vKe0Q!K&zdzX8HzGJRElA-WTl9|(!700000 LNkvXXu0mjfGGouX diff --git a/tests/images/bitmex ETH 5m defaults.png b/tests/images/bitmex ETH 5m defaults.png index 4e3fe95eb43710e44a49f6ae5f20c3fda9c7b8a7..6a7bed022dcaa5662bbab7906426c1d0d1bee440 100644 GIT binary patch delta 1543 zcmV+i2Kf1~5}^{XEdzhwNkltJdoDzp}|3vQ0<^&Mvn+J4%GD$3S>w49PxiqZ#o$U3;PZxOP?;C zlen;Bgct{azDEcY;(Q)Pxtj!EO$gHIP$0T107Qvwt(pr&K@NiCAV>@8*KvG>LPzV< zvXUQ5V-O%Y2$F*!IS50wPRRPS)4Ai490bWhkQ@YQI1sg)T&~lvyIDF2l7k>Qh(uN= za%EDf-D7W-K@NX{gGf6h%hURtP3kLcfZsyia#aryr+sz@0V4a)8U1TP7c?*k z@mvGLBY}%S=Y&Ip5YIJ2VxP)~0%7_yI&;ODc&>q6FO8u=6yzXC4uaJDxdwq4YJRdu ztpomid>^dK(^#|}#uq`*(2Os4K7ktx1pQGjH_1W7wi|!yvt{Qx2ytmV7zFsu5*$Pn zO@01BEDr~9aSj(ifP;u`7aACkp|J&VA#}YexOql&Q8f^U#>i_xd=`3(gV=zetk(X% zIEZ+D;(9a?GM)cTbY#-`S3ra;AZtJnurr-s1hFVb+XgVL8xh3Lbbeb9u!0y31#q0% zbbcQY15JN2WjY@V>HIB-Z^0sYpn8+%T9BSI+r9^EHU|Li+Y1 z@PHSCkUwlez!t=6VuCQ;zXSw47R14nLVpnOqv?c$AUTLtM;{$K2+}bSn1bMxR;ghJ z5gK^~h_A^OgnFwq9M)bJljMig2}B$ir$B_YR}X&>x$IGY5MY25LgBQgMgqz4WcxS zrFnnHx3k4`KAZwkkNX}FSO%eX=ZA}nK|m`I7{4w=bUQ%Q<0JoPK^$nWDF_wa z;vhh-X3m00)A=wf2<2a8AZj4!nmi1mmebxbCCq^cH;%R-jEFWR$3Z|75SW612;$^o zeIq`!`Bqfg|6L$V76L?Nl)VE)_^Q)E zATO8Fu(m2j=O9Am*`TEVAwXEUSgj7xjRL~nm6Fp-KtK)z%n5?mH(@HY4+M4w!K;fO zf)G!Wa?**2b`gmNnmaEvdlJNUwbd*lZes!v$?kmlRXZ05(DQityZ0vpA=3Gr(-(gY z3!8hy4@`H0;19CFh`@MkrSpFTf^z&@5SoPsaaOx_=l>D}r15MfpKU;tBI2fo0Ks7q zh$Tix3$oXOfGP;N4(SIXrt|LxAs??p9R$2{L;yI5*z#tdfvkk^yk@g9brAWd3{Aq} zNE`%3@)QuA!r@5910km0^MEkw9Rz>XJBYO&k_FjYL4@rUg=+mY^ezyczLttjI|yp} z5QsDTU=BqS~^MwY2@S}NDhLee%a2< zTFk>8)-N%!Y)6XELELR(*^U&SgSgwovK=Wt2XVIv+fJbaKwK`DtERXgH959TFeE?? zliSfs^Bwss$*fkJMh{6y*`zP%!`i002ovPDHLkV1nc&vCaSh delta 1559 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 delta 1599 zcmV-F2Eh5$64(;3EdzfRNkl0lVuE42F~b{~vwMCJ3U{Hk38r-LunaD!ju; zZ5P0_oDlyX=nh=M|G)1;I)lL?y&mb%UEv;U34zM(3y<+NKVqgB>q$v08=kO~auBgb zh$0C7h6g76<(eE^HDYsSjUv>#4kBp?{&joD*p%v^BaCB0tY3fV0ofQ4#txnV>onnt zCKhvncu)p{WFSZef;1fnBpszocC~BsjQmi_livpd_*^AgzYqknIS7WS$@@Ui#B*v8 zc|~jICA*_*vrNLI?Y$r>G7uyK@zLgVp~!vI3c?@r!SR(X!XFz5Fc1dfD9u0^h&0VW z{33{t_yFi%*N%Vl3QK9Nx(VXrRF|cJ2sw5If$^SzYJ}=PGvz6I{}zEgB2@YyddmkR zlmj!%fk1ki8w4$d!&8TqvFi(AjF=S!{Y#z($v_0(x6}g!>l&j#+>cN#H&|9RRf~91 z27+WDNQ;5Ew4Q2`fgl+O(ijkGtbPE5P8AG<_otGJr1yV;NLHUw3xc5N;N=XTj8KgM z(dYtQ0bQ1(fAmRt+T@b7z zh#(-;xgCUlgen7py+M>~*h?VvBUFbVFb4tmKooys@tIQ~_(m#)ctit;vNV@K)TRZy zAa*ikEn*!IRM{gCEae!4a)hc5f?{ctf{@i2MCtD|h@Ba834&6e1cAs8RY6o|%vBI) zbuU6S7KC(K4aDWEzA_Lb13?l&uqEkD5HvCMgQa95gSe(HAV3oY7>FhiT3P}G7>Kn& zfPsJL2SU^WAgUAo6Ckh;2=w6?od^|<0Kpb=ibD6~7U8!eR1F|RO#%WzD=^a;1oj0H zSj-N>FT8t#P>N6u00DaQ=LTIHcxmi)Im8f>I*5U~0RnD<*s1Ag5LY8q$%pVI5C^lR z#aaaAu!WAoGHV1;F}wI15O<^o0t|$Kpd5crgV+p21cAQ*B3rs`AWVLaLHPKM>|q%Y zX%_9Xz~2E;EacDKYcvqvcpVT2XqE>NM!2I0Rd*16Q`l22BKe{fk@o;27xUR zs?H#QZxeh91bey!0+T=lyI?U8ag4YJqMSROD)!SLWSs{A${^gsKuiImh)`i(BA|al z#Q?20W4WvkBKKbfvGoJ-{Srs+_Gu7&WxNTAa`EnffEhu=5JA!~hJ(QAK)Aw;0O5Lw zFNd_Nzq=$5DUZ$|Xs}E{jE?2QE{GCK6~sB0lY>AB1Uv*{yb=(!AWT8{Rbqb-TP(z?l}&(R&1OYrAQ=dffgl+O(k31@SpSHLWII#&48&-YX!{DC0HTI?F_TA~ z&t&qb^O;OcCX=Z_`ECT-zK?%JT7FTMmfMtD!b%G%7k^OmliO%*Jwu4M0h2GcVqy~t z6}R`Nx97ASoGBQ{5r x{RlQXAW|2%4VrA!%dM=2!S@{?OeWJ?^#`lZ6)4m!ijV*R002ovPDHLkV1mS1vitx5 From 664fac8fc01c731f2486fd2e192c59363f61ce3d Mon Sep 17 00:00:00 2001 From: donbing Date: Sat, 2 Apr 2022 00:37:34 +0100 Subject: [PATCH 22/66] sort tests --- src/configuration/bitbot_config.py | 1 + src/drawing/mpf_plotted_chart.py | 6 +++++- src/exchanges/stock_exchanges.py | 13 ++++++++----- tests/test_stock_exchange.py | 18 +++++++++++++++--- 4 files changed, 29 insertions(+), 9 deletions(-) diff --git a/src/configuration/bitbot_config.py b/src/configuration/bitbot_config.py index 42b85fa7..dc1b56c0 100644 --- a/src/configuration/bitbot_config.py +++ b/src/configuration/bitbot_config.py @@ -3,6 +3,7 @@ from .log_decorator import info_log from os.path import join as pjoin + @info_log def load_config_ini(config_files): config = configparser.ConfigParser() diff --git a/src/drawing/mpf_plotted_chart.py b/src/drawing/mpf_plotted_chart.py index cbe7e475..96e8bd05 100644 --- a/src/drawing/mpf_plotted_chart.py +++ b/src/drawing/mpf_plotted_chart.py @@ -91,7 +91,11 @@ def date_format(self, df): if(candle_time_delta <= numpy.timedelta64(1, 'h')): return '%H:%M' elif(candle_time_delta <= numpy.timedelta64(1, 'D')): - return '%b.%d' + return '%-m/%d' + elif(candle_time_delta <= numpy.timedelta64(1, 'M')): + return '%y/%-m' + elif(candle_time_delta <= numpy.timedelta64(3, 'M')): + return '%y/%-m' else: return '%b' diff --git a/src/exchanges/stock_exchanges.py b/src/exchanges/stock_exchanges.py index 30f4d32b..0ac0125c 100644 --- a/src/exchanges/stock_exchanges.py +++ b/src/exchanges/stock_exchanges.py @@ -12,7 +12,9 @@ class Exchange(): CandleConfig('1mo', timedelta(weeks=4*24)), CandleConfig('1h', timedelta(hours=40)), CandleConfig('1wk', timedelta(weeks=60)), - CandleConfig('3mo', timedelta(weeks=12*24)) + CandleConfig('3mo', timedelta(weeks=12*24)), + CandleConfig('1m', timedelta(weeks=12*24)), + CandleConfig('5m', timedelta(weeks=12*24)), ] def __init__(self, config): @@ -52,10 +54,11 @@ def select_candle_config(self): return candle_config def get_candle_config_matching(self, configred_candle_width): - candle_config, = ( - conf for conf in self.candle_configs - if conf.width == configred_candle_width - ) + if configred_candle_width not in self.candle_configs: + candle_config, = ( + conf for conf in self.candle_configs + if conf.width == configred_candle_width + ) return candle_config def get_random_candle_config(self): diff --git a/tests/test_stock_exchange.py b/tests/test_stock_exchange.py index 2ef26729..03edfeb5 100644 --- a/tests/test_stock_exchange.py +++ b/tests/test_stock_exchange.py @@ -1,9 +1,18 @@ import unittest from src.exchanges import stock_exchanges -from src.configuration import bitbot_config +from src.configuration import bitbot_config, bitbot_files +from src.configuration.bitbot_files import use_config_dir +from src.configuration.bitbot_config import load_config_ini +import os +import pathlib + # ๐Ÿชณ ''1h',' <- fails on weekends due to short chart duration -test_params = ['1mo', '1h', '1wk', 'random'] +test_params = ['1mo''1mo', '1h', '1wk', 'random'] + +curdir = pathlib.Path(__file__).parent.resolve() +files = use_config_dir(os.path.join(curdir, "../")) +config_ini = load_config_ini(files) class TestStockExchange(unittest.TestCase): @@ -25,6 +34,9 @@ def run_test(self, candle_width): } config = bitbot_config.BitBotConfig(mock_config, {}) excange = stock_exchanges.Exchange(config) + data = excange.fetch_history() num_candles = len(data.candle_data) - self.assertTrue(num_candles > 0, msg=f'got {num_candles} candles for {stock}') + + we_got_candles = num_candles > 0 + self.assertTrue(we_got_candles, msg=f'got {num_candles} candles for {stock}') From 47bdff21a67828ec63dd793bd075083d4f5ae2e1 Mon Sep 17 00:00:00 2001 From: donbing Date: Sat, 2 Apr 2022 22:48:43 +0100 Subject: [PATCH 23/66] remove extra tight layout call --- src/drawing/mpf_plotted_chart.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/drawing/mpf_plotted_chart.py b/src/drawing/mpf_plotted_chart.py index 96e8bd05..9a2eb539 100644 --- a/src/drawing/mpf_plotted_chart.py +++ b/src/drawing/mpf_plotted_chart.py @@ -50,7 +50,7 @@ def __init__(self, config, display, files, chart_data): xrotation=0, datetime_format=self.date_format(data_frame), ) - self.fig.tight_layout() + # ๐Ÿช“ make axes look nicer for a in ax: a.yaxis.set_major_formatter(EngFormatter(sep='')) From 384c249005248833263e154868c56e0828f68695 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 1 Apr 2022 22:27:24 +0000 Subject: [PATCH 24/66] chore: autopublish 2022-04-01T22:27:24Z --- tests/images/BTC EXPANDED.png | Bin 2230 -> 2213 bytes tests/images/BTC HOLDINGS.png | Bin 2382 -> 2329 bytes tests/images/BTC OVERLAY2.png | Bin 2389 -> 2350 bytes tests/images/BTC VOLUME EXPANDED.png | Bin 2275 -> 2177 bytes tests/images/BTC VOLUME OVERLAY2.png | Bin 2466 -> 2316 bytes tests/images/BTC VOLUME.png | Bin 2400 -> 2264 bytes tests/images/bitmex BTC 1d defaults.png | Bin 2320 -> 2297 bytes tests/images/bitmex BTC 5m defaults.png | Bin 2363 -> 2083 bytes tests/images/bitmex ETH 1d defaults.png | Bin 2460 -> 2250 bytes tests/images/bitmex ETH 5m defaults.png | Bin 2337 -> 2103 bytes tests/images/cryptocom CRO 1d defaults.png | Bin 2388 -> 2126 bytes 11 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/images/BTC EXPANDED.png b/tests/images/BTC EXPANDED.png index 57192b69d7d967e192b0b31dc0924cecdb115c43..4d1e68d0ea60bedbd434ea9b1c140eed4ee0add2 100644 GIT binary patch delta 1454 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 Z0Tcr>4a%>WIz0dY002ovPDHLkV1kzAjWqxO diff --git a/tests/images/BTC HOLDINGS.png b/tests/images/BTC HOLDINGS.png index c921f56dffcb16bdec6e24aaddf083f5c461b084..6d8465532347b93c5b4412dbcca42ef3018f6f2f 100644 GIT binary patch delta 1571 zcmV+;2Hg415}6VqiBL{Q4GJ0x0000DNk~Le000310001`2m=5B0E7zDy|Ez+1AhhA zNkliI$`w3`L3m|Ist8kc6-!n+5O8sa7;0T#>>^Pb>8Z{!4$TEd~5TGq{Ea z0e~MmswWzKbud-{JZf}Z|NmXj*0X*6H6XhUtZsBW9sv8t_w5S<3ZYm8%m;4ppPAJ^ zbmsv8(>M&s^Z=)rm)w{Bx_bfcU4Isb%(}s6ik&Zy%d#9lQU^e3;H`83 z>wr=E5J z06GC-wrA!9g?z_jWj=r*sFn}b?MLPW9sg4RfKE4oY5R~{0KEQZ^?;E20l0&4b4}X= zV26_rF}`!;@sOWf82xgBUjdNSm>L}b2S5}+hI#RTR--NeXvVcCfG76t0o?uI09gK| z+XMh$PEz^-4NM8%JZ67@#(x7~-&(jf1ZW>0ROor7tA+!x76mBl$;^II`yK%KY!U!K zgPYp}6x;t*0H$?v3;?^3hJuEoA%06&%n0PZ)>UI2VL0A#^-0AxY$0H|L8kd?{X4}iNs-y;Elx&IIVCzT0w0^JwB_ApDw{pSF%hgbr@sJQtJ%hGZG zVF0Gp*Jc3j!XSW4U@)D(1ArkJ0(TI63Vi^cUsvP5uBGtC2isoRp6awF0R3?Q2mr#K zxi19Z4X1_JoeB_GCx18@fSiI>J(L8U1Nx-Ipz_uD6nX*B`SdlJdVyCD;N`nj>6_iD z09c?F0>G-1bC34|lMdCpv7F#t_-g>D^XIJ-{6PRgtq4HQKD(+E03GiEfbks$z`ITm z9|1Q25D7`O0&tH&naAo9!<0DtD`qM&eMv^0R!jNJhs z>%(t6es~c8N`(Nh2y+1F2IK&cK}`q1+bWdd7~08o*fU>C8uyq;L8i2yJ!lt_p) z)KUOInK}2k-+vum3jn^xNaO??YAFDU^?(Vtz`ZpYKp?=5IsoiStW3f?0F5H|=LFj+ z2q2Pf@Pud;&=jgwfE^VFkoBk`0XTEY_W^d)0U#=o4c-$#S^Wn<9)QZ03;|HE?{jeg z)Bwm$VvPn+Q9lQObI1e0n_FVq9RMVzmn8wbQab=RV}IBg06j*P0-zVUGjf72jw=^{ ze#24(AZwjq7d7zT008KFM;RZ3bAm5jBmnUBWheo_?)FpvKfwwY^p4#DfK=iD_zQs< zIl&fAWa^|4K;Hm+`ws%3LjGO(r{4!43hM!k$O*P^;srpnBmZn^RDiv80I1CY{3#27 zc<++sw|{x0os;Pu#0GJ)X5b<{nu>QwX>f1k_|u_ zWnN0BrmXm~#d<&fk}0Itodfm~%(SGhi^nMA7LZ0@jJv4ZZ&f7Yj0&r$sAFLO{{ZD; V6^sqhkQe{}002ovPDHLkV1it_sty1E delta 1625 zcmV-f2B!I$63!AKiBL{Q4GJ0x0000DNk~Le00039000262m=5B0K~=sVX+|#1Ahh# zNkl0g{6t3`G;~f9RdnKoY=$3J8)vJFUeK@D&jvb^%PI2oe3ukpTbOM;cPv zo{D~Nm>1Rdk$pO$_>-TJKO7t2fq6sFU{JqICi*_ZBR(2PkgQT%BXX?<=jIT!2-Obo z7YKO<1S!=yY_%PxUR=dK+K>eK_GWNK5a=5;5#E` zu_y?>fV(!)4Fr;MX?ODE{KSsIfj|SH2QiC+NXS5tdJU+eO6Dpq_q*+!pC>Rj(%t+; zngYb#j8|kJNCtw0Lch|&JmL14pVanM83>YrAQ=c!_s&utRBHd#JO;u*Tz~UZDg!|p zZqk+NQ1AG;s_%mMg=G&#{AXaJB|)HkA-gp}P>X;!VwNR(dY)@%KX*}k-~vAj;-@Fk zB8Cj-cLR}-fglY9qNXl`=n=E@wc6kPMI6)zkx;Y9QuP^P%Xf9r;t$kqaqsoC%ppPe zZ`*a$$ZZ5w|6KWv~p$3uhYC<8&dGcNlIh;TM~*}(@v;PN0gw`m|~(?IN71t8?Wh4c{+|A+oRbHwoY z($@6y!F84d!i}x74Z_cP#*A6smjF>PUE#(sXw34y0uXs~;K|LA^nW1`u=xq>4H*cM zfgtsXSvHrCfq}J%d{d^7a%0T~F=+8~hMmItwcfspgf%|L8w zl5r(3zP7xuwjP0yFH^@OHh6SS48OcEFaG)-b`EYa!mOdXIv`|=nC;X+_2xjpli7vV zgdlKj5dSB_))K@dp?|veAS(H3Ee0WnlwcqXgeL&7Gzbhq)Y5z)8cmcY0`crlR!)$y!a|7=O{>!9er`(Of!aSq1`+ zp5bF4bdga?%EZkCzX}5VQxB&m&>sYL2Z0QN8V0=uAi}{-OAzR*)m#b$xRYP5!Pq+x z?n9yn0osFTf60Il1cV^q0I~VUrEY_`buhIj89$`@h&>?$vHvj$wsanTfk4@qE{F>n z1q65ycmss%bbmGyMfU;=7%b_oQu0)Z5`EQncd zVIA=DnqYuZBVgBE`EX7cxHM6qT8HP zRIHJUJbwsrC;iJHPK}cwRM2J_5N;{4`m_ga4wL@$Btegd?=!7JmRW;f#`E@%K>=#*9!v>5P@i30~f%4 z`H|=xh#nGs#4x7@sJgsz#Sm5LT4V%5XeAJ@lz*Ak8;?Yf31X2lvoa8*AuIKU3eee@eotAn?NS!jG%P^1}I)`5DIoCf_qj z*^X2{1JT=rZ8>H+QvIw&^fpP^j#NJb(c6S=m(T?uCX>mOQ@BWj=O#KS%%jsnlf+`6 z*ncG9#ciAv6Pi?9b0k(*`I@4CiE1SR8>qc#llXDo*d*lz#q#vHn8>8!Q^O3x`9!zE zhHYr&kuyouFf>WjFg77yQC*aa1PJj(RRqCHto%{N&Jo0Sl&oQ3lB{9m1x5nFXT^c! zAR|v`@gr|8tPy>eu}O3Yp$Wzho^xZwWG*oYlWHJzDG&EoGkI6}{&x`&CX>lzGA*t@ X{7MkD)-A-n00000NkvXXu0mjf-9_TB diff --git a/tests/images/BTC OVERLAY2.png b/tests/images/BTC OVERLAY2.png index 42a53c6ce3897cca9f13b2732eab0d4d565a382b..1c996523935953439343281ba3b46bcea64304dd 100644 GIT binary patch delta 1593 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 IM6N<$f}h3y0{{R3 delta 1710 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 IM6N<$f|&3F`~Uy| delta 1643 zcmV-x29){O5#SObiBL{Q4GJ0x0000DNk~Le00039000262m=5B0K~=sVX+|#1Ahh{ zNkl0hXO03`L3iUvxX)2PA-k8c;N^J&uDhgexG5I?kEy5D|sNn&AG{*EB-f zFO|a9bYBwd>+aKu*nj>z#b4GH7k~vrC&7?hOeP%9w8U!#Ns>j1uSCAq(A*r78X@Wd z?SbGeAW0d*VbOLNYJ{Uu%~`j>%75zn4Y4oz<`VtrcM=qf>KLKhy}>UTlN(^wx61l7{c>{Ih|Rt5qx5YPgtI-L@Pw!>18wZQpyzh3jB4Z}b{ z1_Ck=P!|wshgM2U_es~c{FK%;WFQ~|0lgN)QA%AqOJ1nb_M`h42m^7QK-4DTZ(`W&;7e5(JTffXxHW8m(%m-WPlu2>AXi2^3$Vu?RK3?hsr{gCpSUI4;ZjBA<`#FBzgaXFLXrJ`D!aKYsiBJsmO zkT_4MbPmuYAm~>C41@roe7b<91i?pAS~<)Gf^c^hQGXmnOw|m2B7YElV^wfIX5OOP zj4^bv6zIacOBcjC@2WcYIVlJ%l;%Fsg%1Eh`ZYpx?i23%gCK1XPHXNHcS;9>(0w_a zwB|l%2T@W|h=%;abq}hQffx#+yOO!j;`mLb5FhWl_kdve#fv<-p#&mc@N@>z@Fb9m zI0$j9;}2#-g>zX?5PuY|H@i!M_@$&E7XRFbD?X#t2;x*>It(DTB%8)BMS@su*i8|4 z1Vrp}j*UUF--AHFMuLzYc8bRu*C7!6A-VA&e2P8@HaFL%>(7QARyj0s9E7WbDBU#k zXCcQyG|b)+4RHcqF_n@hs%{&DM4hh~r)mE(77VqkoDmhdmCxh>`IkEbAK8 zF)(d|aIHsU;r+@_5kzi09f(6N7zjB9lN-Mq1Udl&0XK09rV+$e?k@r1nm`b3*N@pj z$kS)pcngHsVO|i~Y6S%CfEab*odnj&#UT)4EH>=II|;0li#-s2)VU2}*m#l!HrPeH z1oP)xe`V?|zJCJ3@iU6QOo?~G23>fwd5sv@Rb2t$_*iTl2sY){?d7(*wm>ZFz;pnJ z_#x_Bzj<2(5z|M2z>_yOfAcm0;Svx-I!e|@Jf>;56vRDx1PG=tfq3QvY{xS0+4}# zu7h|=Z6sPQ%8p*6@rKn4OD z3_{)^eSZ=Y0|E5`v01`SAQb){-c}&(F}@hYpWD3{Wwvhx@i#u&0g?X!);~*1j4L3h zVwRVyR8qEgUl8SRiXhSgU91roL7c+U1_HlTK*Y#~fuJzCPth<7u|*;fMqng}{CLKM ztfVo0Gzi3=gTUGrh+-_vnG4rzETbZbkirZ*f`5qRIt2pzND!3vy3$!JdY(xJLPiup zNa(#lEJ2b(Qkoc&6SbCjh3O9>J63fSUVzmBQQ5rwPPNZNV!qlV~V&=s?2}EoaE0UEAZ_pI#2tfJIS!KsEH_4htYC_(W+k{0io7_SVgv{pR pb~TfGRqud50>Wf6nM|gS>mPPb9y&wS@F@TQ002ovPDHLkV1jbD&kq0q diff --git a/tests/images/bitmex BTC 1d defaults.png b/tests/images/bitmex BTC 1d defaults.png index b725f25cc5d9ea81cc1ebe3dad06204be423d1bd..e3b64a2dc5ffd1581c0bd3469e9995905801747d 100644 GIT binary patch delta 1538 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 LNkvXXu0mjf0;aA< diff --git a/tests/images/bitmex BTC 5m defaults.png b/tests/images/bitmex BTC 5m defaults.png index f4affa4d1bcab5e9aab73bd26b37d1ccb0b0bb43..72b61d578f87807edf8d9e4ba3dbbd9c833c0aaa 100644 GIT binary patch delta 1324 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 diff --git a/tests/images/bitmex ETH 1d defaults.png b/tests/images/bitmex ETH 1d defaults.png index 0b98b82be9273c9f1ca97203748f7dc3a8856459..510cb34481e8c2c31e5bce3fbe58e50e093fc243 100644 GIT binary patch delta 1492 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 diff --git a/tests/images/bitmex ETH 5m defaults.png b/tests/images/bitmex ETH 5m defaults.png index 6a7bed022dcaa5662bbab7906426c1d0d1bee440..77a5fbbfaf24b7c84c21674654c1fa241e6cb270 100644 GIT binary patch delta 1344 zcmZY9S5%V+7{>AUO9BZ2niv8~h+zc>$`S!NiUwuMFbax=qhgB|!xT9}70efKp->Il z5JuQb8J0#N2*?LL2p$VY&`PvO5U9+6$Pm#|?L}{T^Pd03d;5C|XmwQM6t1tkHkm;N z0BuhXmwf=pmxNLh{>#PX7UHy?EFw%4@4 z8m3;K5)enE^g7s1;dqYfaTqqe2C4;wfYj7Yx(bf91Z6zs?GTOrnPs4XKL4ijK(9t% ziKVaPiQ?wW02|@N5wKAx=XI5J4c1usGtD4oEdjd)JV}7prGRm7M^89U{QANz@vT0t z)B2&UML~mlzD^I)=(r;8-1>&-fK%UZfGd@KXTqA&ZWssFOlPJ0RL@X<-WJ5R#>w)} zj#J@u3oD~hDiAs$%0tck0nFX#&TWJG-JeVj08b#CM4nlSf%7)B+^QYJVY|su8HtoO z0{FoQJ#vjpS|;9lxv`TgSe=@y#c{wtgbq`FGy`3vL8RV15p4-wcbF~-Wa{tld!lH8 z*wKu{SJfZ68?=M7tVU1XJE0{dTZ|#-iiqSLz$|84I_X1i=e5IR^aj%VBey$+f|Dh^ zKPJc~nn}cD%tFaK3Xw63C*XBw!XHHzYWX*zmkg)(*S5!0r{a~8qv{-m`S?-IV_Y@h5utRVK_xrc z79a2vQSMNgC&x`YmaDs|Y?&aNI7bungDA55ODfapBE4p{T4M0|rMC!a9uMgIzTzX9 zwjoc0ndrClEMS)n-$5?B{pG_;d^?XX7fErz-Z$6S#N2}WMdfd&$?-~wSd6>60e!)S ztix&s_;s`ARVBMb0|YEN{MKniJ|P3r{37my9}D!Qd0LnzcR~|e%;7fBfjLf3UZn@q~rFO-^NMa;zuOKk6Ffn?bkDdPJU?{g?wJ zK&F#}rud#ff8agR(OLS{Mts$>Xmf0RAjpbg)s4Y~)fA=ZOQgZ7+`*tTZzBCdM#6w~ zo2CDf!SMdc@|0&u;UmV+-3L0rw!+?NQu1m_piFm1~Ahf zdEhE3)xSYllWeaOr+YoGh7ek^6=Zj!vXCvWjzh7)mmpW*o|zUkFqgwFh|+2Oi>ck{ pcBSyCBz$vCA{r6)+Y*{Mr%O?a=?%Q}bd9gu=;`X~QoS=c=^tazLUsTE delta 1580 zcmV+{2GjYs5TOzwiBL{Q4GJ0x0000DNk~Le00039000262m=5B0K~=sVX+|#1AhhI zNkltJdoDz zp}|3vQ0<^&Mvn+J4%GD$3S>w49DngqZ#o$U3;PZxOP?;Clen;Bgct{azDEcY;(Q)P zxtj!EO$gHIP$0T107Qvwt(pr&K@NiCAV>@8*KvG>LPzVQh(uN=a%EDf-D7W-L4OW{ zgGf6h%hURtP3kLcfZsyia#aryr+sz@0V4a)8U1TP7c?*k@mvGLBY}%S=Y&Ip5YIJ2 zVxP)~0%7_yI&;ODc&>q6FO8u=6yzXC4uaJDxdwq4YJRdutpomid>^dK(^#|}#uq`* z(2Os4K7ktx1pQGjH_1W7wtpMyvt{Qx2ytmV7zFsu5*$PnO@01BEDr~9aSj(ifP;u` z7aACkp|J&VA#}YexOql&Q8f^U#>i_xd=`3(gV=zetk(X%IEZ+D;(9a?GM)cTbY#-` zS3ra;AZtJnurr-s1hFVb+XgVL8xh3Lbbeb9u!0y31#q0%bbcQY1Ak32WjY@V>HIB- zZ^0sYpn8+%T9BSI+r9^EHU|Li+Y1@PHSCkUwlez!t=6VuCQ; zzXSw47R14nLVpnOqv?c$AUTLtM;{$K2+}bSn1bMxR;ghJ5gK^~h_A^OgnFwq9M)bJ zljMig2}B$ir$B_YSAP!>x$IGY5MY25LgBQgMgqz4WcxSrGI(Hx3k4`KAZwkkNX}F zSO%eX=ZA}nK|m`I7{4w=bUQ%Q<0JoPK^$nWDF_wa;vhh-X3m00)A=wf2<2a8 zAZj4!nmi1mmebxbCCq^cH;%R-jEFWR$3Z|75SW612;$^oeIq`!`Bqfg|6L$V76L?Nl)VE)_^Q)EATO8Fu(m2j=O9Am*`TEV zAwXEUSgj7xjRL~nm6Fp-KtK)z%n5?mH(@HY4+M4w!K;fOf)G!Wa?**2b`gmNnmaEv zdlJNUwbd*lZes!v$?kmlRXZ05(DQityZ0vpA=3Gr(|;EY3!8hy4@`H0;19CFh`@Mk zrSpFTf^z&@5SoPsaaOx_=l>D}r15MfpKU;tBI2fo0Ks7qh$Tix3$oXOfGP;N4(SIX zrt|LxAs??p9R$2{L;yI5*z#tdfvkk^yk@g9brAWd3{Aq}NE`%3@)QuA!r@5910km0 z^MEkw9e)JXJBYO&k_FjYL4@rUg=+mY^ezyczLttjI|yp}5QsDTU=BqS~^MwY2@S}NDhLee%a28)-N%!Y)6XELELR( z*^U&SgSgwovK=Wt2XVIv+fJbaKwK`DtERXgH959TFeE??liSfs^ zBwss$*fkJMh{6y*`zP%!`i002ovPDHLkU;%=fpSOkp diff --git a/tests/images/cryptocom CRO 1d defaults.png b/tests/images/cryptocom CRO 1d defaults.png index a78dde1adce68f2602c4f6728560be122fbe886d..9db2c25a5e909da69c15ed228fdd28cd53d1f008 100644 GIT binary patch delta 1367 zcmV-d1*rPe63!4IiBL{Q4GJ0x0000DNk~Le000300001^2m=5B0CJi*bg>}|1Ahe! zNkliI$`w3`L3m|IytCSpu>IB~+BW?r|(Nzy+k_$(b>xs-u2t3kl%|`2U4- z=RENLV}DC$AY6eH@PC1gG0EwwWbniJCl(vxXS|0lg-GZxHaPs%{E-Eq$RCki7xB!4 z_>%YoD((USw$6WP{{eg<{08Fv9)GbyH_z_>FfODC`0%v)!g-%~S}{WSS18_K0HGGP z;Rkf%K)j!J;devjzWe}qfDyOhEVc8kbG7qrDZd0M zzw(#%^JAs44<8@TS@|XCi~MJCXz43IjlXnE>iB1iLVU93=7;DYE%SdQ@qZgM^F3{66^-f3*5G=J(ShJ{O+{! zZ_JPUk46#S#P6&eas1$24`%;IDu25EgU|oD#oyLE{ssPzWd2YE8}l>zKf%Sm@W)E| z9e*wHc}WF+G@h~Ww||GrF-`P;B7c&+na%II*PNDPX@8V_I^VzMH^`sW@>|sKq_{CZx|785`?6ir$NV?)&-u|J!RMOHe}P2vo4a4zFW@hAeU$#Q2NvaD z&Oe&8@=NCr)(^@55y+o8=fmxv{9E!p|3?(R@vFd+JTCm5GJm`OMu6sjkonOAiF|&v zVc>5(-^`e>Kj)A4|9AM0kjKq$@)`Wb#7!|J$^5zhQ=Fxk^fda2Zu)of=Lg#S`P}Qr z{HPKp@n7baM}E4>Ur(QdKYl52@k8N)_wW<*L{aA;R^$(fN#ysNqynH@GE_bn;^J^# z2daw0h~tkNR)7BFVA4Nm{4>PPkDg*T=J(5zuKbt&FOffF$Hb54p5Nq8^V*0%e{0+0 zZ%lg2=|5AMKkSuXl0-p&{ZEg-Se6-IZ6tO0@$*oLpWy$zoIhMti=r;@bbm zs`6t`b|97VX}SDSjQrPOSD;G##ob%+uMARt z<_v@fDStn62Ev1spE(2JLB|fdQ*$bnO0|*l_ok#3zL)cbMYi1_yE?aDygZ1I(}2Ll zR|G!U?ixREMF}zf9YZIlG^ig^3L=Hk75RO#VZmf8%DqwYK@|Q=5DDZOjFah5DG%(&x42!dC7@XKB`dHKWpNwkoEw87A)2J*NgpDDFhMve;x!rm_y^q-YUqN Zpg&gn6`lk!+>`(S002ovPDHLkV1m+{@;m?l delta 1631 zcmV-l2B7)Q5Y!SOiBL{Q4GJ0x0000DNk~Le00039000262m=5B0K~=sVX+|#1Ahh* zNklfqJVT3`P^*|Do@04G(^O~5Ke(YWF3HMIU)W%a6i}+{(gQB z=?r>{_yU9bp&~LVx{y4@kxcKX&j8Sf}wYrAZ?_x*L6`V2zSf}$4|BhcWfZQKp2Qxnt?D7ahid6BZ&Xv1E70dI)6?pETy&T zCW!xq>asKtKF6LQFx(Q*jZppNraV3G-XgF|gi0SoXSra6c3@^T5J*pxgP>)wf6`wS z?|s3K5z~U8pXh0j41_QHmU@6-U1KDOdl9PD2FtRhY7tM$K#&XsX)zF&)>BO~5F`UZ z8UsR&)eAuARKY;F@>Ft>^nW=J(dv_FK@b!jyqe*o5vnmD+KRwEa`{YPW-<`ZM5qvS zK_HbG$IppSYZmZ8gsKw=jEl}eoGfq%i2w19n;_8tS{DR*5H|{QAn+IjOE?RnZ-fd1 z2)q@P4j}d>b^v1YmS@zrMf^Ue)Ie+{5Xgzo3j$sb0$V}Qr-l*;5Pv|hrZ+nX=net` z2>c8Pa6N=hqU$r@CR=lYptAl2N zeqa*0vmIMk3QIshROhf_m;nUK%njY+L4fZsr*snpNFc%o=3Nl1BZwft*SQ%)hX_>y z0(*nV*RWSWbcj$@L4RNh0`7sx#Nsn&K=6%J8u5q*5V<#(K$NBhhak#%vKFxr2&!xi z1WT!c(2h`*K~OAhP7nok29cL{8pOejIR`zg=N+V zqF{FMJ0R{z4Sxg}2m?VmoCdKOhyViL03untZ6Hj3>L6VFMlN9)5OEgmv%vR&5Lfc; zZW{<^ybg#8n$JGwf3VWzUME}Uy+WFSZeg0zW; z4c0F)k!)x3&p?bek!)x3&p?bek!)x3&p?be3AUfm2_Pnu$y8H%1D3WdW15s+lWaOm zOn-zuFu944i#sS3lbR@QwLu8CKBB+pLvG@|3Okyk8d{tQ5FIS_C_g!U^jrm_R=(S1oj?@9wsKDhgmK# z6Nu0&b|gC)-l5qpW_KesdoOd7tO}_K<}^FrLt{j-7{NphL|n?v^J*r~sy_aH1cb?C dGMP*t*FUxv6-KWvQzrlb002ovPDHLkV1jT4pY8wv From 4b2c7f7d3caf69d7ec411d5790e7d49b5866cbeb Mon Sep 17 00:00:00 2001 From: donbing Date: Sat, 2 Apr 2022 20:44:00 +0100 Subject: [PATCH 25/66] avoid buttons for waveshare display types --- run.py | 6 ++++-- src/drawing/mpf_plotted_chart.py | 3 +-- src/input/buttons.py | 3 +++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/run.py b/run.py index f9301802..f2008ae6 100644 --- a/run.py +++ b/run.py @@ -22,10 +22,12 @@ config = load_config_ini(config_files) # ๐Ÿ“ˆ create bitbot chart updater app = BitBot(config, config_files) +# ๐ŸŽ oobex +display = picker(config) +config.on_first_run(lambda: IntroPlayer(display, config)) + # ๐Ÿ‘‰ button handlers buttons = Buttons(config) -# ๐ŸŽ oobex -config.on_first_run(lambda: IntroPlayer(picker(config), config)) @info_log diff --git a/src/drawing/mpf_plotted_chart.py b/src/drawing/mpf_plotted_chart.py index 9a2eb539..90a2910d 100644 --- a/src/drawing/mpf_plotted_chart.py +++ b/src/drawing/mpf_plotted_chart.py @@ -103,8 +103,7 @@ def date_format(self, df): def write_to_stream(self, stream): self.fig.savefig( stream, - dpi=self.fig.dpi, - bbox_inches='tight' + dpi=self.fig.dpi ) stream.seek(0) plt.close(self.fig) diff --git a/src/input/buttons.py b/src/input/buttons.py index d33a4dae..eabd26f2 100644 --- a/src/input/buttons.py +++ b/src/input/buttons.py @@ -3,6 +3,9 @@ class Buttons(): def __init__(self, config): + if config.output_device_name().startswith('waveshare'): + return + self.config = config # ๐Ÿ‘† map button actions self.BUTTONS = { From b079ca4384749374df8e66c0f758c7bbf0a854f3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 2 Apr 2022 19:47:13 +0000 Subject: [PATCH 26/66] chore: autopublish 2022-04-02T19:47:13Z --- tests/images/BTC EXPANDED.png | Bin 2213 -> 2321 bytes tests/images/BTC HOLDINGS.png | Bin 2329 -> 2390 bytes tests/images/BTC OVERLAY2.png | Bin 2350 -> 2421 bytes tests/images/BTC VOLUME EXPANDED.png | Bin 2177 -> 2303 bytes tests/images/BTC VOLUME OVERLAY2.png | Bin 2316 -> 2423 bytes tests/images/BTC VOLUME.png | Bin 2264 -> 2366 bytes tests/images/bitmex BTC 1d defaults.png | Bin 2297 -> 2362 bytes tests/images/bitmex BTC 5m defaults.png | Bin 2083 -> 2140 bytes tests/images/bitmex ETH 1d defaults.png | Bin 2250 -> 2288 bytes tests/images/bitmex ETH 5m defaults.png | Bin 2103 -> 2145 bytes tests/images/cryptocom CRO 1d defaults.png | Bin 2126 -> 2189 bytes 11 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/images/BTC EXPANDED.png b/tests/images/BTC EXPANDED.png index 4d1e68d0ea60bedbd434ea9b1c140eed4ee0add2..8ead32f33293eb11750a345df85d90decba09956 100644 GIT binary patch delta 1562 zcmV+#2Icvs5s?xhiBL{Q4GJ0x0000DNk~Le00039000262m=5B0K~=sVX+|$1Aos+ zL_t(|ob8>9x~w1wMy2bUSq8Is52vdXLBVzg?Vd_f2j!j_7<(GDucE*p?g1XxNV(JA%a~TMffpB`K zxGk6F*R`}GKi$bdpbP}cKsdc4e*4PFGPmA6gr5uq%0QqD1PX*SdoE1_nSX-YwOWH% z^YHx5VwSBzu`kF=-!WT5b_SC3g920B`S01Q@wXHf0X z*t~WN;x(=HpNM@Ki1U74=}5Jhp|#z!9fJ5gBY&@w2Z1yCZd-hE z>}*H%?_Z{S3%>3V7R&cWh<|}VodO{bjd?*#pvgh7XL|#IYvEq7e-MDz`hvlTK|$aG z$^~Wy1rdT%B4&9X3Pq$w0^!17kinjNuH2{~AOy3;p)nhXqznXVS`ad3c^d@y=k7s4 zNS&OG*cZZ(+Com;r$MNekAVCTyBM=o&wb*h#qJh=C)~KME8I=POM{5$br9rfY@g4~Bq=9HYEb<`yeEM?`+!G7_gd40O zKpYJC9SGSaiu*8oZy=mYfZ#1X17Z=8KjCSIbcyXJZypH5!}6a1@l*x^rGf}|lKRzIx~K~RoQzpk5#1r- z{aJ4yLYzto%#>8`Ai(+C`^saYdk|RpJHHL@7=&XZ;-y1lUFi_SOEM5B4Fts>9)Ktf zM~_(+^dAkvwo|}%tGcjVtLh-m64Dl^(uV2zIk^sggHhmIZw1 zAfg$QXuG=+Q9=d+WgwVNfspe@U(^u@Hf$ybL75DMfrv9r31Sr}nG8fUwfaF_2JuxH z2vj`~K7UX(2)$Dv&Mp=~Vdsc3 zNK}g*jV1$ustlrb%(9#YXyQ9E5GVtIG7u;OVKSLaCR5LnkqMe0NLjQAgpgmg=%!zA z1jw`IO*5rx0;(w~)`k6xWfZvbP9QW!w>aO%V1EJjQ7jP3a#P5!S$Kt!DOnRQmSf=; ztl=?;&@2R-u(03`1QWGQwb0JuCefYP5|HdnkZ6N|lE6UZ#e0@4d>4aCSO}nRQ4B)0 z@cuCXv^(||NY~_&HAOB{C|C|~yK&}e0`?!mTZqEq8Sy;;w4YKI-Ng6J&Z3**hAEaT z2XC4f%)e)uc9ODOFY#)jdrHI1Skm4y6}?vIg3`~qnJ3`B3tf10XEDpZ`&1jmQ-6II zG7!h^GU~fe2I5H}199vwqrUs}A_$YoWHOmdCX>lzGMP*!lc|dS0LjP`{bpW9TL1t6 M07*qoM6N<$f`X;M761SM delta 1454 zcmV;f1yTBu5~UF#iBL{Q4GJ0x0000DNk~Le0002=0001)2m=5B056;8NU9mV_V(hN1U==-sJABuFdslKy8;J4vFSbd#E0fKB+XeF4J=`JycMZ=~H~ z@5|PQJr2}EM6x<9%m2@^ecC?%F94RyEtifpvLC)4h5&&EBA|8)`oMoDHNK5!X=rpn z)D0KuLoqK|L%gifrnMztPih&1W`9a4jC2rRJcC}fFhU2M9_M$F?Haw0qX+!XLn6`$j(UfX~!rnPx3Co?28+aNko(6*6w%a1((@8!rE zhJH^I+Sp(`=mZCC-9JaP-Tw>)z4dlT=r!CE`qPR-e{dvX(EC$X*cKmod>DaV_DAcq zSUQfpy!)TfTw?bw2kow<8Gk3!TJEN;N6cxMom!VBf=u4IQfj;EOZbSR2Wb@DmS=s7nrHyp)PF6?XfL2Wt8oGi`%4`h* zEk9`xJ|`y4twSHud0V*FPP2X9gjUb{eL%Abp@-(-7Z3>WC1?yTyno+@{>g@3=nDkA z(ksw~(!b$3S3+-J4B}ssfnfLeE;OOLDg#5Cy}SU;E*7S{`$8We#PFq?T@68JIuGu> zV?0g#hy3ahjy)Jp+VN$~Kh%Ui-plD%MCl_R zw7Uzsf4rv1-)x9yCsm*+f1)H2GO8(P+#?O}Zmipa-dig2UCUOWfknE|?!A7h3|&SO z`ZyDR0R3Pf^c-0}nb7PQzYMKTT^dpZI_cJ4LLct!T9bh0kb^->`;gEvA6-IUSXX@{ zK{qr86FOmC^?z{-`rX;%sbWwUp|@+DnU3I^&}CH%I`+KjRpo>BSMox+Kr6V@Qq3!p`-cXLK=W}S>r|`R_NRI5Ok8^0$uG<1S+@&l0J+kXQ_$x=q z3)x7VLi2=osT^4jCn_{6j6fIFYtXV#ypl5Z8V|#)`VUQybX^V4GCQ}N0v>Op}(LBy%u=e*wE33pe}3F z$*5$3rld(H+-J~2CXWB_iM{;eRvE+_Gj*3Atnkk~Zz@YVf*sRcP`{SkX;~Se-_DWc zQwLqluYU zHZ38DpRDR8)#B&3n#r=*EwO5Re2|`fc$-IaeQ*P2SO952kad7>b1+eSxP?vX6_XpY zgN1-qQy6~N%&|QT(fo$0g_f>$0j-+oGq(hpjDLd(&6dD!N%$lb`SRS}UpGqVp9<*~ zzqk8ipN+p|Le1j$QO%^fqdu4>5$Rx9xh>osR2de#!gXJ{EBU8eXD`p$CqC2CGW3b; z$=e-E!3zmZ*3`L3iU-V2hkPtvV0;1-fIjy1za0`f$PK{BmEC6sXM}qlnA8CMT zdn&l2R@?Ufw;fx@_Wz49+uRy-60kqM543Y^7zd1uH~Zo?`1`YTeCR=qj|L)=dCJ}t zw!Kxjz0KoMlsDi@#~L-tZxLQQfPXU(yEay93!$PtgjwF$oLq}A^ue%UgT@FqZZKmv zF0d9+!GeuX&h0b%)pgmX2cHJPTg2^MV>KxV)a@XEy6L`cb#}fyF4Ic!n|5HH#1}nibn9(($%>V2bk9H*>8e~NkO0# z1WLv%n?ZoR?|v!>u@BMIj0nVG>1e(fMD)nZK!~26J>R!{8Hl|)XT|?4h)tXttCx*Y zLU8<%AgDT6d~nBEe@TLfUT>ZYf=3Y?2zF(R4z4c;;mr%a2Vzf4gOD`n5k_|qlcSgN z^0}u)K^$K}X5YNsZGVWtw?GgLv{4Xf!ynv5yjOsri&Wa*be~ZQ}R|L^}sI||P z4K?F1Fp~q}&d1u(1tX~oAlQ|vpMdpZNUpQI7lgb-j{#xBwz!*FXZcWf_3I$GCpUX#6Rbyo$Tau>gv{=@&pj;(!k7dIUeXc}n~3}gPXW@+KfVNrvsPUI zg4d)8gfR+&c2@^sGKZXf9E95sdY*Lg2oNRyz00A?@QENU`hNw89{v@CNq}%O$@tY- zx)=Zg%t_30h<|8?g!8i{K)5*7d0?iemIMLD>iUH+)SHnB(;ChOY*~uof}DYwR1V zfQaNW!@q)vgP{1s1rWUp9*IcHz%PRl(vLsvzdL@2Jrr z2FEP>Nm~R;L7)@_N!LL{9^!ud{rN6a;FEZZ_F3XjEatVwP*yX*h^$IW2CaAnI)t zM1Oed+I3P8SBx628t+yELzPOUN=YuuD_YAN96yY5If2;En#7C>a%vGiI$`w3`L3m|Ist8kc6-!n+5O8sa7;0T#>>^Pb>8Z{!4$TEd~5TGq{Ea z0e~MmswWzKbud-{JZf}Z|NmXj*0X*6H6XhUtZsBW9sv8t_w5S<3ZYm8%m;4ppPAJ^ zbmsv8(>M&s^Z=)rm)w{Bx_bfcU4Isb%(}s6ik&Zy%d#9lQU^e3;H`83 z>wr=E5J z06GC-wrA!9g?z_jWj=r*sFn}b?MLPW9sg4RfKE4oY5R~{0KEQZ^?;E20l0&4b4}X= zV26_rF}`!;@sOWf82xgBUjdNSm>L}b2S5}+hI#RTR--NeXvVcCfG76t0o?uI09gK| z+XMh$PEz^-4NM8%JZ67@#(x7~-&(jf1ZW>0ROor7tA+!x76mBl$;^II`yK%KY!U!K zgPYp}6x;t*0H$?v3;?^3hJuEoA%06&%n0PZ)>UI2VL0A#^-0AxY$0H|L8kd?{X4}iNs-y;Elx&IIVCzT0w0^JwB_ApDw{pSF%hgbr@sJQtJ%hGZG zVF0Gp*Jc3j!XSW4U@)D(1ArkJ0(TI63Vi^cUsvP5uBGtC2isoRp6awF0R3?Q2mr#K zxi19Z4X1_JoeB_GCx18@fSiI>J(L8U1Nx-Ipz_uD6nX*B`SdlJdVyCD;N`nj>6_iD z09c?F0>G-1bC34|lMdCpv7F#t_-g>D^XIJ-{6PRgtq4HQKD(+E03GiEfbks$z`ITm z9|1Q25D7`O0&tH&naAo9!<0DtD`qM&eMv^0R!jNJhs z>%(t6es~c8N`(Nh2y+1F2IK&cK}`q1+bWdd7~08o*fU>C8uyq;L8i2yJ!lt_p) z)KUOInK}2k-+vum3jn^xNaO??YAFDU^?(Vtz`ZpYKp?=5IsoiStW3f?0F5H|=LFj+ z2q2Pf@Pud;&=jgwfE^VFkoBk`0XTEY_W^d)0U#=o4c-$#S^Wn<9)QZ03;|HE?{jeg z)Bwm$VvPn+Q9lQObI1e0n_FVq9RMVzmn8wbQab=RV}IBg06j*P0-zVUGjf72jw=^{ ze#24(AZwjq7d7zT008KFM;RZ3bAm5jBmnUBWheo_?)FpvKfwwY^p4#DfK=iD_zQs< zIl&fAWa^|4K;Hm+`ws%3LjGO(r{4!43hM!k$O*P^;srpnBmZn^RDiv80I1CY{3#27 zc<++sw|{x0os;Pu#0GJ)X5b<{nu>QwX>f1k_|u_ zWnN0BrmXm~#d<&fk}0Itodfm~%(SGhi^nMA7LZ0@jJv4ZZ&f7Yj0&r$sAFLO{{ZD; V6^sqhkQe{}002ovPDHLkV1kX(sulnM diff --git a/tests/images/BTC OVERLAY2.png b/tests/images/BTC OVERLAY2.png index 1c996523935953439343281ba3b46bcea64304dd..4deeca493223993e523f615c70518c4047fa99db 100644 GIT binary patch delta 1664 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 IM6N<$f}b4zR{#J2 diff --git a/tests/images/BTC VOLUME.png b/tests/images/BTC VOLUME.png index b57721d95d5528ec4f95c42c28bb0bf2447252ba..532043e0ea58b4b1b86c004cec031c23010674d0 100644 GIT binary patch delta 1608 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 diff --git a/tests/images/bitmex BTC 1d defaults.png b/tests/images/bitmex BTC 1d defaults.png index e3b64a2dc5ffd1581c0bd3469e9995905801747d..99325a1eb1a3930254b2533be0e7234d75e6b3eb 100644 GIT binary patch delta 1604 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 delta 1324 zcmV+{1=IT65Tg(wiBL{Q4GJ0x0000DNk~Le000310001^2m=5B08&#hps^tf1AheJ zNklGlO+nBcON!zyt0BPeZ%&+Y0 zAk?{9`~};i4~YL?q!6=>VaG9`0ii;mK=w_gwDXG;Mr89y(P#<)5WwV0fC50K_9m4x zp!nUP0AS)6^CTxT00N_TDa`-_kbef2PYcC403ks3X!hs%^E%1B3Ir*D)d8%Q0zm5= zCkSd8)Y`dqJ4yiv0pKpwaZ!se*g^ml%iFxDqd~UHXYJhmmI~r<-4}GvBL+YW*5sSJ zST6!VJ_m$57iot;O(C$`CqY0WeILqO2?Ma!7WLu)(0T}~@t z3E~2X8=MrG7{Rhb0A&UJ?|*OoKmQRoGySgyK&1e}pwl5B4FHP6&OZKsssad}w_XU1 z5(QxV)U&p@Lwa6M1E_lbHOK>i+l&G*_-ybbiY)-RKoo$DJ3V?dD1gcP{}eL;vH|?t z@v8xx4^RQHa!R>p1)uI696^e3qZ~a!+Zewina{^k{R{RYP+(y%hT@ z0Fo5t0ie@l0)VF$#a%Oi?1WeF1VCTfI~gee1+WPKFt-471tl3k^7&Q(HuW?Dz}zQy zdjmkv&t^#hP`3&|0e@@)AceO#fY4Gb`_WDx0T3VUbO0C--VgvjPG1DPT;T(t-E9e= zg%)Qy<|5jU13+sN4glcJ&Dk@`1_fs0X!=ffNKj;9)Mk> z05X8X_1RWRoPRE>#pG;r07cuWWswrY$FvXttfc6N0l;wvq$9oA!>0hCq^KW$Eh+k8 z0QnpM#o=IH383-Zr85onE&xsgA3TNLEL~s377+ld#o$K)D1aRS41D%#6u>J1cufZ| z*3Wo}2QWwqpjs3p1yC&tk^-m}1xX5koDz%Kp&%gu%6}{nFDd#Z6-m*Q7j_Z?0KX|( zzVaahK$#RZyrifQDS&2DRETs2REvV70IEenQUKMWAjupxk^)#Az-lRg)d8%Q0$3fu zYDodWc~kVuDw9EtjL?S#Wm>$E6#cMxZ;F0eoHs>fN&(zVioV|HZa(1kMhalMhs})? zz;q9r8-FPP3F<+oQmItp1SD~0IDahyMXm+-M$r+|Pc+I|9i|yy`Om5Wm9H5YzEQ9P zo=M&d(8pK;c+edHQnrl`AltG5l$qUG06J%Yxn$)1;5Qg~p3D_b*EHZ9aLLFQnI`ER ikYDuN_7B>&(;o-l6gf^-qN@M^002ovPDHLkU;%>iU@eRQ diff --git a/tests/images/bitmex ETH 1d defaults.png b/tests/images/bitmex ETH 1d defaults.png index 510cb34481e8c2c31e5bce3fbe58e50e093fc243..375175ed4a80b0927f59e4d63e090f9aac3d02c8 100644 GIT binary patch delta 1529 zcmV9c7q@chKcY0&^yx*B624n)cj{_m68CTh!R<6jA}Ol!1ZhXfBqA2(|%xV zD$u8-#@4M;tcgS$_gMy}0|udJh1j05;7XL7UBu8_f7{o#BWL64t^w zB^OJ97%q0sox6GOF<@|)CAW#Ydr65qtfk+K^>!>)j+%kZY+q}>ycaW(PG`DVIZz$8+A>wt32rC znAbxTgezM{5+M9jV`C8B<$rUT$IE$*195u)4hTOevNi}{!JO-bKI*LJZD3d*grT}g zFE4z6xNA8OKpd{Bi^VK=17WBmTyL(@-vR+FgwMB)3zktt~+2IG5ce_s%}36hxr0`nJ?A);46&>aW|5vr4P#L9&$voXsRKrn0h(47lT;a)f}b5<%l z8=VV6^8CP(=ngI#vs?^>z2+7aR4P6kC1RFY5Y(_OLAY>bDt~54&3k}g1IOMV5-I@! z{;a7J1e;{JTZXv#8X(-PNEk%fG)v$|6U;C(?14+H>_w{5(nWIA9wLPApG68qPN$CK!332t_Z>&p?m5W5VRk@2W|&Z`SF!!T@Y>l8$Q1BCxAn zAc|ZZ?hfXxmkbCy4Y#Eva+>u(@Ckf>k6{13BnP7UD&b2Ogqy$%fJlbwp0%Ko+B5(J zn;4#AL4r!n{Px1vKx7YIJXAMC>w@r0>8#}h{|^wDsDB_ZQ5Xb;>c;3T5Y<=w8B_gE z*9Si5Pt|97ibjunN#BwYj=CB`Nu#6_sa@ss@8nffM_mYWT;L~UauDiA>m|-;vnSQ zZ=u08RSVF7sHrX#|RAHkao>|v!lY;0mQV{hv z3gVe{?KTYu@d-6BRH;;|nEYjV=_RZ@lkX+B5c=`W9FR2$85NY&A{*4@tp|FE8yVYp z79h{S^NsQ*A)_L*200Mc|FxDk*CVcIFsQ^mxR#3nja^Io>)N3d_obzHv;cFLB^=we^ZU-8MUcpEdEIl fDwRs5Qhi*1K+P1aJ}UT}00000NkvXXu0mjf(np(I delta 1491 zcmV;^1uXjT5y}xEiBL{Q4GJ0x0000DNk~Le000310001_2m=5B08dr`7_lJ?1AmA~ zL_t(|ob8?2f}|h}MG61^(K9VuM3%5bp~!u3t4at*M2U2@QVP_60l>8YvwKOaBLuF- zw(g)DgCzi5=fs>B6PDX_A1HSe{HI=8`<1>HiAp&O+XAqQH2~NJM4R`M17T3%$1cTId&$u?{C+XFGwswAHM-Y^QT;ZY2P|4&ZAo0RWI{-zgoV_=zO| z`a+&70dP71tW@xEC3DAWeo_(uePQxR0GtY-)Ooc4AasK9XmSm`2VlW`z<-}!0|2*C z_lW=im{MZoXOFTM{!WnV64(a7O#)zEN^DaAePN~qi7lcfQhYrAPRg$4rzA!Ibl1NG zK>MwO0hsbl$3pV|8vsJBn*n6p&FNJuVg}HEf7u^^d1WU61i-Wccr+P6d>bSK_>9vU z0K!a%@Rs`}jh2KS|6%}_dw)_@-0TLw(C@W~!Ghd{uh#|uXaHpvxa?ui7(k@HOMs&V zfLnpxo0AZk1b|)O>u=(mmJ{3sfbu8atU|D7005K<$J=TSfJfICv2C(zspm+EWwjE3wB81g zE$=e`Q&M6j_rwnVms`NE0`N)plKVV>$WQD4Fz zlK=ex)QY9t0FeJK0Qax6=@S6f{0<-$l+OP$(kv|rAo}_^fRGNX<^*Y-@2ddjq>4i_ z$nIqlB5MI~x6TPoz^^Jf!5RSb!FB*tNC;o+d`>V8Aao3S0)GhUz*0^y^b>K3=->v44~CNX+P!SaZ@6f zPSEcF=xilP0Do~Rb1eXnep;Oh!0%_CRgVYI<-hB5B>?IG$d6Qw0lWf$;sTFC)Zqa9 zK)N4*8xGe4M1K44ymJAdf%HfVK)={tH(L*YP0!#2d(-1$IVJWizBS&d=9h~u0Ht&G z=08|i4?sR8#-jBA%ny*;{{w(KYPSXf_>>rrz5)Q$TYooq3z#77vXQ3(P%axu01!Pc z5`8bPJOF=P2!Q1CGST<)5&$X#AkN+C`>RK)?=6&0s7E6e0U!VbfD!=51Hkhy2!5wV z$*4vE_t7BuX>zlFP3}Fl0*D1}1$OVHgvd0F0RUhB+BCUkl?HGL)i;yEh5LHBf4WN1 z7yx_S+kgAR4_yM6`jhr*BLIcDC1U`XbAt1f2Qcn-3o%710C?OoNC0f*mO%nwE4K_f z9srXBz}EqMEdlU#0PpFR7xPCC0-#j*<9}UG{q#2>|vI7B>?JI2B!2+dOIX}UpP(LeB9TaRoF2auLHWI; z=dVk^(^Jjpn!s5PFE%2S)FPKG#kB^%$QvnFX_RoTK#Ps)CMhG5S%U%q=hsZSt+fD? zW%bkWC}G7$q?$a99&>`n6lN2Kx=;!L9|;*iY(zYjkCI67k%d~nPas2W-Z}VI;?vFb t^C*%qB3uHo5k$WQF<0$=yCQkV=pSkm6e>Spm+t@o002ovPDHLkV1lT2jBWq` diff --git a/tests/images/bitmex ETH 5m defaults.png b/tests/images/bitmex ETH 5m defaults.png index 77a5fbbfaf24b7c84c21674654c1fa241e6cb270..5add4b94e49e0cd39436cd8ddb9c01459c6d112f 100644 GIT binary patch delta 1386 zcmV-w1(o`@5aAFZiBL{Q4GJ0x0000DNk~Le00039000262m=5B0K~=sVX+|#1Ahe{ zNkl?3gSgS0!1N03b>?4#4 z74O@RvEIqP0P6};35F8U6N&&70T$4^9^DzrfK}w~KZ-faCj~_SiU1S=h7zHqs zot!?vIL%qiPJ+Z3f2$Yt6Okynxd@}~{s*%K(}_?MJl0JK99E}2_MqgaT7)zPNidX% zWZJ~R)E68~@YwFBMmG^BPz0a|&}D+BM8s3{sLuKxZ}OLJm53Qi1e&J*^<+zZScHsl zlOpgh`1KGJ;mdxM91-f&_8`sv&5j__d^keB7$KeMYw|1Kw(4?ZO8Tc!eRSp zpopz>G>eBvktxz5TGi>`Qc^XJZWM^Pp|QM2#9GsX%W{g)PsRVQwiKbWPgi0d5!Un< zAyWXT%i&B{iHIfIpHYY2B24y7S7Q+;DfN)M9oaKoLx^ZTVH#$6QO6i?CDHbo``tVb%zMmQFQtE7*Ir?@6n7U!rAB{BAn?;iiqztx+S0J z6C%RZ6A^NQEiGb^#T1uQnC}s>CQpgb>lAU12$a#`vx6ey;x{M)Py{Fzfs5-KL`aoB zCL$VjQG{fYTP1b<^?w|NBDVAxS|vmr4?puoU_^0#rrl1Jh;=~@mm>5P#F>c2REpT$ z18K*Jh$Yy#3!Fwo(5jyo5%fmo$5l*9gt|$hH%5U!-eUakmH`Ii?6y0(bSz#RL!b=zo#pS40@~Ri?U!a3;U{=rBf`~I z#?-%GbG3-zDTAp+{GbT16R|=OfFb}z0Ez$<0Vv|GT>TP70E%$D#KTP^$z-M*6agp# zPy~35h!u(e6alJgn>Eulg9wQ`ndy3&h&pm+x~34JX1e4gS(!^jG}ATlsc{TN0Ez(7 zSDEI827drW0Ez$<0Vo1c1fU2&5r859MF5Hb6agp#EXl>H_yL0oVklytbnIiIi2npp zM0pHF?30dtOwC11L4`v?2sy$(H4rW52DvY#<^{QeGRtv6YBs;s6SD5P39J4b>}63= zkjW21oXrc7R93yTF`*B>LWDe(lr2JHvqh)|`#*q)$`)aYg0^zPr!{g)N<9B`H#hVV sMM2wQW{B@2eA{c*M-V~?A%u`Le{J{_?LB3CCIA2c07*qoM6N<$g4rZ;pa1{> delta 1344 zcmZY9Yc$je7{~GFKQqi2>`Y@QV;Z;7MY$#9lp5ulOH-7VQ)ySN#x*&yMe`rJDYi!K z7?(lr<$twq$tDA2Iy+dbC$c7<9*b*vP}toJZ_j%o|m4&(7l?#l-tOaB-^d-PvY2 zx#{eyJ?X2{t?A6bQ!P*OG+<1>#7G;WvdbAP5}>z>w+=JD5!)Bgvp*H`n+`g6*=t&0 z^^phqLH z*wR<>RB>~2dtWM3<;yB_|r9>#9%O4cft3RwF0xpU{$$Ek+S^MMUxrU>310o%Ern!p(G95xzH*(cK~y z8owYLg=^u#TVfz@r_xP!T_K_YM@S7I?kI<(b}o%`FTGX=4cr?pM$%s<<}h52(h&`6aHdqlrqi4^rMD)hi! zLQYN4Bfjrf3UZn_JsMpjZUR%a;!ViKk6Ffn?aY&dPJU?{e%M~ zK&Fy|Ci$K~f9O5j-cj<^MttRxXme~`Ajpbf)s2CK)fA;@InrQN?m*C)w~>A!!(qU> z!_t4n;CO|Eh5>uiAWOZ{76`&yctb%0fitz%w(UQnA~-mK@&48NzdZCfB;$)i8lQm8 z(8SB4N6f4pXwdBy92qOgXT_QbJz{ghXSR9NGWrdbwfaY$(}wa_q(ol(`&Zp21DNiM zJaCni>R&IcPPW&H)4iToO$aUC3bMOVS;&^x$Dv5zOOPvY&rJ*KnM+|8MCr7?h14!| pyHfZ}627@Q5se7@Z4phJ)ukxK^m<-;y2jUS^mO%gsoEKw^be_FLbLz? diff --git a/tests/images/cryptocom CRO 1d defaults.png b/tests/images/cryptocom CRO 1d defaults.png index 9db2c25a5e909da69c15ed228fdd28cd53d1f008..1ce00c188e6a7b84af0c73cd21d17d49605ba3ee 100644 GIT binary patch delta 1429 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 Date: Sat, 2 Apr 2022 22:57:25 +0100 Subject: [PATCH 27/66] formatting --- src/drawing/mpf_plotted_chart.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/drawing/mpf_plotted_chart.py b/src/drawing/mpf_plotted_chart.py index 90a2910d..de4522e9 100644 --- a/src/drawing/mpf_plotted_chart.py +++ b/src/drawing/mpf_plotted_chart.py @@ -1,4 +1,3 @@ -import matplotlib import matplotlib.pyplot as plt import numpy import mplfinance as mpf @@ -6,7 +5,6 @@ from matplotlib.ticker import EngFormatter - class NewPlottedChart: def __init__(self, config, display, files, chart_data): self.candle_width = chart_data.candle_width @@ -91,7 +89,7 @@ def date_format(self, df): if(candle_time_delta <= numpy.timedelta64(1, 'h')): return '%H:%M' elif(candle_time_delta <= numpy.timedelta64(1, 'D')): - return '%-m/%d' + return '%b%d' elif(candle_time_delta <= numpy.timedelta64(1, 'M')): return '%y/%-m' elif(candle_time_delta <= numpy.timedelta64(3, 'M')): From dbd24909e56b304069d065955be4aa3adf5b4486 Mon Sep 17 00:00:00 2001 From: donbing Date: Sat, 2 Apr 2022 23:03:32 +0100 Subject: [PATCH 28/66] fix datetime comparison of unixtime to months --- src/drawing/mpf_plotted_chart.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/drawing/mpf_plotted_chart.py b/src/drawing/mpf_plotted_chart.py index de4522e9..b579441b 100644 --- a/src/drawing/mpf_plotted_chart.py +++ b/src/drawing/mpf_plotted_chart.py @@ -90,10 +90,10 @@ def date_format(self, df): return '%H:%M' elif(candle_time_delta <= numpy.timedelta64(1, 'D')): return '%b%d' - elif(candle_time_delta <= numpy.timedelta64(1, 'M')): - return '%y/%-m' - elif(candle_time_delta <= numpy.timedelta64(3, 'M')): - return '%y/%-m' + elif(candle_time_delta <= numpy.timedelta64(4, 'W')): + return '%y/%b' + elif(candle_time_delta <= numpy.timedelta64(16, 'W')): + return '%y/%b' else: return '%b' From 5ee147e041c6262b7c93d04227f92f19f60988e5 Mon Sep 17 00:00:00 2001 From: donbing Date: Sat, 2 Apr 2022 23:03:53 +0100 Subject: [PATCH 29/66] formatting --- src/exchanges/stock_exchanges.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/exchanges/stock_exchanges.py b/src/exchanges/stock_exchanges.py index 0ac0125c..2d46678a 100644 --- a/src/exchanges/stock_exchanges.py +++ b/src/exchanges/stock_exchanges.py @@ -98,7 +98,6 @@ def percentage_change(self): def last_close(self): all_closes = self.select_index_if_number(self.candle_data, 4) - return float(all_closes[-1]) def start_price(self): From e7cd78df0b5b3ab56fd97707643a98be3c3e00a9 Mon Sep 17 00:00:00 2001 From: donbing Date: Sat, 2 Apr 2022 23:11:14 +0100 Subject: [PATCH 30/66] update notes --- docs/notes.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/notes.md b/docs/notes.md index 465b259a..ff072cb0 100644 --- a/docs/notes.md +++ b/docs/notes.md @@ -1,13 +1,13 @@ todo: - - ## layout - - fit candle count to screen size - - work out margins, calc mad candles that can fit and generate date to provide set of candles + * fit candle count to screen size + - keep an eye on the overlay least intrusive position algo, seems to be flaky - ## multi-currency support - button to toggle between curencies - multi-plot display - overlapping coloured multi-coin charts + - ## impression: - better button actions! - make these state-based, so photo mode behaves different to chart mode From 9b31382649789f7595981e691c22514128ac2276 Mon Sep 17 00:00:00 2001 From: donbing Date: Sat, 2 Apr 2022 23:40:25 +0100 Subject: [PATCH 31/66] better label var names --- docs/notes.md | 5 +++-- src/drawing/mpf_plotted_chart.py | 13 +++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/docs/notes.md b/docs/notes.md index ff072cb0..bac48539 100644 --- a/docs/notes.md +++ b/docs/notes.md @@ -1,13 +1,14 @@ todo: - ## layout - * fit candle count to screen size + * fix expanded mode + - fit candle count to screen size - keep an eye on the overlay least intrusive position algo, seems to be flaky - ## multi-currency support - button to toggle between curencies - multi-plot display - overlapping coloured multi-coin charts - + - ## impression: - better button actions! - make these state-based, so photo mode behaves different to chart mode diff --git a/src/drawing/mpf_plotted_chart.py b/src/drawing/mpf_plotted_chart.py index b579441b..b58d27d3 100644 --- a/src/drawing/mpf_plotted_chart.py +++ b/src/drawing/mpf_plotted_chart.py @@ -59,11 +59,10 @@ def __init__(self, config, display, files, chart_data): _ = a.set_xlabel("") # if config.expand_chart(): - # for label in a.yaxis.get_ticklabels(): - # label.set_horizontalalignment('left') - - # for label in a.xaxis.get_ticklabels(): - # label.set_verticalalignment('bottom') + # for ylabel in a.yaxis.get_ticklabels(): + # ylabel.set_horizontalalignment('left') + # for xlabel in a.xaxis.get_ticklabels(): + # xlabel.set_verticalalignment('bottom') # ๐Ÿ“‘ styles overid left to right def get_default_styles(self, config, display, files): @@ -101,7 +100,9 @@ def date_format(self, df): def write_to_stream(self, stream): self.fig.savefig( stream, - dpi=self.fig.dpi + dpi=self.fig.dpi, + bbox_inches='tight', + pad_inches=0.0 ) stream.seek(0) plt.close(self.fig) From e9860d448f07ded81d84489fc581e935449bd356 Mon Sep 17 00:00:00 2001 From: donbing Date: Sun, 3 Apr 2022 01:27:11 +0100 Subject: [PATCH 32/66] split mpf plot test --- hotdogs.ipynb | 215 ++++++++++++++++++++++++++++---------------------- 1 file changed, 120 insertions(+), 95 deletions(-) diff --git a/hotdogs.ipynb b/hotdogs.ipynb index 5d249fb8..c16d21b3 100644 --- a/hotdogs.ipynb +++ b/hotdogs.ipynb @@ -23,7 +23,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 10, "metadata": { "id": "TGhh4E4ctNiS" }, @@ -43,7 +43,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 11, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -57,46 +57,46 @@ "output_type": "stream", "text": [ "Collecting git+https://github.com/donbing/mplfinance.git\n", - " Cloning https://github.com/donbing/mplfinance.git to /tmp/pip-req-build-_ku6i39v\n", - " Running command git clone -q https://github.com/donbing/mplfinance.git /tmp/pip-req-build-_ku6i39v\n", + " Cloning https://github.com/donbing/mplfinance.git to /tmp/pip-req-build-eh5m4bj3\n", + " Running command git clone -q https://github.com/donbing/mplfinance.git /tmp/pip-req-build-eh5m4bj3\n", "Requirement already satisfied (use --upgrade to upgrade): mplfinance==0.12.8b10 from git+https://github.com/donbing/mplfinance.git in /home/chris/.local/lib/python3.8/site-packages\n", "Requirement already satisfied: ccxt in /home/chris/.local/lib/python3.8/site-packages (1.66.90)\n", "Requirement already satisfied: yfinance in /home/chris/.local/lib/python3.8/site-packages (0.1.69)\n", "Requirement already satisfied: matplotlib in /home/chris/.local/lib/python3.8/site-packages (from mplfinance==0.12.8b10) (3.5.1)\n", "Requirement already satisfied: pandas in /home/chris/.local/lib/python3.8/site-packages (from mplfinance==0.12.8b10) (1.3.5)\n", + "Requirement already satisfied: aiodns>=1.1.1; python_version >= \"3.5.2\" in /home/chris/.local/lib/python3.8/site-packages (from ccxt) (2.0.0)\n", "Requirement already satisfied: aiohttp>=3.8; python_version >= \"3.5.2\" in /home/chris/.local/lib/python3.8/site-packages (from ccxt) (3.8.1)\n", - "Requirement already satisfied: certifi>=2018.1.18 in /usr/lib/python3/dist-packages (from ccxt) (2019.11.28)\n", - "Requirement already satisfied: requests>=2.18.4 in /home/chris/.local/lib/python3.8/site-packages (from ccxt) (2.27.1)\n", "Requirement already satisfied: yarl==1.7.2; python_version >= \"3.5.2\" in /home/chris/.local/lib/python3.8/site-packages (from ccxt) (1.7.2)\n", - "Requirement already satisfied: cryptography>=2.6.1 in /usr/lib/python3/dist-packages (from ccxt) (2.8)\n", - "Requirement already satisfied: aiodns>=1.1.1; python_version >= \"3.5.2\" in /home/chris/.local/lib/python3.8/site-packages (from ccxt) (2.0.0)\n", + "Requirement already satisfied: requests>=2.18.4 in /home/chris/.local/lib/python3.8/site-packages (from ccxt) (2.27.1)\n", + "Requirement already satisfied: certifi>=2018.1.18 in /usr/lib/python3/dist-packages (from ccxt) (2019.11.28)\n", "Requirement already satisfied: setuptools>=38.5.1 in /home/chris/.local/lib/python3.8/site-packages (from ccxt) (60.9.3)\n", + "Requirement already satisfied: cryptography>=2.6.1 in /usr/lib/python3/dist-packages (from ccxt) (2.8)\n", "Requirement already satisfied: numpy>=1.15 in /home/chris/.local/lib/python3.8/site-packages (from yfinance) (1.22.0)\n", - "Requirement already satisfied: lxml>=4.5.1 in /home/chris/.local/lib/python3.8/site-packages (from yfinance) (4.7.1)\n", "Requirement already satisfied: multitasking>=0.0.7 in /home/chris/.local/lib/python3.8/site-packages (from yfinance) (0.0.10)\n", - "Requirement already satisfied: pillow>=6.2.0 in /home/chris/.local/lib/python3.8/site-packages (from matplotlib->mplfinance==0.12.8b10) (9.0.1)\n", + "Requirement already satisfied: lxml>=4.5.1 in /home/chris/.local/lib/python3.8/site-packages (from yfinance) (4.7.1)\n", "Requirement already satisfied: packaging>=20.0 in /home/chris/.local/lib/python3.8/site-packages (from matplotlib->mplfinance==0.12.8b10) (21.3)\n", + "Requirement already satisfied: pillow>=6.2.0 in /home/chris/.local/lib/python3.8/site-packages (from matplotlib->mplfinance==0.12.8b10) (9.0.1)\n", "Requirement already satisfied: cycler>=0.10 in /usr/lib/python3/dist-packages (from matplotlib->mplfinance==0.12.8b10) (0.10.0)\n", - "Requirement already satisfied: python-dateutil>=2.7 in /usr/lib/python3/dist-packages (from matplotlib->mplfinance==0.12.8b10) (2.7.3)\n", - "Requirement already satisfied: fonttools>=4.22.0 in /home/chris/.local/lib/python3.8/site-packages (from matplotlib->mplfinance==0.12.8b10) (4.28.5)\n", "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/lib/python3/dist-packages (from matplotlib->mplfinance==0.12.8b10) (1.0.1)\n", "Requirement already satisfied: pyparsing>=2.2.1 in /usr/lib/python3/dist-packages (from matplotlib->mplfinance==0.12.8b10) (2.4.6)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /usr/lib/python3/dist-packages (from matplotlib->mplfinance==0.12.8b10) (2.7.3)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /home/chris/.local/lib/python3.8/site-packages (from matplotlib->mplfinance==0.12.8b10) (4.28.5)\n", "Requirement already satisfied: pytz>=2017.3 in /home/chris/.local/lib/python3.8/site-packages (from pandas->mplfinance==0.12.8b10) (2021.3)\n", - "Requirement already satisfied: aiosignal>=1.1.2 in /home/chris/.local/lib/python3.8/site-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (1.2.0)\n", - "Requirement already satisfied: multidict<7.0,>=4.5 in /home/chris/.local/lib/python3.8/site-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (5.2.0)\n", + "Requirement already satisfied: pycares>=3.0.0 in /home/chris/.local/lib/python3.8/site-packages (from aiodns>=1.1.1; python_version >= \"3.5.2\"->ccxt) (4.1.2)\n", + "Requirement already satisfied: frozenlist>=1.1.1 in /home/chris/.local/lib/python3.8/site-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (1.2.0)\n", "Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /home/chris/.local/lib/python3.8/site-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (4.0.2)\n", + "Requirement already satisfied: multidict<7.0,>=4.5 in /home/chris/.local/lib/python3.8/site-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (5.2.0)\n", "Requirement already satisfied: charset-normalizer<3.0,>=2.0 in /home/chris/.local/lib/python3.8/site-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (2.0.10)\n", - "Requirement already satisfied: frozenlist>=1.1.1 in /home/chris/.local/lib/python3.8/site-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (1.2.0)\n", + "Requirement already satisfied: aiosignal>=1.1.2 in /home/chris/.local/lib/python3.8/site-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (1.2.0)\n", "Requirement already satisfied: attrs>=17.3.0 in /usr/lib/python3/dist-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (19.3.0)\n", + "Requirement already satisfied: idna>=2.0 in /usr/lib/python3/dist-packages (from yarl==1.7.2; python_version >= \"3.5.2\"->ccxt) (2.8)\n", "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/lib/python3/dist-packages (from requests>=2.18.4->ccxt) (1.25.8)\n", - "Requirement already satisfied: idna<4,>=2.5; python_version >= \"3\" in /usr/lib/python3/dist-packages (from requests>=2.18.4->ccxt) (2.8)\n", - "Requirement already satisfied: pycares>=3.0.0 in /home/chris/.local/lib/python3.8/site-packages (from aiodns>=1.1.1; python_version >= \"3.5.2\"->ccxt) (4.1.2)\n", "Requirement already satisfied: cffi>=1.5.0 in /home/chris/.local/lib/python3.8/site-packages (from pycares>=3.0.0->aiodns>=1.1.1; python_version >= \"3.5.2\"->ccxt) (1.15.0)\n", "Requirement already satisfied: pycparser in /home/chris/.local/lib/python3.8/site-packages (from cffi>=1.5.0->pycares>=3.0.0->aiodns>=1.1.1; python_version >= \"3.5.2\"->ccxt) (2.21)\n", "Building wheels for collected packages: mplfinance\n", " Building wheel for mplfinance (setup.py) ... \u001b[?25ldone\n", - "\u001b[?25h Created wheel for mplfinance: filename=mplfinance-0.12.8b10-py3-none-any.whl size=70315 sha256=66d07837a58a0cea5ed2470a7b9ec389c0f65dc3ef39279a61a5ce4b7806c86d\n", - " Stored in directory: /tmp/pip-ephem-wheel-cache-up87tvqv/wheels/7a/19/79/ca6b247407a3bdbf9008674616b262fd49f79b6324a5746057\n", + "\u001b[?25h Created wheel for mplfinance: filename=mplfinance-0.12.8b10-py3-none-any.whl size=70315 sha256=67e804d0b44683f411dfd767f464f100935e04358315f499cac5fff05103cbcf\n", + " Stored in directory: /tmp/pip-ephem-wheel-cache-wu9dpgk9/wheels/7a/19/79/ca6b247407a3bdbf9008674616b262fd49f79b6324a5746057\n", "Successfully built mplfinance\n" ] } @@ -116,7 +116,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ @@ -134,7 +134,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ @@ -154,22 +154,14 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 14, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/chris/bitbot/src/drawing/mpf_plotted_chart.py:53: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.\n", - " self.fig.tight_layout()\n" - ] - }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEcCAYAAAAoSqjDAAANJ0lEQVR4nO3dy3KzNhgGYOhkJrv6krvM9ba7rOgi9VebCHEUCHieGU/7+wTBNq8+SUDbdV3Xtm2T03Xdr/v6r8k9J/UYAPX54+gVmGUkvABY5+P1H1Na9EOt/zlVgQrivIaqyqHvw9znTf1O9L9Dc7+XY+s3df2nGlrfqe879e9da+7fvfbzm/q6pZ+vfcx856oUACjqrVJYmvpTSe/rGGuZLW3Bj1n7HZr7+rXrPfT8sYpk6jjf1ttxrCJY+7luVdGNrS/LqRQACB9NMz/V5xpLe86ndFU5tLy1y1nap7+XpS3mue8/d3l7b5+xMZipr2M+lQIA4aNp5s04WNLSMjPgevb6TEu9712/k6XGekqZW9nUst5nplIAILTdmaK1bZvmRKt7RUvnsc+d5752Vs3Qem19nMXc9dr6OIq9jlPoL3/o+Uv/vqXHKUxdzpl2c0dTKQAQVAoAhI/xpxzk+/vnBsBu6u0++vpqmsfj/QZAUfV2H6UqhcdD9xFAQfWGQooxBYCi6u0+AmB39Q40cwlbz/ef+v5DjiqMtzp30dm321k+rztTKQAQhAIAQSgAEIQCAEEoABDMPmITpa+uV3oWU2mlZ+9MPQvt0vU5y3JZT6UAQBAKAAShAEAQCgAEoQBAMPuIWbaahbKVs59Lp/T6H/W5cF4qBQCCUAAgCAUAglAAIAgFAILZR2xi7myWrc5pc5Zz6dR2Dp+tthvXo1IAIKgUAAa8Vki1HeNSilAAWOiKoaH7CIAgFAAIuo+Y5ajZPludw+eoK6DNfZ+5Si/37J8X06kUAAhCAYCg+wighNeushN1gwkFgL1VHBi6jwAW6A+av/27P6B+otOEtN2ZhvfbtrpU5dpqO2cR+xo6OC03iyr7zXi+h0oBgDMQCgAEoQCQkBozuMMpxIUCQE9u5786GFKD0BWFjVAAmGloosHoBITczr+SYHCcAmSYZcSQruvSs5O6Lr2DH7q/MkIBuLUi10ToB8CJGhdCgXt6/mD7P9ah+7mk1GDynGC4YiVpTAG4paEB4zvMMMpRKTDP0A9maou7f//YD3Do9WPPGzP2viqGW+uPF/QfK+3Iy3yqFAAS+jvjrusu2V3Up1Jgma374vuVw9C/t1p+//ljy+OW7hACfUIBoISTBoruIwCCUACoROr8SnvPhtJ9xDL9L+pQn3+pL/TY8pcytsBBcr+UucdPrKFSACCoFFhmaqtl7Hljs4qGXr+21TR3veAmkqHw7MNKlStj/VupS9bdcVoXwBnpPgIgvFUKc0a517T+VRAAdTKmwDxHB/nRy4eL+2ia3y33KRVD/zlTWv0qBIC6GVMAIGTHFFIt+6FW/poZSwDUQaUAQPhomt+t+yWt/tw4wZz3B7is/rWb3x469sI+T2YfMd1JL0QOVekHQ6J7/sgrryVDYU6rP2fouSoEgDoZUwAg6D4CLuHILpfZKl6/ekPh+/vnBsBu6u0++vpqmsfj/UZRz6s+Oa4E7qvtaq2zUpXC41F12XV2o+W32UdUbG73Ua7xc/RusbrZR1X4/Py5AbCbekMBYCOnGoQ+WL1jCgDsTijcjMFk7mboRJ+kCQWapkn/cOK+tv19vhY/LE5gKAAEwzChQP4HsvQxqJzT8KQZaAZOLdWoadt20s797gGQolIATitX5eoiWkYoAKewZJKELqL5hAJwaf0AEAh5xhTYhlNgUNDdppUeGVxCgfVS01UFAxvZIgBUB9PpPmKdoR/sxVty1E8QLCMUyMru2v3oqEDXdcYNNiQUGNd1vwPAjw4uSSgAEIQCAEEoABBMSQUuweDyNoQCsCtXQaub7iMAglC4kbudKgCYT/fRTWxyBSqlPlyeSoFsv64+X7gXlQJN0/zs/A0AcjTfweOpFIAqGPOqg1AADrfJmBeb0H1EUK5To37XZv8xtqVSAKqXOjW2QChDKAAQdB9xS2a5QJpQoKyhgUI7YqiSUKCc3MyRthUMldu6mkoNFrdtq1KrjDEF1hn6QfuhV69t27jtsawlj7E/ocB6rt98OdkDydr2922loWpBFbE/3UfAm9yBZIO76A26A8dOtSIg9qFSACCoFKDvtaWsdcrNqBS4ldTA6q/+8vcHd1grqIdQ4DZGZ8AMPS4YuBGhADeUqpZMDaVpjCmwFX3vh5l7kJljBshRKQBvHDNwbyoF4JejLs8qeI4nFIBtmdJ7akIBrswOmpmEApCkK+eehAKwHQf/nZ7ZR8A2BMAlCAU4sd1P2eH6GZcnFOCkcqe4LnrKDtfPuLTkmMLzy5YbaOp/IVPPnfI+ANRDpQBAeKsUppz3ZKj1P6cqUEFAYV2X7irquqZrhn/rq36TQ8tsfh8hvdky2ZwpqXBV/Z30y8539WkscgPOmWVSv4+m+d1yL3WmRBUCQN2MKQAQsmMKW7XsnaMd4BxUCgCEj6aZN5NoaNwhV02smakEwH7MPoIrO6LhpbF3aslQmNKCX/McFcJKzpF/HNueizOmAEAQCgCEescUvr9/bhd2xIXR4cl3jpR6K4Wvr6Z5PN5vABTVdrU2F1KVwuNxqcG9xZXC2GBn4vHcAYTFvgJjBy3u/FmOHUSZXZvnuhYaaB79LtTymXJ59XYffX7+3ADYTb3dR3ATqdPLxH2pq6g5bQwF1Vsp3JxB6P9c/LiAbJfW0sdgBaHA4QQg1EMoTHHx1upp7f25DHXj+E5wIcYUOMxb3/nLfS//6L9gh7UaMLEr5/k3OV08ZyUUOERul9mmBlf/f3Da+y/ZOecuMQk3IRRKe+7gZuycZreetUq30w+ALQNhwXcB9iYUKjPUss22nn+eUGiNOEr2E+06ZyGmCKFwJea0X0/XZauXfgAIBNYSCndwVDDMuBrf1MeAsoTCmZxxZ5lq5f53X5foAhEIcCyhcDaZnSzAWkIBNnCqYy4gwxHNXE5251xieSPrMljHCQYqJBS4lDseSWwchi3pPoJmwo7VTCpuQqXArazaSXfd4En47Py5CqEwJjVAePQO4Ojlb2zRDrXGzwUuQCjk5E7KlrhO7pydW2ow9LKtza3/rpUnywOGGVNYYellFLPnN+LHkWcsfR77cdWQhgyhsFCpyyg6ydmLkmcsBZJ0H1Wo6zqXqKyVz4KLUykAEFQK1E3L/IftwE5UCgAElUKljCNk9A8ie7m/a4YnAdimME4ocE6OLoYidB8BEIQClJY5EM/J9KiNULiK3A4ks/Ox49lJ5kC81CVJfS4cxZjClTx3JJm+dgfFHcj25gSEAlRAQFMLoXAzdj5AjjEFAIJQKCB7HlSDvkDFhEIpqfPxj8w4ATiaMQXOS5DC5oRCaXZcwIkIhZyznnjt6OUDp2VMYYwjUYEbUSlMYUcP3IRKAYAgFAAIQgGAIBQACEIBgCAUAAimpK7kuATgSlQKAAShAED4aJp55/AZem7qNc/n6mIBOAeVAgDho2mGW/K5lv6a1r8KAqBOKgUAwtuU1P54Qa4lP+e5/deoEADqpFIAILxVCv0WfKplv2T8YWzGEgB1UCkAEDY7TiE3TjClAgHgeCoFAEL2OIWULZ6rQgCok0oBgCAUAAj1Xk/h+/vnBsBu6q0Uvr6a5vF4vwFQVNvVOuqbqhQej6apdHWXeJ3eW+vHANxLvaGQ0rZCAaCgeruPANidUAAgCAUAglAAIAgFAIJQACDUe0TzDZiGCtRGpQBAEAoABKEAQBAKAAShAEAQCgAEoQBAEAoABKEAQBAKAAShAEAQCgAEoQBAEAoABKEAQBAKAAShAEAQCgAEoQBAEAoABKEAQBAKAAShAEAQCgAEoQBAEAoABKEAQBAKAAShAEAQCgAEoQBAEAoABKEAQBAKAAShAED4OHoFZmvbo9cA4LLOFQpdd8xy//mnaR6Ppvn776b5889j1qF2ttE422icbTSu8DbSfQRAEAoABKEAQBAKU3x+Ns1ff/38lzTbaJxtNM42Gld4G7Vdd9ToLQC1USkAEIQCAEEoABDOdfDawdqBo6mXDss832/J6+esS/+5JYeRxv6mNX/zWlO2w9afcW49atpGQ9tmj+2RW5+at9HTUd+jUlQKAASVwgJT0n5O63xJS35OC2qs1VdCfz2mLHtK62rofads3/5zcttq6nusUdM2GlqHo1vqNW6jsXWc+9zaqBQACCqFBXKtqaEWSK6FMKUFu2RdjjTUAku14sZa8imlW1x7bNczbaOjvmc1bqPSvQBHUykAEFQKC8xpwZduydbe8ii1fqX/7jXV29pl1fi+e26PKcs/4n2X/M1Hb7clhAJAQVsEQe49XruoUt1rY8HU/7dQ2NicsYSnOfPnp/aX1twS6dt6dlR/W82ZWVPr9iy9jcaeN7Q+NdlrG82Z3dR/Xdd1Tdu2yR3z87Ghccepy+26Lnnf62Ov+6f+OggFgJ31d8T9/58rFWBDjaP+evwKKGdJBSgjVZ2mgmBKIAw9Z+y1qWXk7lMpABSU6tbaesC5P4aQGlNQKQBUaE030R4cpwBA+BewISsbphX+7QAAAABJRU5ErkJggg==", + "image/png": "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", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -191,7 +183,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -200,7 +192,7 @@ "" ] }, - "execution_count": 6, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -215,22 +207,14 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 16, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/chris/bitbot/src/drawing/mpf_plotted_chart.py:53: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.\n", - " self.fig.tight_layout()\n" - ] - }, { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -254,22 +238,14 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 17, "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/chris/bitbot/src/drawing/mpf_plotted_chart.py:53: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.\n", - " self.fig.tight_layout()\n" - ] - }, { "data": { - "image/png": "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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYEAAAEXCAYAAABLZvh6AAAJQ0lEQVR4nO3dS3LjOBYFUKJDm+wVep4bRA8q1OFU8SdBJEHcc0ZVFiUzYZn3PQCUS611KqXUaUWttbx+7fU5a8fMPQbA9f5z9Qks2ggmANo9fv/Pnop9qbp/p+rXIQD0od9OAIDD/dUJ7Jnnb6EDAOiLTgAg2GOalivzb1XuW7uPALiGTgAg2GOaliv1uQ7g+bV31g9adhIBcBydAECwUmun0/Wl1EmnAHAonQBAMCEAEEwIAAR7bB9yoVL+LDzyM9X6c+q5AAzIwjBAMNNBAMGEAEAwIQAQTAgABBMCAMGEAEAwIQAQTAgABBMCAMGEAEAwIQAQTAgABBMCAMGEAEAwIQAQTAgABBMCAMGEAEAwIQAQTAgABBMCAMGEAEAwIQCwoJRSrz6HowkBgA+NEBJCACCYEAAIJgQAggkBgGBCACCYEAA4yg12DwkBgKt0EBJCACCYEAB4UymlPm8Um71hrJT6/yq/g2p/jRAACCYEAIIJAYC7+sJUkxAAeLE55z8QIQDwplprqbWW53+//QIdLRwLASDWYVV+rWV6hsMnIXEiIQAQTAgAcb415//RVFBnhADAi+Y5/xsRAgCdOmNnkhAAWDB6FzBNQgAgmhAAOMoNOgkhABBMCAAEEwIAnTnz7xUIAYBgQgAg2GPui8/2Y26P7NbNC7+fs/Y6AHzoeU0tpbbuQNIJAAT7qxN45xbllupehwDQB50AQLDHNP27Mt/TEbwes6eq1wEA9EUnABBsdU1grnJfquJbdhQBcA2dAMBdfWFq/fHP6/z9Qp9U9Wvz/O+8PsDwNvb5/16fPfo6qRMYmWk4YMPsHcPvVPVrlo7VAQD0QScAEEwIALd1+52HHcyKCAGAYLNrAt0o5c/CIz9TrT+nnkuHztg5AIyt1NppN/WFj0gd3WYIGEMG92kh9MnH3lzBFlGABrdfMziBEAAIJgQAggmBjmllgaMJAWA4pZT6LKIUU+uEwE39foPPvsmfXyul+gwh+FuttTx33fS6M+gsQgCIlR4A0yQEgBsy3fM9QgDoUsvF3XTPfkIAIJgQSKaNhq6d0cUIAaA7m7vfdjIVtE0IpLKFlBsz5/89QmBUz1+MWotPEgWWCAGAYEIAIJgQAAgmBACCCQHgtuwMaicEgEP4TJ97EAIAwYTAyLTKwAYh0Klv3TYPsEYI3NTvW+YtjgGfEgLAJXS4fRACAMGEAHA6a179EAI3Zi2AUVnzOo8QAAgmBACCCQFuy1wytBMCLHORheEJAeb5G8TD00kxTUIgl79BPLwrL/K2gN6HEADmHXjxtgW0H0IAAm1W6h1MBwqHcwgBgGBCgHGZi4ZNQoBbusN0BtyBEAAIJgQAggmBZHZfdK1lf719+uwlBCCQffo8CQHgEsKnD0IA+IxppiEIAbirxouwSpxpEgIA0YQAQDAhALzPHdnDEALAv/l7EzGEAHTIZyNxlsfcF59vurXdA69vzLlj97wOANfRCQDv25guckfyffzVCez5jJGl6v6dql+HAI1qLVMpdWm+vtZaSim16XfM72cEnQBwCEXePTym6d+V+VGfOqgDAOiLTgAg2OqawLcqd59nDtAnnQBAsMc0vbfTZ2ndYK1baNlJBMBxdAJwV1cXUVd/f75i9o7hPRV6yzExHcDKPm464OcDOgGAZEIABhXTcdNECKywtRUY3eyaQDdK+bPwyM9U68+p5wIwoFJrp8VuB4t2zR/AtfVvWHn8nS24h3jtgjqbWtgcnz3nf/B7bPP90/PPnximgwCCCQGAYEKggYXjDcHj489DchdCgI8JQbg/IcB1hAhcTgiQacd0jE6HBEKAj5wx5910Ed74Q+jAP7JDQKVHC+8fBpAdAg3s/qDJRqfyvDms1lrcKMaRhMBVhATQASFwlLvPSatUIYIQAAgmBACCCQGAYEIAZtj9RQohQJc2L8IBLLhzBiHALTXvTrL7CaZpEgLc2NEXZxd/EgwdApdPIwx+EXGRhPsbOgRodORF3sIqdEEILLAw2aiHO6Z1KrBp2BA4eoufhUNgBMOGAGwS3iAEAJIJAY6j0l5nfOiAEAAIJgQaWBBu4I5d6IIQoFsu/nA8IQAQTAhcxXTIvfn5MQghABBMCMCnVPgMQAjAQUwDcQdCoGMuIsDRhABAsNwQsLsDIDgEABACXEiHBZcbNgR2Tee4CAHhhg2BWxBCwMWEAEAwIQAQTAgABBMCAMGEAEAwIQAQTAgABBMCAMGGDgEf/AawbugQAGCdEAAI9pimaSql1LkH56ZTlo6de87zWNMyAH3SCQAEe0zTcqW+Vsm3VPc6BIA+6AQAgj1+/8/rfP9apf7Osa/P0QEA9EEnABDsr07gtUKfq9w/WT/Y2lEEwDV0AgDBvnafwNo8/54OA4Dz6QQAgq3eJzDnG8fqAAD6oBMACCYEAII9tg+5UCl/Fh75mWr9OfVcAAZUau10C38pdbp47aCUUq1fACMzHQQQTAgABBMCAMGEAEAwIQAQTAgABBMCAMGEAEAwIbDCjWLA6IQAQDAhABBMCAAEEwIAwYQAQDAhABBMCAAEEwIAwYQAQDAhABBMCAAEEwIAwYQAQDAhABBMCAAEEwIAwYQAQDAhABBMCAAEEwIAwYQAQDAhABBMCAAEEwIAwYQAQDAhABBMCAAEEwIAwcYOgVL+e/Up3Jrxa2P82hi/djvGcOwQmCZvojbGr43xa2P82sWHAAArhABAMCEAEEwIAAQTAgDBSq316nOYV0qnJwYwjn5DAIDDmQ4CCCYEAIIJAYBgj6tP4GhlYYG51lpaXm/P89/53t8+z2/Z+ve+Mx7fOpend34GV41jD+O3d9yuHqs5PY7f0x3ef3voBACCDd8JPH1Sua89Z8+x71QvvVdnr+exVB3NPefV73/L0uuuHbP19b3nd6Yrx2/re/Y2VnN6GL+tc9rzvXukEwAIFtMJrFXuS9XAWtK3VKWtHcYVliqluYpnq3Kf862O55OK8Qw9jl+vYzWnh/Hb87t5pzF90gkABIvpBK5Yyf9kJ1Evlf+So87v26/7WoH1Mr49jl+vYzXnivFr6bJaXuMsOgGAYDGdwJp31gKeWub5157T6/0C7/j2fOjS67Wu1fTqrPnkEcZqzlHjt+d3845jqhMACOZTRAGC6QQAggkBgGBCACDY/wDa8k38Rwy+3AAAAABJRU5ErkJggg==", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -308,7 +284,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 18, "metadata": { "id": "eN618pI5tNiT" }, @@ -321,7 +297,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 19, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -350,54 +326,89 @@ "### Try to draw an attractive graph" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ๐Ÿ›ณ๏ธ imports" + ] + }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "import matplotlib\n", "from matplotlib import pyplot as plt\n", "from matplotlib.ticker import EngFormatter\n", - "\n", - "\n", "matplotlib.use('Agg')\n", "import numpy \n", - "\n", - "display_size = (400,300)\n", - "\n", - "mc = mpf.make_marketcolors(\n", - " alpha=1.0,\n", - " up='black', down='red',\n", - " edge={'up': 'black', 'down': 'red'}, # 'none',\n", - " wick={'up': 'black', 'down': 'red'},\n", - " volume={'up': 'black', 'down': 'red'}\n", - ")\n", - "\n", - "def get_default_styles():\n", - " yield files.base_style\n", - " yield files.default_style\n", - "\n", - "\n", - "\n", - "bb_style = list(get_default_styles())\n", - "\n", - "s = mpf.make_mpf_style(\n", - " marketcolors=mc,\n", - " base_mpl_style=bb_style, # [files.base_style, files.default_style],\n", - " mavcolors=['#1f77b4', '#ff7f0e', '#2ca02c'],\n", - " rc={}\n", - ")\n", - "\n", + "display_size = (400,300)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### โฒ๏ธ select datetime format" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ "candle_time_delta = df.index.values[1] - df.index.values[0]\n", "if(candle_time_delta <= numpy.timedelta64(1,'h')):\n", " format = '%H:%M'\n", "elif(candle_time_delta <= numpy.timedelta64(1,'D')): \n", " format = '%b.%d'\n", "else:\n", - " format = '%b'\n", - "\n", - "\n", + " format = '%b'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ๐Ÿ“ mpf style" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "s = mpf.make_mpf_style(\n", + " marketcolors=mpf.make_marketcolors(\n", + " alpha=1.0,\n", + " up='black', down='red',\n", + " edge={'up': 'black', 'down': 'red'}, # 'none',\n", + " wick={'up': 'black', 'down': 'red'},\n", + " volume={'up': 'black', 'down': 'red'}\n", + " ),\n", + " base_mpl_style=[files.base_style, files.default_style],\n", + " mavcolors=['#1f77b4', '#ff7f0e', '#2ca02c'],\n", + " rc={}\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ๐Ÿ“ˆ create plot figure" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ "fig, ax = mpf.plot(\n", " df,\n", " scale_width_adjustment=dict(volume=0.9, candle=0.7, lines=0.05),\n", @@ -411,7 +422,22 @@ " figsize=tuple(dim/100 for dim in display_size),\n", " xrotation=0,\n", " datetime_format=format,\n", - ")\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ๐Ÿช“ customise axes" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ "\n", "for a in ax: \n", " a.yaxis.set_major_formatter(EngFormatter(sep=''))\n", @@ -438,14 +464,14 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 28, "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -453,7 +479,6 @@ } ], "source": [ - "plt.show()\n", "with io.BytesIO() as file_stream:\n", " fig.savefig(file_stream, dpi=fig.dpi, bbox_inches='tight', pad_inches=0.0)\n", " chart_image = Image.open(file_stream)\n", From 7bdd4ed6932b246a63ab4f08fc0570f48203f2e0 Mon Sep 17 00:00:00 2001 From: donbing Date: Sun, 3 Apr 2022 01:30:50 +0100 Subject: [PATCH 33/66] change date format --- src/drawing/chart_overlay.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/drawing/chart_overlay.py b/src/drawing/chart_overlay.py index 5631b53d..93a1a4fe 100644 --- a/src/drawing/chart_overlay.py +++ b/src/drawing/chart_overlay.py @@ -98,7 +98,7 @@ def price_increasing(self, chartdata): return chartdata.start_price() < chartdata.last_close() def format_time(self): - return datetime.now().strftime("%b %-d %-H:%M") + return datetime.now().strftime("%-H:%M%b%-d") def ai_comments(self): return self.config.get_price_action_comments() From 15c3caa9bbe2a43ce91b53fa936775148c88bb5b Mon Sep 17 00:00:00 2001 From: donbing Date: Sun, 3 Apr 2022 19:00:17 +0100 Subject: [PATCH 34/66] restore transparency --- docs/notes.md | 9 ++- hotdogs.ipynb | 105 +++++++++---------------------- src/drawing/mpf_plotted_chart.py | 3 +- 3 files changed, 38 insertions(+), 79 deletions(-) diff --git a/docs/notes.md b/docs/notes.md index bac48539..bdbb4120 100644 --- a/docs/notes.md +++ b/docs/notes.md @@ -41,7 +41,7 @@ docker run -e QEMU_CPU=arm1176 --privileged --rm -it --platform linux/arm/v6 bit # remove all containers docker container rm $(docker container ls -q -a) #' which cpus to use for the build ---cpuset-cpus=0-3' +# --cpuset-cpus=0-3' # wifi-connect docker pull balenablocks/wifi-connect:rpi docker run --network=host -v /run/dbus/:/run/dbus/ balenablocks/wifi-connect:rpi @@ -53,6 +53,13 @@ docker run --network=host -v /run/dbus/:/run/dbus/ balenablocks/wifi-connect:rpi # test run docker run --rm --env BITBOT_TESTRUN=true --env BITBOT_OUTPUT=disk --env BITBOT_SHOWIMAGE=false bb +# run tests +docker run --rm \ +--name bitbot_tests \ +--env BITBOT_TESTRUN=true --env BITBOT_OUTPUT=disk --env BITBOT_SHOWIMAGE=false \ +--mount type=bind,source="$(pwd)",target=/code/tests/images \ +bb \ +python -m unittest discover ``` > get linux os version diff --git a/hotdogs.ipynb b/hotdogs.ipynb index c16d21b3..aca62f64 100644 --- a/hotdogs.ipynb +++ b/hotdogs.ipynb @@ -23,7 +23,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 30, "metadata": { "id": "TGhh4E4ctNiS" }, @@ -43,7 +43,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 46, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -51,58 +51,9 @@ "id": "gohAI0ditNiT", "outputId": "49b29a80-c7e0-42a4-b407-a02f62d744a5" }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Collecting git+https://github.com/donbing/mplfinance.git\n", - " Cloning https://github.com/donbing/mplfinance.git to /tmp/pip-req-build-eh5m4bj3\n", - " Running command git clone -q https://github.com/donbing/mplfinance.git /tmp/pip-req-build-eh5m4bj3\n", - "Requirement already satisfied (use --upgrade to upgrade): mplfinance==0.12.8b10 from git+https://github.com/donbing/mplfinance.git in /home/chris/.local/lib/python3.8/site-packages\n", - "Requirement already satisfied: ccxt in /home/chris/.local/lib/python3.8/site-packages (1.66.90)\n", - "Requirement already satisfied: yfinance in /home/chris/.local/lib/python3.8/site-packages (0.1.69)\n", - "Requirement already satisfied: matplotlib in /home/chris/.local/lib/python3.8/site-packages (from mplfinance==0.12.8b10) (3.5.1)\n", - "Requirement already satisfied: pandas in /home/chris/.local/lib/python3.8/site-packages (from mplfinance==0.12.8b10) (1.3.5)\n", - "Requirement already satisfied: aiodns>=1.1.1; python_version >= \"3.5.2\" in /home/chris/.local/lib/python3.8/site-packages (from ccxt) (2.0.0)\n", - "Requirement already satisfied: aiohttp>=3.8; python_version >= \"3.5.2\" in /home/chris/.local/lib/python3.8/site-packages (from ccxt) (3.8.1)\n", - "Requirement already satisfied: yarl==1.7.2; python_version >= \"3.5.2\" in /home/chris/.local/lib/python3.8/site-packages (from ccxt) (1.7.2)\n", - "Requirement already satisfied: requests>=2.18.4 in /home/chris/.local/lib/python3.8/site-packages (from ccxt) (2.27.1)\n", - "Requirement already satisfied: certifi>=2018.1.18 in /usr/lib/python3/dist-packages (from ccxt) (2019.11.28)\n", - "Requirement already satisfied: setuptools>=38.5.1 in /home/chris/.local/lib/python3.8/site-packages (from ccxt) (60.9.3)\n", - "Requirement already satisfied: cryptography>=2.6.1 in /usr/lib/python3/dist-packages (from ccxt) (2.8)\n", - "Requirement already satisfied: numpy>=1.15 in /home/chris/.local/lib/python3.8/site-packages (from yfinance) (1.22.0)\n", - "Requirement already satisfied: multitasking>=0.0.7 in /home/chris/.local/lib/python3.8/site-packages (from yfinance) (0.0.10)\n", - "Requirement already satisfied: lxml>=4.5.1 in /home/chris/.local/lib/python3.8/site-packages (from yfinance) (4.7.1)\n", - "Requirement already satisfied: packaging>=20.0 in /home/chris/.local/lib/python3.8/site-packages (from matplotlib->mplfinance==0.12.8b10) (21.3)\n", - "Requirement already satisfied: pillow>=6.2.0 in /home/chris/.local/lib/python3.8/site-packages (from matplotlib->mplfinance==0.12.8b10) (9.0.1)\n", - "Requirement already satisfied: cycler>=0.10 in /usr/lib/python3/dist-packages (from matplotlib->mplfinance==0.12.8b10) (0.10.0)\n", - "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/lib/python3/dist-packages (from matplotlib->mplfinance==0.12.8b10) (1.0.1)\n", - "Requirement already satisfied: pyparsing>=2.2.1 in /usr/lib/python3/dist-packages (from matplotlib->mplfinance==0.12.8b10) (2.4.6)\n", - "Requirement already satisfied: python-dateutil>=2.7 in /usr/lib/python3/dist-packages (from matplotlib->mplfinance==0.12.8b10) (2.7.3)\n", - "Requirement already satisfied: fonttools>=4.22.0 in /home/chris/.local/lib/python3.8/site-packages (from matplotlib->mplfinance==0.12.8b10) (4.28.5)\n", - "Requirement already satisfied: pytz>=2017.3 in /home/chris/.local/lib/python3.8/site-packages (from pandas->mplfinance==0.12.8b10) (2021.3)\n", - "Requirement already satisfied: pycares>=3.0.0 in /home/chris/.local/lib/python3.8/site-packages (from aiodns>=1.1.1; python_version >= \"3.5.2\"->ccxt) (4.1.2)\n", - "Requirement already satisfied: frozenlist>=1.1.1 in /home/chris/.local/lib/python3.8/site-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (1.2.0)\n", - "Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /home/chris/.local/lib/python3.8/site-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (4.0.2)\n", - "Requirement already satisfied: multidict<7.0,>=4.5 in /home/chris/.local/lib/python3.8/site-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (5.2.0)\n", - "Requirement already satisfied: charset-normalizer<3.0,>=2.0 in /home/chris/.local/lib/python3.8/site-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (2.0.10)\n", - "Requirement already satisfied: aiosignal>=1.1.2 in /home/chris/.local/lib/python3.8/site-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (1.2.0)\n", - "Requirement already satisfied: attrs>=17.3.0 in /usr/lib/python3/dist-packages (from aiohttp>=3.8; python_version >= \"3.5.2\"->ccxt) (19.3.0)\n", - "Requirement already satisfied: idna>=2.0 in /usr/lib/python3/dist-packages (from yarl==1.7.2; python_version >= \"3.5.2\"->ccxt) (2.8)\n", - "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/lib/python3/dist-packages (from requests>=2.18.4->ccxt) (1.25.8)\n", - "Requirement already satisfied: cffi>=1.5.0 in /home/chris/.local/lib/python3.8/site-packages (from pycares>=3.0.0->aiodns>=1.1.1; python_version >= \"3.5.2\"->ccxt) (1.15.0)\n", - "Requirement already satisfied: pycparser in /home/chris/.local/lib/python3.8/site-packages (from cffi>=1.5.0->pycares>=3.0.0->aiodns>=1.1.1; python_version >= \"3.5.2\"->ccxt) (2.21)\n", - "Building wheels for collected packages: mplfinance\n", - " Building wheel for mplfinance (setup.py) ... \u001b[?25ldone\n", - "\u001b[?25h Created wheel for mplfinance: filename=mplfinance-0.12.8b10-py3-none-any.whl size=70315 sha256=67e804d0b44683f411dfd767f464f100935e04358315f499cac5fff05103cbcf\n", - " Stored in directory: /tmp/pip-ephem-wheel-cache-wu9dpgk9/wheels/7a/19/79/ca6b247407a3bdbf9008674616b262fd49f79b6324a5746057\n", - "Successfully built mplfinance\n" - ] - } - ], + "outputs": [], "source": [ - "#%%capture output\n", + "%%capture output\n", "!{sys.executable} -m pip install ccxt yfinance git+https://github.com/donbing/mplfinance.git\n", "import pandas as pd\n", "import sys\n", @@ -116,7 +67,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 32, "metadata": {}, "outputs": [], "source": [ @@ -134,7 +85,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 33, "metadata": {}, "outputs": [], "source": [ @@ -154,14 +105,14 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 34, "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -183,16 +134,16 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 15, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -207,14 +158,14 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 36, "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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JakMxqqKNdWGygTgHlQgAES+uu7vq/ollciSfoxPY6+v8gB4HhUIAJHJPpChq/6xCmBJhZD0gVy9WBgAw1QgAES+um6fimDJXI6kD2TLiC2AtzrjO1IFAkCk1NpgF0MpdY+7bQFcZuZ7rJRSr26JUYEAEBEgAEQECACRdpdzL+XXyCPfXa3fpx4LQIN0ogPckU50AFolQACICBAAIgIEgIgAAXigqzvQu06AABASIABEBAgAEQECQESAABARIABEBAgAEQECQESAABARIAB3dIOZ5nMECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQEyJhS/n/1ITya87eN87eN87fdgnMoQMb5AG7j/G3j/G3j/G0nQAA4hgABICJAAIgIEAAiAgSASKm1Xn0M+yulwT8K4F7aDBAADqcJC4CIAAEgIkAAiAgQACJfVx/AnZWR0Vy11rL0OVPbzu1n6DXWbHu1NecvOW8/n7fkNZccx51sOX9T2x6xnzX7O4vzdzwVCAARw3gDQ1e9Y1fCS7aduopesu+nWVI1zJ2bJRVLC+dqyNbPy9Lnb3nunTl/+1GBABDRB7JA2j4/Zuz5a/az9zEdacuxzlV0c23KW/d/B3t/Lnz+nL+9qEAAiOgDmbBH38Tebah7bHuW5Jjm+kD2GMVyx3M15Kj33+dv22ts6cM88livoAIBIKICmZBc7e45D2Tv8epn23L+jpwHcsdzNeSs+UE+f8fMA9l7P3ekAgEgogIBIKICASAiQACI/AM+8Bv69AskywAAAABJRU5ErkJggg==", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -238,14 +189,14 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 37, "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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JakMxqqKNdWGygTgHlQgAES+uu7vq/ollciSfoxPY6+v8gB4HhUIAJHJPpChq/6xCmBJhZD0gVy9WBgAw1QgAES+um6fimDJXI6kD2TLiC2AtzrjO1IFAkCk1NpgF0MpdY+7bQFcZuZ7rJRSr26JUYEAEBEgAEQECACRdpdzL+XXyCPfXa3fpx4LQIN0ogPckU50AFolQACICBAAIgIEgIgAAXigqzvQu06AABASIABEBAgAEQECQESAABARIABEBAgAEQECQESAABARIAB3dIOZ5nMECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQEyJhS/n/1ITya87eN87eN87fdgnMoQMb5AG7j/G3j/G3j/G0nQAA4hgABICJAAIgIEAAiAgSASKm1Xn0M+yulwT8K4F7aDBAADqcJC4CIAAEgIkAAiAgQACJfVx/AnZWR0Vy11rL0OVPbzu1n6DXWbHu1NecvOW8/n7fkNZccx51sOX9T2x6xnzX7O4vzdzwVCAARw3gDQ1e9Y1fCS7aduopesu+nWVI1zJ2bJRVLC+dqyNbPy9Lnb3nunTl/+1GBABDRB7JA2j4/Zuz5a/az9zEdacuxzlV0c23KW/d/B3t/Lnz+nL+9qEAAiOgDmbBH38Tebah7bHuW5Jjm+kD2GMVyx3M15Kj33+dv22ts6cM88livoAIBIKICmZBc7e45D2Tv8epn23L+jpwHcsdzNeSs+UE+f8fMA9l7P3ekAgEgogIBIKICASAiQACI/AM+8Bv69AskywAAAABJRU5ErkJggg==", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -284,7 +235,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 38, "metadata": { "id": "eN618pI5tNiT" }, @@ -297,7 +248,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 39, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -335,7 +286,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 40, "metadata": {}, "outputs": [], "source": [ @@ -356,7 +307,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 41, "metadata": {}, "outputs": [], "source": [ @@ -378,7 +329,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 42, "metadata": {}, "outputs": [], "source": [ @@ -405,7 +356,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 43, "metadata": {}, "outputs": [], "source": [ @@ -434,7 +385,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 44, "metadata": {}, "outputs": [], "source": [ @@ -464,14 +415,14 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 45, "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAEVCAYAAADOwrOnAAAKjElEQVR4nO3dTZKjOhYGUNTh9b35W6HnuUH1oItqJwYsXf6EfM6kImyMVdjpTxchkXLOQ3dSykPO6epmAPTsP1c3AIB7EiAAhAgQAEIECAAhAgSAEAECQIgAASBEgAAQIkAACBEgAIQIEABCBAgAIQIEgJDH3IMppTwMw5BXVrQdtxmtbftpH3OvLWkDANdRgQAQ8qsCmVYVc/aoDEre58j3B2A7FQgAIY9heO/V11Qio5KKIPI+S68F4FoqEABCVsdA1nr908dqKoSa99kyXgLAcVQgAIQ8hqGumlgavyiZyxGpWrZUOgAcRwUCQEjKucMhhpTyoEIBOJQKBIAQAQJAyOxiil1I6WfhmeeQ8/PUtgB0yBgIACFOYQEQIkAACBEgAIQIEABCBAgAIQIEgBABAkCIADmTe5sAHREgAIQIEABCBAgAIQIEgBABAkCIAAEgRIAAECJAAAgRIACECBAAQgQIACECBIAQAQJAiAABIESAABAiQAAIESAAhAgQYDt32/xKj7kH058vQ845Lb0wTb4wa9suvWbttSVtAOA6KhAAQn5VIEsVwtw2kcpg6TU1+1SZ8PVSyoPvPw1QgQAQ8hiG9159TSUyqqkItoyfqDzgZlRM3VKBABCyOgay1uufPlZTIdS8tqQaAuB8KhAAQh7DUFcRLI2TlMzlqJkHsvScsRCANqhAoEEtnrptsU1ca3YmemQco2SbmqphaVuVR52UUi4ZW/q1zfSHwjE/1fjZzFbb42cz/uuz4UIqEABCBAgAIbOnsLqQ0s/CM88h5+epbTnY0mmqWzLpDG6j3wDJ+Z+rmwDQM6ewGuEKF+Bu+q1AaE7xlV+uMIJbUIGwP9UUfAUBAkCIAAEgRIAAECJAgFUppTxdXmWywf+XVzH+9VUECPSmpR/xknBpqb1UESDwRQ6ZbzRebp1zcun1dxEghJj4CAgQ4H90CqgkQKAXr+MMdwiDu7WXNwIE7uRu4w13ay9VrIV1sdexhNU70I38ERLkTofsTQUCQIgKpFMfKxuAjQTIjU1DoiYghEmHxs904a6OOefU1d0ruZwA6dT4I+EHg8v5/nVLgHRu7/AoHvQ3GPtdfM5fSYDwbuVUyMfKJue0dgrlmAaz2cpno5pliauwWrdyHX3OOY1/0P6wgbMJEABCBAghqxWPaqhLqlymBAgAIQIEeqNS4CQCBICQ2ct4S5a+mN5QqOT86NJNiOZea/kN2J+/J/akAgEg5FcFUnKb0i2VwdJravapMnnnWABXUIHQD3e164/PtGmPYXjv1ddUIqOaXvCW8RO97S/lxlrQHGth0YYPS5ED7VkdA1nr9U8fq7lya0u1AnwJKzs3zxgIbfEj8Vkvx+h1gdBe/k9f5jEMddXE0jhJzVyOmvkgkUoHgOOpQAAImR1EL+ndR7bZ457dX1l5XPV//sZjzfl8z25LBQJAiAABIKTfeSAp/Sw88xxyfp7aFuBW3P+9TMq5w2kWrU5Gm2nX3BVpvrgzSmait/q5V9qyykNXLlx9QICUcQoLoIbJzX8JEABCBAjAHymlPJ5CfDu9nFJ+W17ly/U7iH42q8UCX0YFAkCIAAEgRIBwfwXnpt0WAPYnQLiH12W/jS9BEwyi073pVTW/Joi5+OGefG5NECBAm4RC85zCAiBEgAAQIkAACBEg3Idz4tAUAQJAiAABIESAABAiQIA+Wb7mcAIE4OauWutNgAAQIkAACLEWFiyxYB+sUoFwf69LvM/8yI+r7+acU54+b5l4CBMgAIQIEABCBAgAIcWD6LN3c1vYZrS27afXlLwfXMogO3tKKd/tO6QCOUNK+e+Pjdmx7Vn6o/0wOM+N+TvcxccKpGSG45ZqYVpxHPleh2qtPcD5blhFbKECAbiplFIeO9VXLGeyWIFMe/o1lchozyqh2cqDdvhuwKnMRAf68tqRnTulNB2PPKHjsdq5/tTehlWPgaxVAtPH9qgarlplEv660R/011j7THxepzEGAkDIYgVSU00sjZPMbVtblRxR1QCwnQoEgJDiQfSSHv+WbaaPl24HwDVUIACECBAAQvqdB5LSz8IzzyHn56ltAehQyrnDaRatTcZZWbV1bp6LcZ6bOGg13iNXdOCPD78RKaX8dtxLPu+F/RZPJFza70o7F/d7AqewAPbwOsP9SyZACxCAEpb3fyNAAAjpdxC9JWNvZeb8qPPbwF0JEOD7HNFxW9nn63JPPXUancICaF2jg/ICBIAQAQIXca+b79PT6athECAABAkQAEIECAAhAgROllLK4/iHcRDuzDwQOMKGBfJ6G2ilXyoQiHpdF8mPPl9IgMAWgqNLqsAyAgSAEAEC0LKG7zNiEB3gSjc+XaYCASBEgAC0bOVqv5xzGgf8rxj4FyAAN3fVVWMCBKB1jY6TCBAAQgQIACECBIAQAQJAyO4TCcflqdeuCpguYT23bcl+ALiOCgSAkN0qkJIb4+xRVahMANqgAgEgZHMFMq0IaiqRUUk1ofIAaIsKBICQw8ZA1iqG6WNr25ZUNLehegI6ogIBIGRzBVJTTSyNk6yNa9TsH+Bwfnv+UoEAELL7TPSSymDLNioPgDaoQAAIESAAhAgQAEJ2HwNpRko/C888h5yfp7YFoEMp537m6f2VUnapHZeaToB9+T5GlvKBFjmFBUCIAAEgRIAAECJAAAgRIACECBAAQgQIACECBIAQAQJAiAABIESAABAiQAAIESAAhAgQAEIECAAhAgSAEAECQIgAASBEgAAQIkAACBEgAIQIEABCBAgAIQIEgBABAkDIY+7BlFIehmHIOael55bMvebTPtbep2R/AJxPBQJAyK8K5FN18SpSGSxVFTXVhsoEoA2zp7CAjVY6ODo/9OIxDO+9+pJKpGQcY6pm/0vv548PoA3GQAAIWR0Dmev1L1UANRXC0hjI2n4BaIsKBICQxzDUXRW1VBHUzOWoGT/ZcsUWAMdRgQAQknLucIghpbx2GSUA26lAAAgRIACECBAAQvpdyiSln4VnnkPOz1PbAtAhg+gAhDiFBUCIAAEgRIAAECJAAAgRIACECBAAQgQIACECBIAQAQJAiAABIESAABAiQAAIESAAhAgQAEIECAAhAgSAEAGyp5T+vboJt+A4feYYfeYYlTnwOAmQfflCl3GcPnOMPnOMyggQANoiQAAIESAAhAgQAEIECAAhKed8dRv2l1KH/ymAtvQZIAAcziksAEIECAAhAgSAEAECQMjj6gb0Jk2uAMs5p5rnS/Y59bqPmm2vtNTOtfZFjt3SPuZe29qxqzlGpcdmyz5LXnO2Pf4/W/4G73rc9qICASBEBbKzsXcx7YUs9XznHl/atqbn0nov51MPueR4RLbd0raz1Ryj0u9dzT4/taMFkWNUsm3vx20vKhAAQlQgJ1nqIa5tO1UzBrDHeMEZ9m7npyql5Pi3duy2tOdbvkt7/3++5bhtpQIBIEQFcrKSc/Nbzr9GztVe4aj2lI6B3OHY7fG+peNpdzgeW9uyZdua197huO1FBQJAiMUUD1LaEz7rGvTWej2Ra+Wvmgdy1bHbcoyOnAfS0nfprDlSe7xPS8dtLyoQAEJUIACEqEAACBEgAIT8FwYTJz45CvdwAAAAAElFTkSuQmCC", + "image/png": "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", "text/plain": [ - "" + "" ] }, "metadata": {}, diff --git a/src/drawing/mpf_plotted_chart.py b/src/drawing/mpf_plotted_chart.py index b58d27d3..07b310d0 100644 --- a/src/drawing/mpf_plotted_chart.py +++ b/src/drawing/mpf_plotted_chart.py @@ -102,7 +102,8 @@ def write_to_stream(self, stream): stream, dpi=self.fig.dpi, bbox_inches='tight', - pad_inches=0.0 + pad_inches=0.0, + transparent=True, ) stream.seek(0) plt.close(self.fig) From 7d6316ef93d1fe9cf56f17545f967654563c1a2d Mon Sep 17 00:00:00 2001 From: donbing Date: Sun, 3 Apr 2022 19:00:27 +0100 Subject: [PATCH 35/66] update notes --- docs/notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/notes.md b/docs/notes.md index bdbb4120..19e72e70 100644 --- a/docs/notes.md +++ b/docs/notes.md @@ -59,7 +59,7 @@ docker run --rm \ --env BITBOT_TESTRUN=true --env BITBOT_OUTPUT=disk --env BITBOT_SHOWIMAGE=false \ --mount type=bind,source="$(pwd)",target=/code/tests/images \ bb \ -python -m unittest discover +python3 -m unittest discover ``` > get linux os version From d57f3ca8de20f97be695888d94353be86563290b Mon Sep 17 00:00:00 2001 From: donbing Date: Sun, 3 Apr 2022 21:10:58 +0100 Subject: [PATCH 36/66] allow docker to copy tests --- .dockerignore | 1 - Dockerfile | 6 +++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.dockerignore b/.dockerignore index f7ace482..ac0a530a 100644 --- a/.dockerignore +++ b/.dockerignore @@ -4,7 +4,6 @@ .gitignore .gitmodules docs -tests scripts docker-compose.yml diff --git a/Dockerfile b/Dockerfile index 2fd6a730..bba04485 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,21 +1,21 @@ FROM navikey/raspbian-bullseye:latest as base-image RUN apt update && \ + apt upgrade -y \ apt install -y \ --no-install-recommends \ python3 python3-rpi.gpio libatlas-base-dev libopenjp2-7 libtiff5 libxcb1 libfreetype6-dev \ && rm -rf /var/lib/apt/lists/* FROM base-image AS build-image -RUN apt update && \ - apt install -y \ +RUN apt install -y \ --no-install-recommends \ python3-pip git \ && rm -rf /var/lib/apt/lists/* RUN pip3 install --upgrade pip COPY requirements.txt . -RUN pip3 install -v --extra-index-url https://www.piwheels.org/simple --user -r requirements.txt +RUN pip3 install -v --prefer-binary --extra-index-url https://www.piwheels.org/simple --user -r requirements.txt FROM base-image AS release-image COPY --from=build-image /root/.local /root/.local From b0a4bd315562872ab2fa322cc6aef2181c512f86 Mon Sep 17 00:00:00 2001 From: donbing Date: Sun, 3 Apr 2022 21:49:39 +0100 Subject: [PATCH 37/66] log image resizing --- src/display/__init__.py | 1 + src/display/disk.py | 1 + 2 files changed, 2 insertions(+) diff --git a/src/display/__init__.py b/src/display/__init__.py index b9bba015..e17fe6d5 100644 --- a/src/display/__init__.py +++ b/src/display/__init__.py @@ -64,6 +64,7 @@ def apply_rotation(self, image): else: return image + @info_log # ๐Ÿ–ผ๏ธ crop and rescale image if needed def resize_image(self, image): if image.size != self.size(): diff --git a/src/display/disk.py b/src/display/disk.py index d196e643..09939398 100644 --- a/src/display/disk.py +++ b/src/display/disk.py @@ -19,6 +19,7 @@ def draw_connection_error(self): def show(self, image): image = self.apply_rotation(image) + image = self.resize_image(image) image = quantise_image(image, white_black_red) self.save_image(self.config.output_file_name(), image) From 515ee8a045280ce6a2fe54450d76ad70595e8046 Mon Sep 17 00:00:00 2001 From: donbing Date: Fri, 6 May 2022 23:50:52 +0100 Subject: [PATCH 38/66] assert expected res in test --- tests/test_chart_rendering.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/test_chart_rendering.py b/tests/test_chart_rendering.py index dbb2b966..b4e078cf 100644 --- a/tests/test_chart_rendering.py +++ b/tests/test_chart_rendering.py @@ -92,6 +92,11 @@ def test(self): def image_should_not_change_when(action, image_file_name): # previous_image = Image.open(image_file_name) action() + new_image = Image.open(image_file_name) + expected_res = output.get('resolution', '') + actual_res = f"{new_image.width},{new_image.height}" + assert expected_res == actual_res, f"expected {expected_res}, actual {actual_res}" + # new_image = Image.open(image_file_name) # diff = ImageChops.difference(new_image, previous_image) # if diff.getbbox(): From 7478558606958dbb7661d827f93d6cc75e5e8c89 Mon Sep 17 00:00:00 2001 From: donbing Date: Sun, 8 May 2022 17:16:10 +0100 Subject: [PATCH 39/66] better stock/forex naming --- hotdogs.ipynb | 52 +++++++++++++++++------------------ tests/test_chart_rendering.py | 3 +- 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/hotdogs.ipynb b/hotdogs.ipynb index aca62f64..e59f132e 100644 --- a/hotdogs.ipynb +++ b/hotdogs.ipynb @@ -23,7 +23,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 1, "metadata": { "id": "TGhh4E4ctNiS" }, @@ -43,7 +43,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 2, "metadata": { "colab": { "base_uri": "https://localhost:8080/" @@ -67,7 +67,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -85,7 +85,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -105,14 +105,14 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 5, "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -134,16 +134,16 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 35, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -158,14 +158,14 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 7, "metadata": {}, "outputs": [ { "data": { - "image/png": "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JakMxqqKNdWGygTgHlQgAES+uu7vq/ollciSfoxPY6+v8gB4HhUIAJHJPpChq/6xCmBJhZD0gVy9WBgAw1QgAES+um6fimDJXI6kD2TLiC2AtzrjO1IFAkCk1NpgF0MpdY+7bQFcZuZ7rJRSr26JUYEAEBEgAEQECACRdpdzL+XXyCPfXa3fpx4LQIN0ogPckU50AFolQACICBAAIgIEgIgAAXigqzvQu06AABASIABEBAgAEQECQESAABARIABEBAgAEQECQESAABARIAB3dIOZ5nMECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQEyJhS/n/1ITya87eN87eN87fdgnMoQMb5AG7j/G3j/G3j/G0nQAA4hgABICJAAIgIEAAiAgSASKm1Xn0M+yulwT8K4F7aDBAADqcJC4CIAAEgIkAAiAgQACJfVx/AnZWR0Vy11rL0OVPbzu1n6DXWbHu1NecvOW8/n7fkNZccx51sOX9T2x6xnzX7O4vzdzwVCAARw3gDQ1e9Y1fCS7aduopesu+nWVI1zJ2bJRVLC+dqyNbPy9Lnb3nunTl/+1GBABDRB7JA2j4/Zuz5a/az9zEdacuxzlV0c23KW/d/B3t/Lnz+nL+9qEAAiOgDmbBH38Tebah7bHuW5Jjm+kD2GMVyx3M15Kj33+dv22ts6cM88livoAIBIKICmZBc7e45D2Tv8epn23L+jpwHcsdzNeSs+UE+f8fMA9l7P3ekAgEgogIBIKICASAiQACI/AM+8Bv69AskywAAAABJRU5ErkJggg==", + "image/png": "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", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -189,14 +189,14 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 8, "metadata": {}, "outputs": [ { "data": { - "image/png": "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JakMxqqKNdWGygTgHlQgAES+uu7vq/ollciSfoxPY6+v8gB4HhUIAJHJPpChq/6xCmBJhZD0gVy9WBgAw1QgAES+um6fimDJXI6kD2TLiC2AtzrjO1IFAkCk1NpgF0MpdY+7bQFcZuZ7rJRSr26JUYEAEBEgAEQECACRdpdzL+XXyCPfXa3fpx4LQIN0ogPckU50AFolQACICBAAIgIEgIgAAXigqzvQu06AABASIABEBAgAEQECQESAABARIABEBAgAEQECQESAABARIAB3dIOZ5nMECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQEyJhS/n/1ITya87eN87eN87fdgnMoQMb5AG7j/G3j/G3j/G0nQAA4hgABICJAAIgIEAAiAgSASKm1Xn0M+yulwT8K4F7aDBAADqcJC4CIAAEgIkAAiAgQACJfVx/AnZWR0Vy11rL0OVPbzu1n6DXWbHu1NecvOW8/n7fkNZccx51sOX9T2x6xnzX7O4vzdzwVCAARw3gDQ1e9Y1fCS7aduopesu+nWVI1zJ2bJRVLC+dqyNbPy9Lnb3nunTl/+1GBABDRB7JA2j4/Zuz5a/az9zEdacuxzlV0c23KW/d/B3t/Lnz+nL+9qEAAiOgDmbBH38Tebah7bHuW5Jjm+kD2GMVyx3M15Kj33+dv22ts6cM88livoAIBIKICmZBc7e45D2Tv8epn23L+jpwHcsdzNeSs+UE+f8fMA9l7P3ekAgEgogIBIKICASAiQACI/AM+8Bv69AskywAAAABJRU5ErkJggg==", + "image/png": "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", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -235,7 +235,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 9, "metadata": { "id": "eN618pI5tNiT" }, @@ -248,7 +248,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 10, "metadata": { "colab": { "base_uri": "https://localhost:8080/", @@ -286,7 +286,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -307,7 +307,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ @@ -329,7 +329,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ @@ -356,7 +356,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ @@ -385,7 +385,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -415,14 +415,14 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 16, "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAEVCAYAAADOwrOnAAAJL0lEQVR4nO3dTZKjOhoFUKnDm+wV5rw2qDfooJ/LCRiu+ZXPmWSFbUhSdvnqkxDU1lrpTq2ttFbPPgyAnv3n7AMA4J4ECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQECAARAQJARIAAEHmMPVhrbaWU0mZuyjS8ZjD32mTbJccAwHlUIABE/qpAXiuDMZ9UBlPbrtmnygTgGlQgAEQepfzu1a+pRAZLKoKp/as8AO5HBQJAZHYOZK7Xn8xjJHMgS6ohAI6nAgEg8ihlXUWwZh7jdT/JHMgnZ2wBsB8VCACR2lqHUwy1tqJCAdiVCgSAiAABIDJ6McUu1Ppn4pmf0trPoccC0CFzIABEDGEBEBEgAEQECAARAQJARIDAJ1zsky8mQACICBAAIgIEgIgAASAiQACICBAAIgIEgIgAASAiQACICBAAIgIEgIgAASAiQACICBAAIgIEgIgAASAiQACICBAAIgIETlLdDpebEyAARAQIABEBAkBEgAAQESAARAQIABEBAkBEgAAQESAARAQIABEBAkBEgAAQESAARAQIABEBAkBEgAAQESAARAQIABEBAkBEgAAQESAARAQIABEBAkBEgAAQESAARAQIABEBAkBEgAAQeYw9WGttpZTSWqtTGw6vGcy9Ntl2yTHAnt5+Tofnh58+q3wZFQhc0Ut4wRX9VYG89rjGfFIZbFFVqEwArkEFAgertbahIzTaaXseGlOJcGGPUn736tdUIoOt50CmtlF5AFzD6CQ6cFGvnTsdKk40Owcy1+t/fWxNhbBm2yXVEHSltVpqbcKBqzMHAkDkUcq6imBqnmTJWo412049Zy4E4BpUIABERifRk3mMNa/Ze1sA9qcCASAiQACICBAAIv0uJKz1z8QzP6W1n0OPBaBDtbUO1+lZhMUGFl/O/d8X1CXPLTqNfeozbCU6F9JvBQJ78+XNlzMHAkBEgAAQESAARAQIABEBAldkgp4bECAARAQIABEBAkBEgAAQESAARAQIABEBAt/k9WKM8AEBApRSfl8lGN4RINAZQcBRBAh0otbahvAYDZHhsVqboSy2IEAAiAgQACICBICIAAEgIkAAiAgQACICBICIAAEgIkCAZSw+5MXj7AOALrVWS61t7N7mzf3O6YQKBICIAIE7GaqX1uprddNaq0N1o8rhCAIE2Je5k24JEAAiAgSAiAABICJAgI+5C+J3EiBAeb6T4a8weL6DoaDgiQABICJAAIgIEAAiAgT2crXV4G9WsQ8/rWJnKQEClFLyy5+8nYAffpqAj131LDcBAt9EdcGGBAjAQa5aSaQECAARAQKdudsk+GyvvLMee28ECAARAQJARIAAp3g+7Xd0GMspwJcnQOBubjbHQb8eZx8AcHFDYNXaxsKrtVZrre1uk/dHeq6wfrXVa3X10o6vVdqabfcmQADu6uTQNoQF3NK7RXlHL9ob5nRGL+nSKQHCpG/5TwB7e75IZU9DfQKEzQke/u/NFYB7/FJd7bltJuaYhp9Xa6fROZDRyZqJ1wySP2zu9yw5Bq7nyhN+wLZMovPLqjNGStk2CCbO9OECZt6XTzp639RJnP1bb9gOfwXIkqGHLSqDT4Y4VCYnW3BKZ7Tf58/E8G/vMVyaORAyyZf7m7Hes5izgcyjlN+9+jWVyGBJzzP5PVPbAnyLq37vqUAAiMzOgcz1+l8fW1MhrPk9hhcArslZWEBXZs8i/N+DTiffyKOUddXE1PzFkrUcSdXySaVzJy5Gd47ZdStsQ5t2SwUCE4TJdQn+axgNkCVvxhavWVN5rPm9XFzyHhp2YCHfEcdRgXTuNkNjbxYowiHmOio6Mb8IEG7v7Xyc//g8a61OdlR8NlYRIFzL1H/gBcOdt6m2WGbmi95dEK+h3wCp9c/EMz+ltZ9Dj+WCtriaMvDdamsdrtO74Tj6Xr2pqf32GCCTbTgzhNVjO7BA8h2x8N7l/z7d/2fJpUzuwGp84IIECAARAQJApN9J9Jt4vW5PKRO3gV15k6W3+wXW+WBhdK8EyJf6xg87sC1DWABEBAgAEQECQESAAN/HHOAmBAj9G74sWquvXxzPNztzYgGsI0D4DsG9Z4B5TuO9M5cpB04kQK5uyb0LRp53iXNgb4awAIgIEAAiAuQOPhiCMnwF7EWAABARIHRDtQXHEiAARAQIABEBcqDq3uZARwTIAWqtbQgPIQL0wkr0k5n4Be5KBQJARIAAEBEgAEQESA/MowAnECAARAQIABEBAkBEgAAQESAbssoc+CYCBICIAAEgIkAAiAiQjTxfbddcCPANXI33AK64C/RIBQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAERG7wcy3BBp7j4WrzdNWnLPi6kbLY1tu+QYADiPCgSAyF8VyJJbsX5SGUxts2afV61MrnY8AHtTgQAQeZTyu1e/phIZrOmBfzJ/oqcPcA0qEAAis3Mgc73+18fWnLn1SbUCwDWoQACIPEpZV01MzZOsWcuxZj1IUukAsD8VCACR2lqHUwy1tqJCAdiVCgSAiAABICJAAIiMXo23C7X+mXjmp7T2c+ixAHTIJDoAEUNYAEQECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQECAARAQJARIAAEBEgAEQECAARAQJARIBsqdb/nn0It6Cd3tNG72mjZXZsJwGyLR/oZbTTe9roPW20jAAB4FoECAARAQJARIAAEBEgAERqa+3sY9herR3+UQDX0meAALA7Q1gARAQIABEBAkBEgAAQeZx9AL2pL2eAtdbq2OOvhtct2Weyzdxrz/Du+JLj762djmijLfZ5pqPf8zXb3q0tEyoQACJO493J0Pt41+sYe90e2y7d59Fej2vN8X9LO+3RRp/s8w4+fc+PaPMeqEAAiJgDOclcb2Sqh/INY6pTc0ba6V9L59WeX9u7rd/zb2m3T6lAAIioQA62ZBx06jXfMKa6xzh1r96dQfX8WK9tstff13u7bUUFAkDEWVg72fJMjN7WNzx7106DT9aBzO3jDu20ZRvtuc8zHP2eWwfyNxUIABEVCAARFQgAEQECQOQfHAok+HUYKHgAAAAASUVORK5CYII=", "text/plain": [ - "" + "" ] }, "metadata": {}, diff --git a/tests/test_chart_rendering.py b/tests/test_chart_rendering.py index b4e078cf..e321fcc6 100644 --- a/tests/test_chart_rendering.py +++ b/tests/test_chart_rendering.py @@ -32,6 +32,7 @@ class screens: test_params = [ ("APPLE 1mo defaults", "", "", "AAPL", "1", "false", "false", "1mo", ""), ("APPLE 3mo defaults", "", "", "AAPL", "1", "false", "false", "3mo", ""), + ("GBPJPY 1mo defaults", "", "", "GBPJPY=X", "1", "false", "false", "1mo", ""), ("bitmex BTC 5m defaults", "bitmex", "BTC/USD", "", "1", "false", "false", "5m", ""), ("bitmex BTC 1h defaults", "bitmex", "BTC/USD", "", "1", "false", "false", "1h", ""), @@ -79,7 +80,7 @@ def test(self): config.set('display', 'disk_file_name', image_file_name) config.set('display', 'rotation', '0') config.set('display', 'show_ip', 'false') - config.set('display', 'timestamp', 'false') + config.set('display', 'timestamp', 'true') config.set('comments', 'up', 'moon') config.set('comments', 'down', 'doom') app = BitBot(config, files) From 9b2b16d0c3da87edbf896c968f2947fbcd48906c Mon Sep 17 00:00:00 2001 From: donbing Date: Sun, 8 May 2022 17:16:21 +0100 Subject: [PATCH 40/66] improving layouts --- config/base.mplstyle | 19 +++++++++++++---- src/drawing/mpf_plotted_chart.py | 36 +++++++++++++++++++++++--------- 2 files changed, 41 insertions(+), 14 deletions(-) diff --git a/config/base.mplstyle b/config/base.mplstyle index fba1bab6..86c56e5b 100644 --- a/config/base.mplstyle +++ b/config/base.mplstyle @@ -1,30 +1,39 @@ figure.dpi: 100 -#figure.autolayout: True +# figure.autolayout: True +#figure.constrained_layout.use: True + savefig.pad_inches: 0 +savefig.transparent: True + font.family: sans-serif font.sans-serif: 04b03 font.weight: light -savefig.transparent: True + text.hinting_factor:1 text.hinting: native text.antialiased: False + patch.antialiased: False lines.antialiased: False + figure.subplot.hspace: 0 +figure.frameon: False axes.facecolor: white +axes.edgecolor: red axes.linewidth: 0.5 axes.spines.left: True axes.spines.bottom: True axes.spines.top: False axes.spines.right: False axes.grid: False +# margin between candles and axes +axes.xmargin : 0 +axes.ymargin : 0 grid.linestyle: : grid.linewidth: 0.5 grid.color: black -axes.edgecolor: red - xtick.color: red ytick.color: red @@ -47,3 +56,5 @@ ytick.direction: in ytick.major.width: 0.5 xtick.major.width: 0.5 + +xtick.major.pad: 0 \ No newline at end of file diff --git a/src/drawing/mpf_plotted_chart.py b/src/drawing/mpf_plotted_chart.py index 07b310d0..ed8cab0e 100644 --- a/src/drawing/mpf_plotted_chart.py +++ b/src/drawing/mpf_plotted_chart.py @@ -43,26 +43,42 @@ def __init__(self, config, display, files, chart_data): # mav=(10, 20), volume=config.show_volume(), style=mpf_style, - tight_layout=True, + # tight_layout=True, figsize=tuple(dim/100 for dim in display.size()), xrotation=0, datetime_format=self.date_format(data_frame), ) + plt.subplots_adjust(left=0.0, bottom=0.0, right=1, top=1, wspace=0.1, hspace=0.0) + # self.fig.set_tight_layout(True) + plt.margins(x=0) # ๐Ÿช“ make axes look nicer for a in ax: + # a.set_adjustable('box') a.yaxis.set_major_formatter(EngFormatter(sep='')) - a.autoscale(enable=True, axis="x", tight=True) - a.autoscale(enable=True, axis="y", tight=True) + a.autoscale(enable=True, axis="both", tight=True) + # margin between candles and axes a.margins(0.05, 0.2) + a.xaxis.labelpad = 0 + a.tick_params(pad=0, axis='both') + a.locator_params(axis='both', tight=True) + # remove labels _ = a.set_ylabel("") _ = a.set_xlabel("") - - # if config.expand_chart(): - # for ylabel in a.yaxis.get_ticklabels(): - # ylabel.set_horizontalalignment('left') - # for xlabel in a.xaxis.get_ticklabels(): - # xlabel.set_verticalalignment('bottom') + a.autoscale_view(True) + a.reset_position() + + #_ = a.set_frame_on(False) + # a.use_sticky_edges = False + if config.expand_chart(): + for ylabel in a.yaxis.get_ticklabels(): + ylabel.set_horizontalalignment('left') + for xlabel in a.xaxis.get_ticklabels(): + xlabel.set_verticalalignment('bottom') + plt.gca().set_position((0, 0, 1, 1)) + + self.fig.set_constrained_layout_pads(w_pad=0, h_pad=0) + # expand the axes!! # ๐Ÿ“‘ styles overid left to right def get_default_styles(self, config, display, files): @@ -101,7 +117,7 @@ def write_to_stream(self, stream): self.fig.savefig( stream, dpi=self.fig.dpi, - bbox_inches='tight', + # bbox_inches='tight', pad_inches=0.0, transparent=True, ) From 4fb28c8106158520bdfaebade71995b4fae5b168 Mon Sep 17 00:00:00 2001 From: donbing Date: Mon, 9 May 2022 20:20:35 +0100 Subject: [PATCH 41/66] optionally draw entry price line --- src/bitbot.py | 5 +- src/configuration/bitbot_config.py | 6 ++ src/drawing/chart_overlay.py | 4 +- src/drawing/image_utils.py | 5 + src/drawing/mpf_plotted_chart.py | 42 +++++--- src/exchanges/crypto_exchanges.py | 1 + src/exchanges/stock_exchanges.py | 1 + .../test_264,176_APPLE 1mo defaults.png | Bin 0 -> 2078 bytes .../test_264,176_APPLE 3mo defaults.png | Bin 0 -> 1891 bytes tests/images/test_264,176_BTC EXPANDED.png | Bin 0 -> 2168 bytes tests/images/test_264,176_BTC HOLDINGS.png | Bin 0 -> 2366 bytes tests/images/test_264,176_BTC OVERLAY2.png | Bin 0 -> 2221 bytes .../test_264,176_BTC VOLUME EXPANDED.png | Bin 0 -> 2654 bytes .../test_264,176_BTC VOLUME OVERLAY2.png | Bin 0 -> 2365 bytes tests/images/test_264,176_BTC VOLUME.png | Bin 0 -> 2281 bytes ...264,176_GBPJPY 3mo defaults with entry.png | Bin 0 -> 2010 bytes .../test_264,176_bitmex BTC 1d defaults.png | Bin 0 -> 2357 bytes .../test_264,176_bitmex BTC 1h defaults.png | Bin 0 -> 2172 bytes .../test_264,176_bitmex BTC 5m defaults.png | Bin 0 -> 2119 bytes .../test_264,176_bitmex ETH 1d defaults.png | Bin 0 -> 2323 bytes .../test_264,176_bitmex ETH 1h defaults.png | Bin 0 -> 2139 bytes .../test_264,176_bitmex ETH 5m defaults.png | Bin 0 -> 2182 bytes ...test_264,176_cryptocom CRO 1d defaults.png | Bin 0 -> 2232 bytes ...test_264,176_cryptocom CRO 1h defaults.png | Bin 0 -> 2239 bytes ...test_264,176_cryptocom CRO 5m defaults.png | Bin 0 -> 2062 bytes .../test_400,300_APPLE 1mo defaults.png | Bin 0 -> 2529 bytes .../test_400,300_APPLE 3mo defaults.png | Bin 0 -> 2498 bytes tests/images/test_400,300_BTC EXPANDED.png | Bin 0 -> 2698 bytes tests/images/test_400,300_BTC HOLDINGS.png | Bin 0 -> 2879 bytes tests/images/test_400,300_BTC OVERLAY2.png | Bin 0 -> 2744 bytes .../test_400,300_BTC VOLUME EXPANDED.png | Bin 0 -> 3801 bytes .../test_400,300_BTC VOLUME OVERLAY2.png | Bin 0 -> 3048 bytes tests/images/test_400,300_BTC VOLUME.png | Bin 0 -> 2954 bytes ...400,300_GBPJPY 3mo defaults with entry.png | Bin 0 -> 2677 bytes .../test_400,300_bitmex BTC 1d defaults.png | Bin 0 -> 2859 bytes .../test_400,300_bitmex BTC 1h defaults.png | Bin 0 -> 2651 bytes .../test_400,300_bitmex BTC 5m defaults.png | Bin 0 -> 2568 bytes .../test_400,300_bitmex ETH 1d defaults.png | Bin 0 -> 2877 bytes .../test_400,300_bitmex ETH 1h defaults.png | Bin 0 -> 2621 bytes .../test_400,300_bitmex ETH 5m defaults.png | Bin 0 -> 2743 bytes ...test_400,300_cryptocom CRO 1d defaults.png | Bin 0 -> 2819 bytes ...test_400,300_cryptocom CRO 1h defaults.png | Bin 0 -> 2668 bytes ...test_400,300_cryptocom CRO 5m defaults.png | Bin 0 -> 2771 bytes .../test_640,448_APPLE 1mo defaults.png | Bin 0 -> 3539 bytes .../test_640,448_APPLE 3mo defaults.png | Bin 0 -> 3491 bytes tests/images/test_640,448_BTC EXPANDED.png | Bin 0 -> 3601 bytes tests/images/test_640,448_BTC HOLDINGS.png | Bin 0 -> 4036 bytes tests/images/test_640,448_BTC OVERLAY2.png | Bin 0 -> 3987 bytes .../test_640,448_BTC VOLUME EXPANDED.png | Bin 0 -> 5766 bytes .../test_640,448_BTC VOLUME OVERLAY2.png | Bin 0 -> 4732 bytes tests/images/test_640,448_BTC VOLUME.png | Bin 0 -> 4529 bytes ...640,448_GBPJPY 3mo defaults with entry.png | Bin 0 -> 3659 bytes .../test_640,448_bitmex BTC 1d defaults.png | Bin 0 -> 3999 bytes .../test_640,448_bitmex BTC 1h defaults.png | Bin 0 -> 3916 bytes .../test_640,448_bitmex BTC 5m defaults.png | Bin 0 -> 3643 bytes .../test_640,448_bitmex ETH 1d defaults.png | Bin 0 -> 4039 bytes .../test_640,448_bitmex ETH 1h defaults.png | Bin 0 -> 3724 bytes .../test_640,448_bitmex ETH 5m defaults.png | Bin 0 -> 3587 bytes ...test_640,448_cryptocom CRO 1d defaults.png | Bin 0 -> 3972 bytes ...test_640,448_cryptocom CRO 1h defaults.png | Bin 0 -> 3822 bytes ...test_640,448_cryptocom CRO 5m defaults.png | Bin 0 -> 3744 bytes tests/test_chart_rendering.py | 101 +++++++++++------- 62 files changed, 106 insertions(+), 59 deletions(-) create mode 100644 tests/images/test_264,176_APPLE 1mo defaults.png create mode 100644 tests/images/test_264,176_APPLE 3mo defaults.png create mode 100644 tests/images/test_264,176_BTC EXPANDED.png create mode 100644 tests/images/test_264,176_BTC HOLDINGS.png create mode 100644 tests/images/test_264,176_BTC OVERLAY2.png create mode 100644 tests/images/test_264,176_BTC VOLUME EXPANDED.png create mode 100644 tests/images/test_264,176_BTC VOLUME OVERLAY2.png create mode 100644 tests/images/test_264,176_BTC VOLUME.png create mode 100644 tests/images/test_264,176_GBPJPY 3mo defaults with entry.png create mode 100644 tests/images/test_264,176_bitmex BTC 1d defaults.png create mode 100644 tests/images/test_264,176_bitmex BTC 1h defaults.png create mode 100644 tests/images/test_264,176_bitmex BTC 5m defaults.png create mode 100644 tests/images/test_264,176_bitmex ETH 1d defaults.png create mode 100644 tests/images/test_264,176_bitmex ETH 1h defaults.png create mode 100644 tests/images/test_264,176_bitmex ETH 5m defaults.png create mode 100644 tests/images/test_264,176_cryptocom CRO 1d defaults.png create mode 100644 tests/images/test_264,176_cryptocom CRO 1h defaults.png create mode 100644 tests/images/test_264,176_cryptocom CRO 5m defaults.png create mode 100644 tests/images/test_400,300_APPLE 1mo defaults.png create mode 100644 tests/images/test_400,300_APPLE 3mo defaults.png create mode 100644 tests/images/test_400,300_BTC EXPANDED.png create mode 100644 tests/images/test_400,300_BTC HOLDINGS.png create mode 100644 tests/images/test_400,300_BTC OVERLAY2.png create mode 100644 tests/images/test_400,300_BTC VOLUME EXPANDED.png create mode 100644 tests/images/test_400,300_BTC VOLUME OVERLAY2.png create mode 100644 tests/images/test_400,300_BTC VOLUME.png create mode 100644 tests/images/test_400,300_GBPJPY 3mo defaults with entry.png create mode 100644 tests/images/test_400,300_bitmex BTC 1d defaults.png create mode 100644 tests/images/test_400,300_bitmex BTC 1h defaults.png create mode 100644 tests/images/test_400,300_bitmex BTC 5m defaults.png create mode 100644 tests/images/test_400,300_bitmex ETH 1d defaults.png create mode 100644 tests/images/test_400,300_bitmex ETH 1h defaults.png create mode 100644 tests/images/test_400,300_bitmex ETH 5m defaults.png create mode 100644 tests/images/test_400,300_cryptocom CRO 1d defaults.png create mode 100644 tests/images/test_400,300_cryptocom CRO 1h defaults.png create mode 100644 tests/images/test_400,300_cryptocom CRO 5m defaults.png create mode 100644 tests/images/test_640,448_APPLE 1mo defaults.png create mode 100644 tests/images/test_640,448_APPLE 3mo defaults.png create mode 100644 tests/images/test_640,448_BTC EXPANDED.png create mode 100644 tests/images/test_640,448_BTC HOLDINGS.png create mode 100644 tests/images/test_640,448_BTC OVERLAY2.png create mode 100644 tests/images/test_640,448_BTC VOLUME EXPANDED.png create mode 100644 tests/images/test_640,448_BTC VOLUME OVERLAY2.png create mode 100644 tests/images/test_640,448_BTC VOLUME.png create mode 100644 tests/images/test_640,448_GBPJPY 3mo defaults with entry.png create mode 100644 tests/images/test_640,448_bitmex BTC 1d defaults.png create mode 100644 tests/images/test_640,448_bitmex BTC 1h defaults.png create mode 100644 tests/images/test_640,448_bitmex BTC 5m defaults.png create mode 100644 tests/images/test_640,448_bitmex ETH 1d defaults.png create mode 100644 tests/images/test_640,448_bitmex ETH 1h defaults.png create mode 100644 tests/images/test_640,448_bitmex ETH 5m defaults.png create mode 100644 tests/images/test_640,448_cryptocom CRO 1d defaults.png create mode 100644 tests/images/test_640,448_cryptocom CRO 1h defaults.png create mode 100644 tests/images/test_640,448_cryptocom CRO 5m defaults.png diff --git a/src/bitbot.py b/src/bitbot.py index 8abc47db..5e4f9ed8 100644 --- a/src/bitbot.py +++ b/src/bitbot.py @@ -40,7 +40,8 @@ def display_chart(self): # ๐Ÿ“ก await internet connection wait_for_internet_connection(self.display.draw_connection_error) # ๐Ÿ“ˆ fetch chart data - chart_data = self.market_exchange().fetch_history() + market_exchange = self.market_exchange() + chart_data = market_exchange.fetch_history() if(any(chart_data.candle_data)): # ๐Ÿ–Š๏ธ draw the chart on the display with io.BytesIO() as file_stream: @@ -56,7 +57,7 @@ def display_chart(self): else: img = Image.new('RGBA', self.display.size()) draw = ImageDraw.Draw(img) - draw.text((0, 0), f'{self.config.instrument_name()} was not found on {self.config.exchange_name()}') + draw.text((0, 0), f'{chart_data.instrument} was not found on {market_exchange.name}') self.display.show(img) return img diff --git a/src/configuration/bitbot_config.py b/src/configuration/bitbot_config.py index dc1b56c0..d33e2e6a 100644 --- a/src/configuration/bitbot_config.py +++ b/src/configuration/bitbot_config.py @@ -69,6 +69,9 @@ def entry_price(self): def chart_since(self): return self.config.get('currency', 'chart_since', fallback=None) + def entry_price(self): + return float(self.config.get('currency', 'entry_price', fallback=0)) + def set_currency(self, formData): for key in BitBotConfig.currency_keys: self.config["currency"][key] = formData[key] @@ -166,6 +169,9 @@ def save(self): with open(self.config_files.config_ini, 'w') as f: self.config.write(f) + def read_dict(self, dict): + self.config.read_dict(dict) + # ๐ŸŒฑ intro setup def on_first_run(self, action): if self.config["first_run"]['enabled'] == "true": diff --git a/src/drawing/chart_overlay.py b/src/drawing/chart_overlay.py index 93a1a4fe..7e03cb38 100644 --- a/src/drawing/chart_overlay.py +++ b/src/drawing/chart_overlay.py @@ -55,7 +55,7 @@ def overlay1(self, chartdata): DrawText.percentage(chartdata.percentage_change(), self.title_font), ], # ๐Ÿ˜ large font price text - [DrawText.humanised_price(chartdata.last_close(), self.price_font)], + [DrawText.number_5sf(chartdata.last_close(), self.price_font)], # ๐Ÿ’ฌ draw holdings or comment [ DrawText.number(portfolio_value, self.title_font) @@ -81,7 +81,7 @@ def overlay2(self, chartdata): # โž— draw coloured change percentage [DrawText.percentage(chartdata.percentage_change(), self.title_font)], # ๐Ÿ˜ large font price text - [DrawText.humanised_price(chartdata.last_close(), self.price_font)], + [DrawText.number_5sf(chartdata.last_close(), self.price_font)], # ๐Ÿ’ฌ draw holdings or comment [ DrawText.humanised_price(portfolio_value, self.title_font) diff --git a/src/drawing/image_utils.py b/src/drawing/image_utils.py index 9bee0500..0681a0bf 100644 --- a/src/drawing/image_utils.py +++ b/src/drawing/image_utils.py @@ -29,6 +29,11 @@ def humanised_price(price, font, prefix=""): def number(value, font, colour='black'): return DrawText("{:+.2f}".format(value), font, colour) + # ๐Ÿท๏ธ number text + @staticmethod + def number_5sf(value, font): + return DrawText("{:.5g}".format(value), font, 'black') + # ๐ŸŽฒ randomly selected up/down comment @staticmethod def random_from_bool(options, up_or_down, font): diff --git a/src/drawing/mpf_plotted_chart.py b/src/drawing/mpf_plotted_chart.py index ed8cab0e..3c6ec2ce 100644 --- a/src/drawing/mpf_plotted_chart.py +++ b/src/drawing/mpf_plotted_chart.py @@ -33,6 +33,21 @@ def __init__(self, config, display, files, chart_data): base_mpl_style=style_files, mavcolors=['#1f77b4', '#ff7f0e', '#2ca02c']) + # ๐Ÿ“ˆ settings for chart plot + kwargs = dict( + volume=config.show_volume(), + style=mpf_style, + tight_layout=True, + figsize=tuple(dim/100 for dim in display.size()), + xrotation=0, + datetime_format=self.date_format(data_frame), + ) + + # ๐Ÿšช add a line indicating entry price, if configured + entry = config.entry_price() + if entry != 0: + kwargs['hlines'] = dict(hlines=[entry], colors=['g'], linestyle='-.') + # ๐Ÿ“ˆ create the chart plot self.fig, ax = mpf.plot( data_frame, @@ -41,17 +56,12 @@ def __init__(self, config, display, files, chart_data): returnfig=True, type='candle', # mav=(10, 20), - volume=config.show_volume(), - style=mpf_style, - # tight_layout=True, - figsize=tuple(dim/100 for dim in display.size()), - xrotation=0, - datetime_format=self.date_format(data_frame), + **kwargs ) plt.subplots_adjust(left=0.0, bottom=0.0, right=1, top=1, wspace=0.1, hspace=0.0) - # self.fig.set_tight_layout(True) plt.margins(x=0) + # ๐Ÿช“ make axes look nicer for a in ax: # a.set_adjustable('box') @@ -59,26 +69,28 @@ def __init__(self, config, display, files, chart_data): a.autoscale(enable=True, axis="both", tight=True) # margin between candles and axes a.margins(0.05, 0.2) - a.xaxis.labelpad = 0 - a.tick_params(pad=0, axis='both') + # a.xaxis.labelpad = 0 + # a.tick_params(pad=0, axis='both') a.locator_params(axis='both', tight=True) # remove labels _ = a.set_ylabel("") _ = a.set_xlabel("") a.autoscale_view(True) - a.reset_position() - - #_ = a.set_frame_on(False) + # a.reset_position() + + # _ = a.set_frame_on(False) # a.use_sticky_edges = False + # expand the axes!! + # TODO: this needs to deal with the volume axes :( if config.expand_chart(): for ylabel in a.yaxis.get_ticklabels(): ylabel.set_horizontalalignment('left') for xlabel in a.xaxis.get_ticklabels(): xlabel.set_verticalalignment('bottom') plt.gca().set_position((0, 0, 1, 1)) - - self.fig.set_constrained_layout_pads(w_pad=0, h_pad=0) - # expand the axes!! + + # self.fig.set_tight_layout(True) + # self.fig.set_constrained_layout_pads(w_pad=0, h_pad=0) # ๐Ÿ“‘ styles overid left to right def get_default_styles(self, config, display, files): diff --git a/src/exchanges/crypto_exchanges.py b/src/exchanges/crypto_exchanges.py index a254a32b..09a339a5 100644 --- a/src/exchanges/crypto_exchanges.py +++ b/src/exchanges/crypto_exchanges.py @@ -17,6 +17,7 @@ class Exchange(): def __init__(self, config): self.config = config + self.name = self.config.exchange_name() def fetch_history(self): configred_candle_width = self.config.candle_width() diff --git a/src/exchanges/stock_exchanges.py b/src/exchanges/stock_exchanges.py index 2d46678a..3764065d 100644 --- a/src/exchanges/stock_exchanges.py +++ b/src/exchanges/stock_exchanges.py @@ -19,6 +19,7 @@ class Exchange(): def __init__(self, config): self.config = config + self.name = 'yahoo finance' def fetch_history(self): instrument = self.config.stock_symbol() diff --git a/tests/images/test_264,176_APPLE 1mo defaults.png b/tests/images/test_264,176_APPLE 1mo defaults.png new file mode 100644 index 0000000000000000000000000000000000000000..de966e4ce00b96e9ec36006b30d672d4dd78304e GIT binary patch literal 2078 zcmeAS@N?(olHy`uVBq!ia0y~yVB`R@H*hcm$s@-Y5*Zkn{s#Djxc>kDA1DICqhK@y zMpy`hCLCJKz`%0H)5S5QV$Rz+-P2Yp@VIvV|9`RkZq)=9rAN}oHea8$%}ZrNci7Uo z0vw7hb5g2yGwyW|Y*1owW$0oMVbov>U|GO{A@CtkQ0epiKOg4zcX0@%RQ~uFEBJZE z0*=0pnfnWSb}YV_+_|GrBA8{y0p8I24DKu|ItB7mt?T`d9Fz+@vh(ac$0y%6zL&pj zr*mlAT%{z%d74b;r4z5ahTltHd84_(lww(cQHrThEx$p!EHTC8i%IUI=AeV z4-^mFpJ;k-%KQrN=dNdptskE$@w_AX=+mE)-j0dO{;X2EbNWN9a?%{l{noBLr9C_R zT^LN`A$$8jliW z^Sgh{U#Ks*Y~Ay+-q-zt%3T`5`@`8?8)kK|`zw?@njBmg-sQ3MxR$L?zOvF(xz%3` zL>T=#Exrr-2o}CxZZEMar)-f}!0fIqie<576BBDYI7_tFwCI-}oh|w5N?|jfi$}!1 zH{$D?RdQvMLu)5xc}NCqm}Bg9VRp{vMI8|u-ux zg<`!Nfzjq&1#T`Ej?T7GIW*;|QdoKKmdV{K_|$nL-7l{)QHqLoVG- z_KUuseCv5$am8tb#Y6zKm7ckn&ybD$nwD)BIvIovz5Pz3sZ@&b2jND`Z8oUq`)) zcrGiL7wbJ&xkJP5+nft~9*J2AZ1nkA8|z}~AL_EtBy`%gjJHqj%_x&x?y@E{R4>-Mztr2I$)cPTH!tU6Z;67_TdCq*Te4qF zmlybW>R{ns&iuX(X|21b^#s43{;)Aq_+p8DQjVGXQr;ihO4F==o_qU8wCYBEe!~C# zg-bdvNEoPzFjn+LJl6hur$xzO)~DYVCJb1!=8Uj7^A>sjm)gOSH$p#aJo@O9nh<_= zamR7vsg1Fw{YrA@TMqbN$Z8gFk`geM*2qdKFm*Y#-lyZ2XyTuTg(nW>^i0>_k5pR1 z;n`bQbaO^o&~=p;Ka>83rVB6n|GS@SqrLuDsl`b_OU*R$Pw7X0o161@!zAyenb#&* zscd|g^KB1@pt%Zb#|nkXnVp<|^Y+YIP`7*b)lF;4if>xJcjH%F)>G6SC#JZHKP~2! zd5p{256NDFbsbwXAN`48Z)3KSyZ`x0qV0`qP9bJ3GsK=9zIyCP`Pr@lXP@=Y%(-r_ seR3-KTydyv^XKyV<&MD8Y691PhBI73vo|?S)BqLjp00i_>zopr0QEpk#Q*>R literal 0 HcmV?d00001 diff --git a/tests/images/test_264,176_APPLE 3mo defaults.png b/tests/images/test_264,176_APPLE 3mo defaults.png new file mode 100644 index 0000000000000000000000000000000000000000..cd33c08e84279f985b94a1190c5fd35700734482 GIT binary patch literal 1891 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 literal 0 HcmV?d00001 diff --git a/tests/images/test_264,176_BTC OVERLAY2.png b/tests/images/test_264,176_BTC OVERLAY2.png new file mode 100644 index 0000000000000000000000000000000000000000..44abfccf1bdef764a1a5b9af3799dd57b3e4229c GIT binary patch literal 2221 zcmeH|`!|#c7{`aEdTG&%nZ(5OA{v)fgrstLUy*5cYF*j}F|{eTn9AKsCgzfal!*po zD#>cXHcf7sGcls1r0HhGur3j~ERk8x>A%>X^E}Ua&gaMP`JV5?B$M{2sp_htP$)GI zclZDbr35V90$|0`mNcP)P$=bZWTF?MP$-tj^8BbD3jEI$@D3E0pinDAJz!_A*n-gl z=D7m=PfkpQqN65N2}-9Kv9e!ZJmX#A%h%!PmPnNZCwqidia#)@`(IM0S1m~LMY6@Y z@G27}p=)w_#kx=aK|UJmpc%{Xrmye|!(&r{(JJrmukpAy-F;rh-mymMS_j{f1k?3D zhIE_ts?jMWk*PRK?A>RlN&)^piH|<1`2Fr~Hy2TYV7 zt*lDt$$HmA-(lc9XBfEje>#Wlju&E5GJ^@!b>Ob6x8vDb zDH6Z0a~BvLS065`45#BivmRm4(gSiDkIcj1o zmNg1(O$$<~#HXIx>*9>|j|*+91qsK%jTE64*1+1*8SCVS#-82Xu2+lEboR6wTSU?F z^QPg;T2>fG`dxGlL9UsLpY}qAKDqPo7PbTjB{$;;h8r{L^@?x%>+AgWoN(}f-X`=QZ3g=wG--z&L6%pF{=aya5OOzE&4L!KLWQy_-Pg zm;2gftxU#hPY9YC<{(CozfM%(9@lFIy<7_}wh0(|Dvh70+V281lamScg9x;j-6GY= z>eiL{H^J2{u|!yv4LI6gXFN-<2mx=LZ}^P;SR#uMSC;|VtTwHS&=aO~3&eYy#VQQSlt$lv}Mo1!(;)f{QB?+vD@ z$Nh=9PNL8IMH%yQ%Nb!i-{%PM1TkidIkd|=lZ9te!Kl1-W-3Brsdxq#0on%r1x(EP zLCR8RQ*-BfXBan8XH6FQn!q>S@5^^9rRu;=bH7Usp&psxdnL*cjbID*$DqW}Bi9kF z_>?J4`6{r|2omc=wQ9hl)jZ?BgD^SjAgY@y|!<5c=uN zqKp$`;Aq`lPW=wy$qR$-(eHGMO=uv$1@~81YNN|Nq;JN<*>#v&u literal 0 HcmV?d00001 diff --git a/tests/images/test_264,176_BTC VOLUME EXPANDED.png b/tests/images/test_264,176_BTC VOLUME EXPANDED.png new file mode 100644 index 0000000000000000000000000000000000000000..72d14128d06f7895fe9d89bcb4df696ce77ba755 GIT binary patch literal 2654 zcmeHJ`!|$(AAM$wnFrxJ<0OZn$IOc+B9{hrUY^kiz2z2VQgS^>(nu-S=7z`7$(ung zBT_0Qq27a{GBb@^2}wE)h13v7IbED3occT7v)9_6wbx$zr@hu^t)1=b?V+t{s0l%k zwwEW{AA)f3H(dv-eYmoS6Mq=n@~CKCIDa{OX-VJbL+Q=Y+1MAvSG6mK zp}U`zlC!0GB@ZZf6lIj8(R6e^Y}1iF(rj#7muIn4x0dZ_nasq<2w}iVJW!G*s7nOt z_1C#Zo^dscjSwvtenfR+zuzp&O6f3Lb4WxTz1?Qqe97tRZ?S$>Sp`oMW0Pu7yPLd% zkB)KoVoLwuYvi=7zxMR_pIkuniG90u{sQuq0+h75Qba24xp6#ZU4_K^3!}YOQl>RN zFqlst!Bq-l!A=vM%Ex185(4rF&GII54zr6G7A35!q{x5S@9rtuIP$;k;RB{FH_O+M zY;Bl@Jg49!3*Cs-<`z2xb_x;Wy*O!Spj2$$O&NF@f3I5IRwG*XD((0A=3hby<>@Q@f$MArqMUfEIMBC71Acq)gR|*+ zyAwW!Wai>f1~;Idz;!n&JpE*hsV1{l4||#gBWS3e%*KS!zXnZa9` zuw`7}Cw~XiBg>@8uP^(jm(j~t^4`Z<;xDWw+vymbEjN0Pz*EhYRJ0radKlMNQ|~@O z46Cxo)Vw~q&mo`3Hj zLBal%XOL~TIsu7N&F@ezu}xs0?ZLnTeaffM)aYn#Z5;5sV*(@$F{fygKJn!wy_>Fg3>m_pJCk!~CN8ilbQLA84XJi; zgzFi>^fDL*?^=EaRn)MJ!suKW-*yT^kvRAdjxH=MJ}kI`!OG7DV5m0*>3VFK#=2$E z%}1Ip3}MM|bx0EXb(f1~xIde#XeF?pSJ`2^CNO<9{&m)OBp*HAFN#{%w|2|=dBW*2iu z2lImwnx2OcSaf%o=!-Nmif;zA^JU19{k|#e2n195Dv*QZ$hVhG$4dRR@PIryvS?FvDxC8@1A<=l4Oym8k$DvZym zFVBkrC$;}7HrSE+Wi1OT3IEXd^0oLNRYy9qU(Y`seG(B}hit>imFLNun8u>tFz(b2 z(3h@;`8NdQ(VaFl3t)~J+_Oirj|Tikit&OSGJex;&S#uyJ=YetvLWCeSig5pW9651 ze$pYC+FGx2hOIeUQLcU>v7X6Ui*KuD7#)oTY5TP`uxe+wgocMH2C!TB9%~1Yk9qeg z^@@_H#OpCYQqsU`Cz36?e?$h>UAYqJ)q48m(T4nohRwc+iZhJWzq*-dCm5R T%(-I?-=~3>yEnVmEmZI~aLPh) literal 0 HcmV?d00001 diff --git a/tests/images/test_264,176_BTC VOLUME OVERLAY2.png b/tests/images/test_264,176_BTC VOLUME OVERLAY2.png new file mode 100644 index 0000000000000000000000000000000000000000..c0bfab0b9f7293de8cf7ea1fb546fd2db392b769 GIT binary patch literal 2365 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 Fe*q=Om+Alj literal 0 HcmV?d00001 diff --git a/tests/images/test_264,176_GBPJPY 3mo defaults with entry.png b/tests/images/test_264,176_GBPJPY 3mo defaults with entry.png new file mode 100644 index 0000000000000000000000000000000000000000..ea0bbb1d0205bda67455f06cc7553e6362710bb8 GIT binary patch literal 2010 zcmeAS@N?(olHy`uVBq!ia0y~yVB`R@H*hcm$s@-Y5*Zkn{s#Djxc>kDA1DICqhK@y zMpy`hCLCJKz`!!Y)5S5QV$R#S-P2Yp@VI*Z|GzlhmsdbxK~UVOo8`URU3p$ki*i|> z%oD+;^y{BYcmB!kQ@Hz=-wz5u_@hei#K&Y84X!L5{*O&DkB&TbT&QnbBEv1;#FTpQ zkz&A}&$a9pT_?H~${t^n&DQwx!p8Pg^NsgUzHh3S_oc(dWt+Rn=MR~pD>ypk9>#ay zxW8@Q{jVz8H@0ru|KqT)v3RnJ4MRtQLQ^A0S_el`(fQ)ktzWYnIM|dVIuhDsb#gC7 zecHHWbLrAwTXVFU-prhPyCPVyY|VT37uMYz=Uy%AxWG5>R&wMt>xgUJ9OrMEi5vcu z*x1m)(vh%CPRBd-*5^4(#D3P!5Zl?g0=$-v!KtPrXu$Jw|?#aq$g;f(Fn9_ zM!D}jCzj2-IOI0&bluK)=abTp_zf=@T@20(DBhFW-SvW3mH!>HAdicIz`-1?L$S9d z?JI9j?viu-_%`FcNa4R#ld5CQ#U6@@n^!V~D#g|GZ1^l3dij&U!95NwvsZjF4ijCU zb%S+YoraQD#U{pOXV=()OtOh|`I7iiTHqkqQCmA$d4O(M-SI_E@LzthV6NM>KJktp zndh!Cf-K(OEm3~n_r{|f!ILugGX%?irGyKWB%yt@D3eQt);|D8&gE+)we2hiTNBSrrvEYzIf+qjNtR|UB4y@3qCV!a;-kXBPiT2sNLz&z@gf>*VW*E|M5-_ z?q}Ts{fbR9HIu9$kqwN`M76!=8x@^$eYIyCd*Y*z)ccGTB)8d5Z89iD0#m=4XyCpB zn}v_Q{4-Z0?!nE@@_(VrxK`~y_VFtyz4Yuku-Vk$Kn>UVyc~Q?*M^-sSYII+yt*=dMML+3nps3{n<%w_K8Wa_Wiyq~oQUT;5gJ z1ty>NOj)|B^RU?)!NzAz980s}T2}miYtdSpvuWbgRpOiXcF%ujA5_-e9qMhXbYhOj w+KeMlHVH+ptfSKj8esxT-_sPViqBKTxsk>FVdQ&MBb@0L`T>e*gdg literal 0 HcmV?d00001 diff --git a/tests/images/test_264,176_bitmex BTC 1d defaults.png b/tests/images/test_264,176_bitmex BTC 1d defaults.png new file mode 100644 index 0000000000000000000000000000000000000000..87154372d5fbb91a2ccf22f78fe0386c41b7b441 GIT binary patch literal 2357 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 literal 0 HcmV?d00001 diff --git a/tests/images/test_264,176_bitmex BTC 5m defaults.png b/tests/images/test_264,176_bitmex BTC 5m defaults.png new file mode 100644 index 0000000000000000000000000000000000000000..8609850e5b8a1bd5d43b02867ed71d7563983498 GIT binary patch literal 2119 zcmeHI`#01H6#shFH%sPQm|`j4+8UBaBdv8ruw(+7kikfjDMf_I^5=^?+=~Kl6#TKyBp2EcM(OTO zWns=**5Mbe(Ko-S3wX~D^1h`+T7~f!(_jEiUc($l8Bu2Tm5*k7$1ZVE*C?^Ctqate z2I_=~{&d8%fh^ovNzuCyUuh>187hc>*Lku&`S|_%Q$+H@HPAug&!&{P9EMy~p9NRv z>5CA5Efiq;SGQJS|-OYvuH4CJ7fp0t*Frc;_&Q8UptSpU( z!!Zo|+0wh3iblY!srgD7Xfs6;(zJ76fy|ZIM}8(baSu!Al%IaAcXM8Y?K77~2--Wg z-NheUNQa%8qHa&kh7w?Y(#MZ-At9)7#1mmuE@;Co=kH1Xo~9B}p$5BEpbb+Ap0<)F ziEtHTojty*LNax1cB90N9zD7ivU}j)ZN4YZ617P@`t~5QHu@)G=RLSXW`XLqjXtA~ zVi^J{EZ%w68Ok}t`IJEx?%HdL=$7`|BVr3yH2w&&b8(lK99@ZpV()t(c9B)M6Te-E zN07zvTQ4g?@xz&PZjKicSAsbw$_S(y4qP+24XXdEghQEsZiEa3x7T6I^+Th|EjvN2 z)tIpyQPr7pD-md2;x@ju$o~T) zr-0-LaWe>+oF0extKg}EX)Wj^Ea4`XmOXG;)brF@zKmt%Rf20iBVsdYTNYCI?l?uL zF{OXE?(ikrEzAiDy$F+NNK@KvEan^9hiit=-97UhjMmpT=sD{V@O~yNTE}sDFUoAG ztM_4+byTF2F@mFUBTd+B!}>lpxPPlaTUX_G@M+(M*ixP?-OBU&jmgQ;g3Y84^s++J zCL<>%LxjbsRvh~DBb43Vk2>#Ea7c>_X6GS@gI|;fRCZKivX_Rj*DDk5n`ObF6YvjW zgZBP5l#2iLG>to{qBtw8%Sig#lHHSY##~e$g?0^WAIY0**azYFL50@cagIv6DGh~W zP6YXBtXhBMU@3okE+co^cC?q6%AyQMuFTDL`M}5G3||TQ+mu@hbZ9ct5-C8k!bXb2 z)m3?H+??_sCa9j@Ry4}3+Y;Dbn!}_k{_Wz9VJT3XI1>x{wZz-oDktV^M^D55nHEgaSxLq&tMWNdLbzzJ`Vt*l9ftIJhewc;)M_h>Yf6fP xV;;Cnnbn%x>bt$fmeYLelH$mq2@@ytS^=mXy0=5C#WBhs;D+u;sz`w;{{s1Pbz}el literal 0 HcmV?d00001 diff --git a/tests/images/test_264,176_bitmex ETH 1d defaults.png b/tests/images/test_264,176_bitmex ETH 1d defaults.png new file mode 100644 index 0000000000000000000000000000000000000000..34a839f0daf7704f107527828179681d7148dad4 GIT binary patch literal 2323 zcmeHIi&v5d6bBUghN2&78b0D%rXvM>Z=Dlou@fH%XV zP$+_*FEbd0LIcZr4WP3eJ33JjC=}*hAPe!*YPHMA2mjyxSKvRUKnSNzfB`%yImx#m{VdsH%PaRxa6JJ=~bBC7v=UbUoM`lQw7ILD#y zX?f{LQNzelM(VZo(lzO=Tkq)jpe?*HZ*uzh_S=m6e|Z1nrvAazG4@c>qiQTi`R9?a zJM_4yT)rZX7{0NF0cwY7!>#$vp=|L8`}tr=#Xe)|^`_brCz}!kByyFb1x=uvoIpDF z?7@*r`t9RMlTO1bOgiCg70di^jQBscy4hA7C zk!Z4^BG#71yF9zw3XA>#p_^ARV?q6fLxttG3yrd1IL%ns7uLc5ks!*;)A}?}ZH`Nu;R)}XTO(FsYqRb=>D7D|;L^?76a6j7`O+3JQF*HiF zsqAwDt$TiRF)bV-?Jt;=s9ILt-WLt7IAG#7VicOp7}V)*pYFB3Meg|e4+3kf>(FkJ zHUy$*S+DL5ua3dIkEJsJ1e39kpb>j$Ri zD-IcV5H*J#ca^}P{2D9Qjn3~u3*&?2F>ofoM?Cfl&)o+0nO5?^v2X%FF`6rPHNyst zYMUT`qjj|?U5l^IofIBK!+gksS;2Zrv@@-uc2fB$S;goVeER3u6isV4TRI$jmC#ShC1<@NWi^cckD&%Hd*ZBio8JNwogX9`cY_i-c3GQhC34}cqqkX5+b(>puu$t zrBmq-^C&gXs|~VkvDhz4FDfXz+n9w$3H8DPC21+Vz za2X+dA22Cvsh0soZ9Z=Ji(!doMCG`c@oHA3(M+wzq95dYAgW7=qPaMc|e2sB%aWkV?k2$+4RgRf$b% zdDJ9Qi0q@aH4T(CAD8U_PYsn@8=MG9e0Gz>MEX-z!-hF7{(x?_p3CWb*JG}5=O%Mq zTlATSTj+u+ZsnJH!byEz)|;2cb;$|f$^a3C;Q8Y_E0?BHJU1t0d63R#p#BL$*S{Bk z0Rrsf{cezTBeEA~#%3|jc_k*Aj)Jlx>a*nV?%+U&&)r;jj4(WA`Ka`qVh4y;F7qD~ zl@s5o9!q83aHyg3ZUCO!;S1M2qX@@~QwE|p2)9WE#r|c%WiRa&3VY6+;q0+|F}&zK zmi*$<@KAiURe9V$`6lnqcl+auuCyc-*sN?U)bd+d9&U8CBnYXyB)3;X~ejXw!G~;aN(|Z6w>E< z)XIFx`z(8ZPw_3*c=kfCvsuf^%;j=!AmjnEEoW6x2`ORShkxeh6~L_Wjfk@T literal 0 HcmV?d00001 diff --git a/tests/images/test_264,176_bitmex ETH 1h defaults.png b/tests/images/test_264,176_bitmex ETH 1h defaults.png new file mode 100644 index 0000000000000000000000000000000000000000..85842ad9633f9719d3fe17ce69f2628e77dfd1cf GIT binary patch literal 2139 zcmeH|{Wp{e6vt;6$5XN9VIpN2&mbY>?J!hK&zJ}iia`vL*CshK9d9*_?J<+LDHK{Y zERExMY13G}SYy0ZE0(-8gIH;_UQ@KlZ0el-C$@Xez2|%HPxpN8z2|0ndQgs2xQ^q2xY$y7`c0GTE2Prhm8Z1pa3Pd_#m~D3pSx3+&{> zD48wcoUg_!ky~UkX-zho32_&&Z)U_EKW@(r3b(2l+|i>NGrJMD(Y$e@hbIn^P#?~R z{B>_lMKD}6I6*wE!kJN?ee=lgc+XJe^h>B(2UX*Jrp+G{92TV$#^cuNYlFSEb#~xl zW{ArCTbl7mFEyg&WAEx1;|8GwVPw~>U%lB&u19L+K@5z=IvqARa+H(EZ)&&|iH5P; z*bBGXlnwGOv$mnjM&z(x(q#aVMPVdt3 z9e;Y4s#E5TiFl&RG?-lYK-Ke@=MYYQQHuV)OWqL*ez4LP~x(d|fcW)P^L6 zAp}xFH15Fwz_tp0-c}Gte6>21h=FHV0TYJ z6^0EjQ-WB7XpjuKMOQ+j`V;+&{o{vN0W1EXJ+@_!T_AFHO@bg$Bdz;7wgqje`33PsK<*psO@SmKbzN;0Zf4Nr`?{5^EjiYdGF7kQ>v?o}=s5=t zKL-{WPMh$^Q?pobCNtfPA+gc8^R&&u-DXeOaaQe<(|SCIrDfCpLe=qtexvmnOT1p| zu1*Cy9iBNwTK4I2r>Z zNM=PxkT3%J!m@&r(x`_L=e22CwBFYxp|yyIFQNZi8=ei6S18qCY9oO6qwFeD7EBJCulh_%B;hL24^O`*DlCtnrd zPCoQwl>=D>T79mIY0Q!CMzF=6pbft7-R+z-^==9v*V7U(U;n`2CB;fQsB(;Y-F7o~ LA$!0zq!8x6{J?B# literal 0 HcmV?d00001 diff --git a/tests/images/test_264,176_bitmex ETH 5m defaults.png b/tests/images/test_264,176_bitmex ETH 5m defaults.png new file mode 100644 index 0000000000000000000000000000000000000000..6f74530b6eea24d539cbb3deb2b4d357ed8024a7 GIT binary patch literal 2182 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 I^9(-nA6>kTMgRZ+ literal 0 HcmV?d00001 diff --git a/tests/images/test_264,176_cryptocom CRO 1h defaults.png b/tests/images/test_264,176_cryptocom CRO 1h defaults.png new file mode 100644 index 0000000000000000000000000000000000000000..e80ea38da127ee8a4e617819e0c65608e54c860d GIT binary patch literal 2239 zcmeHIjW?4E7=O3DFYh$#ovuXGYl^J8QCZbS8aB9`LPIrp!)J?A{X^PJ!BInQ~{@0{m6$GzE1T^%DG z004B|T%9-ofPv@gN*FhX%11yD0ARm)v$)Q)v$J!|eEx_Z4*bs?@D03Q2mnx$n-hb3 zNIopb2fslH&cf;ChcEF^Mx9G`$Gc6QchIxHCXX&GU`-C)c^R*oq!rkvu1(}E#KR{A03L3!LX2YL zXDpMBuom^0tj_$-3DK9a=D*NDr|qrnn(an615Pm;tc$C%TAf&D`*{Thqlciler4r#2xj;D(}Wiri)){x#H_LSu3#|d54L4t z56B#3%!aFazQVw)-e3?^!myNtB!*kTxGm~I2zF8AK3H0%1=m0sGxC>q5wlKP^A5vD z{3D*~pvIt@*-Kv!ik$nxtrqNA8`Y7|46#u#d);N-wEiLR%i+D4cv0P#@n__*$5s_JbYCHAMDjo7NA{7*>T8t$_F{s?}VSpW%P%uqS zbr~aO_1G>E#gx?e1rW%m_THscEtFP+VE8iW!%Kw`5=!h)+<`;;`*vVP_jBoj6Hw+C z#DlJgVbF6RCngd-B}VrReRW2fqCTRrQ)h^?6xfcZ17pcs?C5iv+#oYXQK{0(nFO(! zSG34{!|==|JFXkz6_x&t-fKk38Z`?>G6+^jS0nGdla`58wmS^NLp!VF*n(7oC1JwXJL}~^|tR9Lx-$2CKzzBR` z^UAteixIkFn11q>u6Sv2r3NFV%9;-csT%2lV-_?)op^z?LU5>tpE{tMfUN8)jNBaO zwQa)9Q+-`q`sA2*ykE~|gm-FbV3b=m$e5|Hin0FfRzc7mSj4aPUqH6asDYxd$T@Ru z{B(eE&Ei;R1}T?O6!|x#^zxq^A1E8;tVEAGum|qhd}Xbdb#94XN;L$P8*zOe{VDXz zABs6>zv(`LloF>VMOT!-jf|7xobcMKRB-g*{nP78L)g5wPSn+uR{b;lUTcMhh;nRe z0n)mjde*cnJ+`@fU`9{be6Cp_7~W1U7}re|?2pLti()lVCn<ZW>A>|rGWn9LZDI32cG#l!sk#&RRE@%a|^)E?dBnBxmZ!e)4i9XdrA_0N~c|MkK z!&0&>FxHh*>yZ@EK)b6%r;!JX;uSw>yuWx!geXxzLDLp7x5VumY>1RjvPgOCMi+pf z;-(`MvIhv}nMTGe*?d(WLFaEa(RE(?4^H6vx}<~v){P4-WuHDgEq*{xo4WmGvCiVt zxdieOGjZZs{`XcXFV2_MNeotIzYUcYn1guuXqsTk^Y+0UP?>{b>NBjFisXFP6?!2> zgOgi*UXxT#qbbz`vPE|3X_b`L;?U=biIb%EVM{_8KA&x7@rR4@*{)>RFDy&gD@IB( z_5Je0OARZSA7|M5rddf9F8*D2;?-Jb4R(q`#mAkNoyvTbq|9jk= L*-qtK1C##+xE_4B literal 0 HcmV?d00001 diff --git a/tests/images/test_264,176_cryptocom CRO 5m defaults.png b/tests/images/test_264,176_cryptocom CRO 5m defaults.png new file mode 100644 index 0000000000000000000000000000000000000000..5f97bd780b4cda3d221f3a88ad503de118ffe9be GIT binary patch literal 2062 zcmeHHi#O8?93NKwkoe73D3AS+?b3RBoLf`oH;?Sv&-tFu=gXyeyX)zg=pYaX zJx>pK7XqOHsOw5VOP!lq5TOW!<^ql4M^>p+YUF$TupbxrpIyK|L{@}AAlp1)7r(fI ziGtMp!xl#8=X+J;!p(cS19^AIReka_)48N(kNuahu9lxwmJT6~O4aV|e-ITiH^nyP zRf~U!)eS2)N^8n$*|DaZ#PO9_RwO}iJTG#oWOKr`swJn1Yxb-oRW_SXRrfcwW|auT z{Nr7FD(mFt0p0k-!-JVFVc?-OTEBgX8&efTh}ydvRiQ0D_U-SZx4@m}pFbK3fw$tb z^Ah#23hiiTD`wy@>b4dc!9(cA6-R57Ot1>As-nsUI?P`+6EmCzSLaYW6;Vm}2-&NAunl9{75aGErv5wm?rmT~0+bxJBf2|I%J`U&4*5l6## zN0U&7e8C8#bRIG@yxl{cy|0__+1T;zP)y8k4}*uxIL+&7js<81+0Df2(%F|L*3^|M zTQFFrJQ)=?ag?#p4<+X`cGQ(FCFnaaS`0S!#0+K^af2o zxA7VEW2w2W@cANR*iSDVr`cwy5Q)(m&URrw9TBJjhdE6uf3)Zw2%b*k@3WO`%U#Gz zAd8%MA`Ty>JH)i2+p$z0;*bC@qp`(+D`-Z{U;foA=q=q%08ht{&ff%92_XZu6H)1y zOrF!`Df4IFt{YRVWwY|&?QgncQBLb2(Q7o*&}`2%I&^9#yLSK6$tyOn$hP-q?ZhX( zQ1AQ68CH|MV-Pw$V1(3%*Q8&`9?1e8^x-7K0XH*3Sx7RC&GQC1i~bD{ia((TNUyjb zjgtc5IVBbYzWjAMlsvn0cQ{5I`THg@XUU09V^GZU&oe5PJ1B*al^sm!Dp;T_@0>-t za-`1*n1OMt?fmwn){(?6jRqW4E?-TipI}u^K`}o^HVf17+BYA%AAgH*g73P0n z*x3*q%C8M#&z8KR*(e4go4mabf@4HR*3*4vQI#d`y_V3Q4<8b3BscDz;%=yS;@t~C zZg|1>IJ*qGGpHz>9KXyAcozL4X=@72sFbMC^=nh_aIdLmK ztXz8kh!0XdB?9>MK^J0q_k5dz)MQih)WTL0zirwD?0KEDq4MnZGF;7`#?JzvBohP6tG-Y{oZOf~MxwFBY~?T;&;GXkSY`r!G(uVc>%)gy>S7 zB6|z}V`k%BJ|I5IWmvC=-sjVr!jq1GV+1vC;#QGqa4jDSKd07=T1<;-SX9h^Kql8f zwKh5)6}Pf$dZbU#Sbj;!5V%!ctebI8Ue7Fs1zS)#xtcdO_Fx>51A_kHl zzsZn_S*1X-xhF_YL62oiv sTCGp$EEol^SG!l`zyOwQK&lut*Z*q##zgw$@%LBmN%n>-NFitc1q%8|xc~qF literal 0 HcmV?d00001 diff --git a/tests/images/test_400,300_APPLE 1mo defaults.png b/tests/images/test_400,300_APPLE 1mo defaults.png new file mode 100644 index 0000000000000000000000000000000000000000..384b290e629bb91ded9523cd1ea1b4ea60fc0938 GIT binary patch literal 2529 zcmeH|X;c$e6vx9R$;gt@iCARu*$81NQY^J#sxkx!ijhPXgUC`q!IeeX1A>kUD2{jl zv4}`OAxL6TBM}j>8bU32Acz7AYQiRhl!`1?X@a)3=k!Crx9^;H&pY?b%zgKF|MyP1 z2g6kxGJtS6oVFXC#=_xLFvYgQt0_EP;iNGfPW7#ayQlN)?5x70-2bot3H-+hcm>|# z;&AiMy3rgx;|fL!GKD*AU|izNtO>{Df(1B2UHJ3GeF>zME1SaPyo6esd~fo*svEn^ zzq2>ZvbN;-3nE5dj*lhR80$L$ig@d>$A;G0FQrUbZYk$h)xaC^myx&kuCGouj$Q<- z26wejv$j7;-&a}_+Ex2BV0%4#wN}68-LKx6Qq*0ZlkG{idt!7!yp#9Lx5s0{i;x)) z5E9qCy8MD^;nUNeosla9v0>W&D?#AP>!M>Rz2J@8s+eb{1}ufhwZp8H_# z>+8z|$64~7&E|C%3o8C_&pnVM?TOFJyTcay|wpDRmwv-iV%m_Cq@e` zh5$a5k0As}BbD#sYN^Nuy1 zwv?0GknH78ILqa4DRProVwB~_82$qC@rkMzYaR26EltyPO`HuSq{y2-YV;6ll2d@- zNrOu7wFU@H@{oj=)QpCKURI$sxzIynxX~FkY|;UnSN!Cq%bpD&6%%1Cz(}m4sEenO z4yNQ%vY)5q1V#N268HqYQR8=iAWgrmtl)0Z$F+n~e;|_=`_M0a%WZcb{es-;fEF|b zA%<1sbG0A*B4kIX3dGK2(Sv_Fcu`yjvr?7Sqh=drpVFAnYs*+UKm8`;C23H`p_e3z z{3VExH>eG>uu6*rH53l1$mm%EG&*_3E2@RqgugMW-rdc~Y1dS$>u4ikCwsCrW)Qhd;Gf(`AQ-onV3&jNL)btUa?^_?>7>%= z7G^&5sh9Rre>91Scb7QK$?zU=yf{E+B)W`Q*F`*UW^Pb(aHUtrzJV0dI*UcTd`%im zQ{Y z>^`D=ZQf@3h&0Js(u&yL)Y(YChV7|4W&l?y_`D!h$reo&4a3>mo9GEXsQc?>dR4NL z!m8>`&$XG#o;o$zEUw)T4Q0-K$XT*7!?$xH91(U^U@gj9>GWTF&9p3@XD$zf(>{-T z*l=%hno0KULPa14F=r=oB-Fq_Ol{eTH#RlsLqkuekCPvz` z6-m1a<&Sczu*&ZZ`O8Ai%!foPpwtH9xP-q!x|Y6#2A1CFjnp@nhd3l7x&2N}H+>}U z>%vFIS=NH2CA$vpRIj|?=RZwTB(4tF6LD5hDieeZosK`5KwU65Au@>53P~lR>Hr#2 zisL=hIkNv`Tu`iSQD2C*0zyh&ZRb^}Jm{OA1F}^!c=(YYrp2V2x)M(86l-eAsY#}4 zX#3yB3nMXzB4;T=)XtylAKBZiWFO0IT*61=>90ZcZ%@&{)xyE%ffvhMJ$Eg*B~hSwAh5+aeLB8-P;|+WUw!*tG`l}ML(0Ff_F9=uC)sP4 zt9i-S>|o%y#q_uiWO24wgN>YkfyRJPUc#49{tNFs-n)`jY+^#)aG}%o`sYMt>{5J<=@%OnL*M9G(h0ePPCB94hgZ7~>Y@PUUMbh#3>Q89Q6z;3T7BN*iiEmlU5%wAO8y zA(v5&hD953c4pFsT5RNUI_^>0QAs=4;dFHQ7q<7D_xJtI`#$gY{hsIdyyr`%c)2P8 z8vzswrQ}8;QcGKH+I+eSvS0iKQwF+qNM-%@mzEjdD zS+_tgybaiTSc4s+1)Z1mE#r1v%n&sPXU~re2r-@NIp+6Rz;V?{lW?H>&ZJ!D-S4`k zCi}L=jMBgoZ*65y2gHh5q}=#H`+$Gi2#$ z1`{ur0MVuMuEVk~rp#b9f%qryZd;qp*Poo4-4g;QLi82HN>J3u;0ISadUOaNXK;u5 z+I^ow!usX6txpTL{8a;Prl1u+g}vJEUl%svg2_gYC#d%DX3*t;_job`n+Mpw`K4taW`uO`FBb2i3lllhp@7~O_`ttUvg6C}Rt zI|kS`cR>Yd48lUPcGm@3He~9$T*&cI(Bo3a^bk~ZA@%#5P~l$T&NhvBzcp;D_4%JJT6Pvzk* z?^PKnVw}&FBE)D#m}jPtPZ8oYjgw4N?*n6(QU2|N@we11l5!C`y;;N@S%j|04`^5{ z{zfQ9Ts_4}UdvBkafG^rB0e+-B}xRazA zT)(kr($|(vFord~o|h$%fDYYXD?zkM8EVOQ^x9z literal 0 HcmV?d00001 diff --git a/tests/images/test_400,300_BTC EXPANDED.png b/tests/images/test_400,300_BTC EXPANDED.png new file mode 100644 index 0000000000000000000000000000000000000000..1f3f73932de00242de37db1a7966947d751c9d8e GIT binary patch literal 2698 zcmeHIi#OEi8%Klh%&@-G$UV(FW?hnsqEa#Qb(>kVj7wB@HHlRrm(^yvxO_1q)|ZmD z)NYz=+6+;ca;XfBIuX^72}@*!P$HL_-{iM@cF*r$`0abnbIyC7=Q+>&zR&add|tlS zHaAUz0YOPgNt4BNW-BQvV+vaZEm3&7!k0}bDXDz)^6+($%jF8sXZv^k+kyYH4)_J% zyQHL~&SW_=e19kyE8yn}D6p#RlRUepGu$Q8dz0~5ed`K4ica3vKN5~QIG%1?s92ax zx=3+WGm|?48T(UyTyH)G6Vr26|?S+|dMmew~tq)R|=p2N{$q38vVvtx*9KhR%zUgQk*qV zUJ`5#Q`L|V$*)`da=#vUzW!393gG-5a$+UtCmuP>is&qwmYAykGvs=v@<@W~vmeFH ze6qmL$1)BzN`bA7mTY6(dezhf$KVk0LDOp=4+Z#`96^nq_%S&RId9ACN+-9KP^Cf{ zF}|eOk!MCIo(Z8KSG}Bgec2^iu@X^Twf(DZgN{vqd^o=2qbDrJ_rh zSl1u&h)Z~aCS!G_(v7Vn=+xf)dU<92(#bV$Rizq;Z|Z1hOGJD`#E&lpWtxqv%UV|Cl{6ErPde$NR))M8Ib?~>oR0LFgQR|SNP z7^Ywq@3Ta-kop=B zKc)ev zoYr9;l!}>9e~s7^r``X^$5mn(XS95m{u_d|CmfS_7PGpVZAP1)nWwc7nv*cX6?`;% z#ktxG+b&{MI3~Sto$1h(4SQ=ze*z(`2pfOU?PcohBRLUH5h$TF22T$nEdd-2-DF)| zl;<5cSZNQjl3@$Nn#YzDL(9Shm#(D^oQTM zIK`{Wu*R%M#COHxBs~WzTCK67P1MlSYn0d3?Wn9sw;E8zIk`y!rqG%NQ+1SQorU#8 z#pt~+IpfNVN+U+MIB5_yjnyyl;HCw^0p>`3mX_z+ z%66#7+*P05Vn%y?#qJ4#@5sm_I^=WE7q8N=7rUd(Y3&9;xh}Oa$U~Tdxjxk`PsS|8 zy#r+qspkSm3bE{717I9QrnZ)^ihLpc&9Jh6ZMZjZfJ7TT^z*_QaR*0I9JJUOZ6r+KN=@NRKWxPHjSbND_J9i0KR_1zLv#1K&5eoOGU<8VD z=2?V5myiyFPqn-%hJ*x>_ME~F_Sr!qRGyv$=S$4H2+uc=4~&_%>aydIk2ae?zTI>H z*e!(HPfGM)o24i(M~7pzUe6p^ssKkg2&s(m%YY^zwPZ%_OPVYB&1=40&;nnWBkelHs~{nkfq-YUgN^l8c0QN z51SFK`=a*P4f>xPn+XP{jgX?}TJ=K_kJ5u55Dags0WBRHa91cZe7NIDbSA{$8T6fc zf9?|d_I#yc=2(O0wc}knpqmfjv%e*^YoWZ!NQKt6MF-UE`k6bB*AJzlE0$fD`SNQH@T;Z zS9E&QX_-9~XF@A7H`}VLp%sjSa;TsB6NOO(2?a)?6nW)mM(8c4E=M<%)1g`hk5b(5 zjp~=BIG|AYcP1Z9)&KsN6Vo}}vHji0a)p~ZVh1B<{C2AL*jSiUWnu0+?doeA4XWg> zbH&{4(dX`@7<+`za|=niul>Ga*1g&_u6e6FA)`0YKajW18qj33T-0Oj-pdtFgCFc$ z-#6WBhpc`){l|4ymF%ii;J0-mo~18}Kov(%6%L;7@Em`A!FJ+OUD)!D8%ZW1<^Q{J at{OjX$2aGNv9=_BzAnpUo3juJPW}(Ga6fYZ literal 0 HcmV?d00001 diff --git a/tests/images/test_400,300_BTC HOLDINGS.png b/tests/images/test_400,300_BTC HOLDINGS.png new file mode 100644 index 0000000000000000000000000000000000000000..76379ba7c28c798c186de7f45e0c41aa6bb5e972 GIT binary patch literal 2879 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 literal 0 HcmV?d00001 diff --git a/tests/images/test_400,300_BTC VOLUME EXPANDED.png b/tests/images/test_400,300_BTC VOLUME EXPANDED.png new file mode 100644 index 0000000000000000000000000000000000000000..546728d92a853496614c2f35dd4144dd6aa548f0 GIT binary patch literal 3801 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 literal 0 HcmV?d00001 diff --git a/tests/images/test_400,300_BTC VOLUME OVERLAY2.png b/tests/images/test_400,300_BTC VOLUME OVERLAY2.png new file mode 100644 index 0000000000000000000000000000000000000000..b362c3ec07d4ac11157134f3428f613e63262d9b GIT binary patch literal 3048 zcmeH}i#L>8AIB#Z&$vD_F;Qyf$y7^`s8f-V*#?|T1+_w2QPYwh*hd;Rure}8*__CB|b zZ?B=cNR>n)Y4ErlXA)@+p)ez8uEO)ePv--Pq$JV8@;Z zH%TNYi^pNRhNq8Sd3raO0o&zGoqjhlnt1Cx1B#v*+_^9ltP?w|4KCYVh)sz~WK*&z zH8!rhebxln9lTssLz~?DxIDc^1&BN%`tLwv?^A8j?gX#9dRNc=S+z?Kd1KC$JZ@V! zX5EJ^Nfl%s%X&FvjqA&81YuK2XY&^i%Zh2mw36#g;ec#a6cK?uw9dF4ixu{&m32hH zrt2}wlr~`xb3S4vBM+Ka?TInqsH6B9*whu1tZArnmy`w#>l;sYC)+UQAv+WXJ)es} zY;LN2O>@9=srY91$qJeZyi6I0tZ`k4G8ggQ1mz6Anu?K+{*w99LjLtA>${inJuabi z;B@BD3Srj7v&m+YfVoJt!!8!WaS{7XEC8yyNUfGGs%;Gc%lczHep_{2MvIeLL-6Ru z(*vHf9WlMi@^Bb!e}}I))o(m|CwUFa6OG-t1(x^p5c~S3C1>oA>ur(hhZh%H_Nian$<;(R zQJTEyhMf4F$a1(()U5j1=xu&k-vLY((|X@gYz5^gBi;`OiZUsn`0H7^&WD}V{#z-<#9(Zb*Hv3CeJtSjz&X-KzkzCoP&^;>kQaf^Wqc(RH(miOLAoP_Q0~=N1VoJn(JT99@k3nlc*Rj5wTG<5VPM(;1k8d}=vI;vp5i7MIO;4_oIZ0 z=~6|`)E!ya=cm$+e|RHEjl9SbO>~Sztw^x4U_AD z<|_tMZ=!N-yO^A#rFUs366p;`5iBOAP3>{R0~~g>YC=WsVK1%4R>|a|<_nfQ?yc9W zMZR|2t#^pgDf$%&s;@R10VG%ot7W4NLDip z{csO$klyWQ)}^~;bX_yH$L2AyDvfihd8uOplMXeqB^xhV8#%Y+P`JDp=4CJ>*_}G$ zWvNSx-E=5@c4N^D(3A{22ykMb|~5@wP|aL+O<`XiV!YeE;xfx@ItF=)MOXxex;v9d-gCszC4 z0(Se-04$=|l;b!fG<0kE2R+G&)6Ck4yUHxjnRs*vk3mTo}_>ulqxkRY?dAZ_aF5W$X@(W$_{HgG6yavkRL zBD6$Bx?D6~3)T<7D1K%C9sbbf>_$1*qkAuqL^_pNqj#vXe7Ez(0eF?`r$ZSNJ(_cn zNT(3rWAdj)S&l=?EU?%`gOuQj8=i4m8=q>R(0H|BsZXaW~G8kx2~> z{)D(BHM@#D4sboDc#MJDK2TD=yO`c=?5gWAz|Px}HSK2tBGRD$`HZcd&@!NH?F_Fh QQu*fR+44CBU{BP)0fiw1kN^Mx literal 0 HcmV?d00001 diff --git a/tests/images/test_400,300_BTC VOLUME.png b/tests/images/test_400,300_BTC VOLUME.png new file mode 100644 index 0000000000000000000000000000000000000000..90ad4d8e4ab75819e2c78f88f9c5c90557726ed9 GIT binary patch literal 2954 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 BN_qeQ literal 0 HcmV?d00001 diff --git a/tests/images/test_400,300_bitmex BTC 1d defaults.png b/tests/images/test_400,300_bitmex BTC 1d defaults.png new file mode 100644 index 0000000000000000000000000000000000000000..8fccbb350fd02287507ab39d2f370ac4d254e667 GIT binary patch literal 2859 zcmeHJX;hQP8jfsc5&04|C~F3yVKsuKpd!l$LZB2h1tfrgk*bJ-U|9l!paByX{2JM1 zX+=~7M9^CZDjXq704tV41z8P<4f~=j!AJwQ-rm!n_wVhTGiPR=dEZ%{dEe&@cdx6X zGFA^-k3F)PpoWGP76`>J7!*S57i~0xLr;S|Dn9j{wWu`i z@|^Y3eDB0aS9MLBb}&oYvN$zyi`tb@TiF{cc|R-X>m{67Z~`5cCRmtlH>Q1RvHr>0 z;Lxt}e)r~BJfGJ+b3POWigqvZxbXC~SM3$~(M@)bH22-jEgqm0js4=vc#~e1McZA= zg?wT!Aa27?hSDN5+!zbu#N$%ob{4+f+OpM1uw|hmw=eEN{W(SM zt&$V;3d&sD)3D(R^BPOnN)7+so3~0tBjj#-npg0Wg%>Tp>9twR4xp+8_A3A;$$kx+ zlL(o7jObS6QUmkx`~vT}-|WYqn0;*l=_tVh8_q^FULKgXsXVW74ap3i)p8tP4MVN+ zD{jjsffibIajcPE3D3l!mqgyQP^AEN{pCB5^`whJaTHp+SJyuN=oaVo^o+}bq|d#OX9a5* zh|SR$>$^*zxJWNa@FOq&U&y4P(X9WeL?mxz{Hs&XnW@3qj}o0P-K!I!^UmhkH;t%g zuS)bFkyrkw*v7$P_4-}q)ic-7Yzxn*Uh2VGZG1&l9DAc@lom*C&voP+jChA6lRx^%MB4P$aGgkjck9$}H}F9p;|EI;iYO-6wk z8xA=#&ouv-Fe<){;#%KG0BDB8w)aJyBUe~(-VgBHeqH4Tt4N6<9gaR9|4rgXt_V z+ntEm9ZTvsg@u*AR~60f$2O{v;p}-&ArZ_ubIa~R;j~Y#J!7HknXA7bmOBe?SDHoK z%s}STMAyL$<&~fq!Z9b=iuT*>zMT0zALigXTD;Ae z^1*Md&anlCxa%^q7IBTn$rr-S0e?>m4rj86H&y*J#ALUvso^1G6qtxBFYD++Pnr3e z<4w~ggOI5roAaX~Ime**ehE?Mjv`=oJ917?eSN#%)z)gHA4)||EE$2Y*dQ>aT(Yqs z>4EDG7HG(NHrC_EDW+1$zG~dA`wh}eB$|Y8W#55f!x9h?zA({>Lasd4?Ix@jsLBK8 zrF9i1KD3xK?iY}s=B4bw6qx4ou>!fL0qT1VeI7brgia~I$tV4UdMi&@Rf&upZhZ5V z71x+HoVgSHB(tMYuXQ!|2V61lHQ4xGU#eUol1&FC1s(Ig{b7mk%2 zB#BxjOO^KS{X%WA{s^5CF}DU3%NEs%aRSTf8fGLYLtQ3T91Xl{An=RpapWBOdPLt7 z$2iT`4Xl%8*lTu&x^URj6dvUV?c9$is93^VWUw*?Nf zTVZ7>=|*}xJo?G;o;E1(4wHWJv|={PA6 z+lTE;v7=F9F#M_2kwY>^2}Yc@wPtrXEfi(Nv7#nz^74fSYDyecGHawx@SydvYOWHp-u zzLaB%jckr92wE8l9cWJBeN;If`s&CkrtV~T$%{jp%mb<`BU1VcIe~+XQLZBAa)Q@R z9HhRg{5vA)@9y#|Z}wTOKP$!m0^)JvQckqL*4Fg?vZr<&FH1J(znVv?YYMIepb{?b zn}4>{WBzkCHP={s@6mhXOKN(8*oouwp*RDP+1po|?7>JXp0_v@e>E~@yZXcoIpwf- zQS$`J@BM))|AyeEvR!EIvSIE6MELWq$ez>>n6bP;yH|nH8_V|5JS+!d4A9@Nn`ZH~ z_(3i$npxQ%*-7g~X1Jmzs$M=8<}E0`{f6sT61jaFG4~^3ioV^q`oYb5kEvm}{V8rI z7df@k^D!Re#EajLXU06TCE0UY+uGDh{Ywl5>L~cHA5DM8g34$f^#`Yy?`oD&r#-Ir Jcj17ue*hgMsmK5T literal 0 HcmV?d00001 diff --git a/tests/images/test_400,300_bitmex BTC 1h defaults.png b/tests/images/test_400,300_bitmex BTC 1h defaults.png new file mode 100644 index 0000000000000000000000000000000000000000..9ea315ce48b5635083565d6673110aca8ccbe0fe GIT binary patch literal 2651 zcmeHIi#t^5A0L-B$6y?!p`tl66KbWBvDqz`V=%fPv^HWgS*0FC7sjpPC^qG!T$0gK zNH#lStD(jvO?HaNtleC*t63$C%P7XMv&U}xQ-8y6&-1*`dCup3Ki~6xzn|~>dDFc- z+;j-b2sj*0$DPUW#^F>@Y*+$n7}6bPIF7@q&UCZyei0eexF}FMkMYy-2OJ#(=8k=D6{`O*Vx;@G)x&}y-1DY*cAQ-K z+HSSjFF4aKvNv)xQqe?xmdOcx;i`4w`%~bC>pQy|V{cgGHs0%m1CAZ4zby$93aav( zZaJkHwU@8YeH3#u?Dws!h^6ImW6@V*=WTd_&YB3*`W){L^&L>Sj>U<4>Uni7?0>^D z+#~?D4|=F4c0K--pfN(B^~nc`l`{NK_l_QaT~B}99TebGN&sq%iEx7fl7{^pq%`dx zcpKHAZYDgu)cZbhoM^GuQ!#aKHlmqMW@vv{qX7#K8&m~OinB)H_c?M+e~^Mfj%h}K zo*Kli?r(gSE8*U*6_n6Nk0b=}@DO{Ed-@8RGmtv}6aS^!Vl<2z%|Bf0KSuap7`ny@ z6BCFoT`M_7meAfOB^5%9@%j)G!%5pQPgQKfT;ew;-!J8=15Tm~N8Mmc!hqkkWhx+L zO)>v=eUgmRI;1?a0-}S_`m3P36MdedxlL*EU&dl)Jd%GzHbp{kp@n2Qvvi6RmnxhG z2U=PB6goW{OC=F5KN+uCqjJRQ=SHcaIL_<&6Itq={KoqK7-h#EGUmjXtY*XmIc^p!1-l; zd6O#8Gcx15SuVU16pOkP=Zz7Ycf0@+|S36~&T!?xR%Ed#Z&@@?w{MUH9de^*d8xf9c;&AOH)~c2g zxhzH7F+^8Fk zfCr9O7%&jBWRD=VgK!Qd0D7-BR$4iUN;<1rdi+S@W$kw;Ay=}{@%8lnm)M6Hd_LU? zfLlL<*mtz#dGEP$uu2COR&Pz4uO%VX;mZB#ndr$Xw9EwB7iMU!v}Z9{GY;l7%RP1T z--IGYTS=sFT}1o(F6NNwY<&TB!hCH<>IBHYqq{!D@ATF)}7&!S?516dN=#+w7ucN(y#b%3ZhUD@?ynjkd; zP1*8bl1dvau#S;9SW1FFGLG-isqQ5(?+ME;!$tH4<6?&Rp_~8dDXE!I`Bl?DUUSWg zW_S`kBBRn=J(=R7aZ@Z0H>UQ#O?eP{r%IJv*PBWjHigVHaS)3~vQ9zQO&d;n9knGv ztfRKm*L=`myL+sPzRS%$DR^HEhy_~f?+c!t9J&8nDq4vh4W&z)=kAAhQqd@^>!*dy z+jqAg+l6GPLCKeh@m*ys;W?y%wCHj(+xKiC<~1OnX8nnGE^hZDLtO-2*9ZgjCWt&M z+lKn3x)6H;qwk6;BW(oiGjDSC_4o1hKg_4!LyY?;? z)15!WF-pBAECQ3w4rMp>Ixts)-bO#>prbhp_|H$}c>X3J-OLQJ$pj(T=j$4_hfhww z;H?@gMAUuYsptpaepMK7^Tp;0%ZoY9GYR|`Cddj?+9&sagU~_lXl}}1&fKwpySsQW Jc<|ojzX0;#J&ynY literal 0 HcmV?d00001 diff --git a/tests/images/test_400,300_bitmex BTC 5m defaults.png b/tests/images/test_400,300_bitmex BTC 5m defaults.png new file mode 100644 index 0000000000000000000000000000000000000000..0f670008abc57b5cf32fb5b542419ea59e399f02 GIT binary patch literal 2568 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 literal 0 HcmV?d00001 diff --git a/tests/images/test_400,300_cryptocom CRO 1h defaults.png b/tests/images/test_400,300_cryptocom CRO 1h defaults.png new file mode 100644 index 0000000000000000000000000000000000000000..8f52285a227f7fa43c1328ca4396e2e45bbe6f3e GIT binary patch literal 2668 zcmeHJdr(tX8oxIogc3pkK?ouokZo5GTo6ItHx@LMf=sYdPzZ(49Y-D|V!(pr3RdH| zz+G00NW{(>d0A9I6j&YwgL`YFEDr?(1Ox%bS0EjJ;EY~$y{IGiF>3}o@j+zfrcT2xxB79J(#ZYO;7!jf|J@r@$l%mC8Sd!d0A>Gj@alMpZBy5#TGE5_@*UW1 zreie^uMBE5>wJLXMqc~E-K|^KT9f){sc(CWEKcxtzFi3ijFzaVGw!OkG<>^0TEEuZKw=PLpw0&{Wmf_h33eT`!A6GO8NE&*Jet z5G<b0l7u?ruXUGLv`HFEiwq@uhdyV)I$%?{?;Wq|`j)%9d8&^7>Z zUR&N?Y0cyy$Tfnfl!AKLBH}tTd?9*Gk~1@?c2?6`21|zjYKuG8&XSiCsKZ`XAiytE z+|(Gg@|_=gdBM3@cL%Yv(;RP3{Y9+TWwvcf8@Br1376jO9>Kma1@?ZK9uA0jl9cPE zB#TNmfJN1H=P7FCPY}xxL@jQJbeSRt5}wy^(p6`Dldymi}$`y}(8NTAxu&JY#n&lNDZBSgnIhhp~;BFh*=UCHd; zUN$xdm)fqVRGAPb$Q4^Stp$oTaMw0I@u@i)TMZ_b6wu0;reitV%>X1GeQ5Kg>Q%z1 zo%dt?$?lA9^Gdm=4i*opx14dr)9^6(qxLZR$7B}2{oWQ5C!LJ#k-Br*ZajxwKS6B9 zJ8t)XcCA6y;eL?@;;-xE@{1zE60nZJI)z70lF2`2(b(h#UQC^hK$Ukchv$wp%s~#t zP}p`qC|d@1jg=rGp8@c6{}1}5czz8LIMxV%$d_;(6EF2GcVAbCwrO_Sfw#) z3MN|E=A+4HT;P1KMyf!0gXe{>E{5q*BE7xlZv8Ey)x}V+>l7p6YoT-!k+%>D%)8JF z9V{9Q6#gJ1i{f3mv=A7!p0)?o6oR1k@l7zXE>DRG*AgX99jZCZko$X}LQR9FuSs|$ zmgF@xpQ6Lu&^&&&H}$CkSxUgPaaq0ahym6=jt%HPop^-EPaOQY1ic?Vvd9=-slBD^ zXr~7Tq?#3!g8j=Gz2n;!!7rugsFy2|+qpNJ_#*v)uE2z;G7d>LCFRl%* z%;2^!UvP;x{d4AMgxURhx)67YXkc`<)77sFXIpipz;FCHrYFbGTJJdAR&~^>>*^FW zckmGB4?aZ>dF1@|opr*jRJ<9Yd%|15%}*i;oCS@~H$biNmY%oU3UQ~gUo&A_o!>gT zg5oiBnkfkI(__X+8$aee}>?=3pwJwm8MrQO^G6kcJi@HA~)rD z#=5B|t?wk`z#-6;h+QJT=h%B9y<^jVLm9|h8`HR(#3=ee_D#!_{_C)OH!=T5IHElq zAWq3LHZB1t*DPPY@Y#A@+4}bl`pU-zyrlfFdR5=Xw|CAn zlmu~1&`gH+2{WbNlO+ERrY-;DmDed_G*vaV`T>7Lp)dsdL38-NYv+l~q<O(DVa=7k(W3wB>vk=a$%}xZ(FOk`=W-8ruKW$w*=+clF)CB1h hEv9Fr$YQUXE{$0$+-1T32{A|T2V9uQ>l zv8aQCl-4+?lr4gYRyjq)pcKj?DA=GO)UANQvXvn7a88f*m-z>#_ndpq_kKQ~ci#Pe z?meG#bA5e04T!6WI2_J^&vO&va9SufZ2@fz89ub?4GxE2@)hiKUtV6ukd^u8_|t*^ zGY10pw_U*D^osay+?`3~6X$cUU0~>QqL-I1g!_>YcOACh)YhuJbiV4g@TMSKgnN4M z_&Zt9^34Rhcaj-pZRDKVbAIc>W@XJ%McVlhyYuQWM!V5u{aj@7)A-H8tuOg=p4rp! zA(7Rc7RS;}5&BpJQTc9wSxi-)5_s3OYEH{82CSEji~{}&J%oNI?NvVQ)URz#qgyDH zLIKHTkF0N`Ec4AK7Bt$`-NBK#C@ok!sfDD656fq7)J(5tE;E#JzFly^eR~nW1xh&* z2QXM4p=(1O^Dz-aTBgm8YV{=(>Z$ycaeiFnlr<h=V@dwzU zo4AlPaPPB+Biiu#7ZX|#?bq3KlyoeGBiFsPm7x+V%*?E$VOOHA?B>dURHTBAjm_qW z{=|eHv^{0)ShgzZ?fa*@1EJ)2!=h$esuJ?(%UgEfT2Jl|KFe=$5LSNAV?YkJyR ztCwVhRld3a^;Ow%Bb$ z2?moI8boyUlk`1kc^P3Yy$03{O^6!vT$)1n;b0wr96`$jzn@zSs3Ac3iQvMl!1*k( zE=2w>k#W>v3~9{WF4$@Ao0sKOc`?@3UqxDY^O+7^I|wA~bAT7mDMa>!fXgmHp8c z*dgK&x!9@1eu3aAp#Vj?hb+GUDKu%>aV{_LgBodHA%vsGT*+D&NCET)rLt#;eqR;c zBo)PheFUs0E^no?G8WsptH(oD>D4#%k0zAm=K?(@MCw3#6RlDH$hTjAXC6*`{nr06 zjX6S&x0!*jDI)N9oNJd$4sAQRDY|ob@`jghw(*2sA?lTs12%*v7XU?mAZ7YfNKxF> z{Wq^&b*Q3woE$9R{q_AHL%AD@jp%mmO)Mz^krL09uFFb*JQodfJOLOFGD+u(q&WD! zh$FF$@F>P(E&jk0;viY237^PtGj?L}wJ-<5*fy9wKjyP_-+#pBq!#9)^_T_^3RNfI zwkW`l!W>ES106jiAzLJlaY|RM!j8%sU=DbD;A;5bw8J zl@SAM$iXwNG3)roRMU%&59|(XfkENjC@9<~HLzo%z;$ZU%GSoJ-L7}Ea_L19D6Fj! zNsO+JGNtZv`=6gDK5stS;$>+IYm&mU>O*Hp>LZ$3^0X6_xb4A}p2S@|KDxJJHv53r z;8Iq3ULxDgEZpTxWKssoa>_b#Iu|rY0hllTX(PYn>bee(WpID*B_EaXRht#XY z4Eehw;AhMvZ3kcWm0=Jmhd=GZSv^2#5w~E z;Xy4!dzW%$c7U4uA*`_6QuYTuE<`Ug+Uc8&rv)E{(eI@*MfqC__26DmSwdA7&`YgH z#MmzB+r1@5>F6FyLT)U%_}^^R)gpy$HkY>!aOhAMj}z3xh$)hfhdP`o6w!Rs&*j;zYb-gu zHLh?4wvMxPD|C}z#5TH6#Y8Uorp2VAHrNVq_yo?!I{c{AKh{t8_#^ZY`#;ODXG>sz znfYHbt2q)#^F6I}UhwCU~x``&P+fgY6S4)x|(|3LC)1{tZMTpQZi-Q4a$TKnrOvChED>R9LA xU+Vt#lb2YsF}`z}qQ3`kU@uBx!GC;q_`KCSH0L@*5p_#f2)?_ITP?g_{2xFWV^RPB literal 0 HcmV?d00001 diff --git a/tests/images/test_640,448_APPLE 1mo defaults.png b/tests/images/test_640,448_APPLE 1mo defaults.png new file mode 100644 index 0000000000000000000000000000000000000000..a23be7b2dc1dcaf9ed51e3ccc8cfda76c0e1001b GIT binary patch literal 3539 zcmeHJX;2f{8trZylYq(t98e&DfJQ+X)Itcmf<$CW(NOa2xBGYkPS~W!i50;U3oP`p>+zMR<4GT3 zCkg?DdsE$Y*?da}fC_JVVgP!#*~|e0Q$O-#dmtg)$&j;0*1YHH_GYSLILHvsqSi`= z_27nY-;-ynl_ir@8q9tt%Q&8X-EEQ;oV#~!R%^Y9v+aN;cF+1oe72+07rnrJD*~(a zFDu9GH7s7@Y^!Co6{m7&O5y2_v>Sb3G;p=&mKw|PfbeC`Q*lBn@U-3n6h!(tKHLg+ zH<4{*ufkLoF}5I?R&YaUyt=esHOes62d4)wTIPJwaVg64Scp~PS%p3X>C7gCWTH%( zI7i*d%>vRB6+kw@QmOR&|33Bx%$jjoBbQGA>P{vmzhnL@E%q8Ty#(}D-$ib4gXU=& z7joa7P}HjW4qUEi`EH&>mxS80NYnU3u0hwQ9%{=_1h6fhsLb z6J)fL(7P>D`RwYi0U_%Tb2tmJH!yeWB*#0yr+EpqKeM;W_MMQZMt4T^2y{I#(iDw= zxy_-_N-eBv1>XeK1S5@5G0Z&zRA^yyq37O+9-eLoM$&%*eB6-;UC}w%hU|*m{0An0 zJKPXEEt(!U?1@A$)aln>rD=SOVD4J*mc}n7ITm2bn%^cq%z0mR?r6(|mphbfj3(X? zm>{4Z!^1%^)YHs*M+3%alus`?=*y`_IN~w1XC6 zDKPh5Q+c;j?JRCz4J=R@ud3x0Yhz*1o{dP724>cM{OO4gLmhSG$cRSrmFFg?FpiNw z_*f7f?jcxx8L+eAm#iZ5&zJ`}WGg6E=ZEzxZoSmsK0L;^1{XZ2am{Ta-&JD!u<wPDqQs+_c&{bxvy&(?=)^-OWP;%v$W+?H&^o1ERIKJ9eWGqXlA`udohT-%HEjsK8D=yr1Xw8E=nbM*7~%3rnM zrDHRYJxap)`MDqz?monvcPN`rp%DhSu5%UIoUL-G5(sfwzG@j7232d&qQ86Hoa5QDh)rhq6%PtxOhIi@ zkwHy55C!|?UP^qs?3W_E)D5Y3XH%k#QN2GF`EPqRSh#loa^wZK{fduRpaI(h9q zTTfN-t2__|t@Pez9d8bH&(iIBUZQM4or~Q z`{SZypOq3`^>nMPRmi}L=zJli!bh<#B@BtnB+zkCayc7NkN$jEIO%ANHX1<-X_pNBy-UlyTJtHj@QDTF5K_hPq2Q_I3U;_zSL0)W;Y>LK@KrmQ) zd(ub!iuK-`Eo`bH|6L!|@ZHJ46^gdAoT+DzFQ)noUcI(xEVQUHGs`#6j?sEU8rB+& z--6TuB%Rd?|Ab&OYO!EdT+*|9Hw3xNVe+-*mk%_L1A4xB2HSVX^}(XFv8E06Y@)KM zyZ~@a*Tacj`t#Rxd?BZ2P$`|^I|FX3^=b@iAJ#3Ae_s>bIs7X*cQZT z3s7`;qO9Ri4$(|2&taoL5Jn{iNEkunjv$09WD`eSp7VC!%R(m;zWS=` ztLjreUNm)8162Tky2mDWKLB7100<{4$&m$D%tdlQ>f`CZK_-*Q5ykz-^+yK&&oU6e zcyI*()!iQMF8;9>hdNTCU)U~k_RW;ZUY}b_Y1{Zfk1KgJ(HTi`i`$Wz_~%@;W`R1; z=o&~G7eu68qlV4BzCH8oKrJ<5Zj#NeXB*2BZyT}9oOK*EgtN^}n!}@Fr+VL7-pkR| z`F+yfGz;2zLcw#1$cC`#`aY~@izN0@+IgqKTRl_7ho=MV@1I!7dT3!l&~wLN&nPZPQqf`9L#im?ol2Z&d;YxYbjy>_9gv2r zLR|*TlD)%LTu29Qh}abO%vBXHht()J1!Bc}h4kmq?j0EjztXM6SO!@kHd!E-Bje`R zZy=%`ahD0zOK~4KP=|3XCoA4DqC{z(@7NG>eyJpWJF0ngCncHM(w; z*gl*~pdUFJH8UGIb?v1Ccjb>}c=;L2kc3uziP_T@$<)x;WR8T&Q9!VzT>ssrw@bU< zNHbo{PK@4$LsvmL7en=FhjN(HWp1tr%GE%Q6d4;!LUNC5Gfo8^4oF@+aJR}iWd|KnF=5l6pv=wKRk>J6(CbVFJhm2NJdpxlWslY$BBqn(eYXp+ z=VZeIC_ixA%{(P(4oPpC=lvgx*9Sq;M%ncFhLE*nDE}hx$Tkuc=+7q5kJ;6@VrEt5 zcu>5SXit{CAqD3mlW!6WAnq5=eyN6{?o7bjf?YLOhx09G^X#;!i8Z&BEL!;k-#{|7l8Bj^8^d;jYZD>gbNG6tgVlIRorZ@?< z)Mccn!6gY_J+a22jt9^m5gp{=z=RS4*_h#|Ru?>;Mv6C>?W2D4h|T)kE=P{^KS50Ho>*v z5^V+%dPcN44k8J9uGkt_jf@*WEG>(ZYWf!f%XJVOCn}7p~Y`4BYODbs*?MD0-U(J#h~_=!pr4rK_L= zCU_H}Iu$sKF+&WYXj6PYq3s-~(q@Fi?HjQ?1pSSm`ep}j1>@I1fc!TP@z(65@Gs>| zXwX!hl+gAqc#fbnIM56?LeM-AvlNel+cW+*;C2o1D@U>;aX#;U)n+RFUh2mM!h(a( zVq^e@b4btfU3feYTDCC@P zVJ&Fm3iDz+fdyNm?H2zp5%6I5YUn_G+~yh9!Q0eBnl)p74bg*dlGIG_E82|5tb=en zk1W}p3)VSyXo+@d)M&m`vUKQfGHf7Ax|TsLUf6(P7)>ZNnj2n1$9fNyjLvC`;)vqB zNPa31*5q^qlJS1-MB_}k33OAKE6Sa$tFF(&UhS#tZtGQjhC*CJSm_+fa{h%U+Pq-Lq#alqbp76_=r zz8LM+LCnahpN93CI{T>`i%h?z6H(?pI6<~1=03D7>^^Bi4Sj5ZOnYv?PUspldYa(7 zMOh%m1h2E(j_pzM{MrD@jEKZ~iXw{b-j=-9z4X(h4;yru%)us z&W6^{cxU#lKPE*`Cl*MS4vP6#P0dn-BexT$xM)g+Tc3Y`AhAHRYKMQ+=^ur=z8Bs( zXjQhmy54l#_U&iAtRO3ERhyq$J^Ia4harw*AR9#1(Y?k}x(rli_MTF&`)s1+##2Px z*hQFph0-*|eeEl1qDI5xhfbFZP)G0kyt?I0wLSX#4VjgBf7`-bJRFdb5{LL;X){Ud zUwOdYYuoJhC4Ihg7z!Lb8OW?rK`)#9OjuvI&`1}8fAtHEddi^63bQ`T98_JQ^w{9# Ke$$ol%|8I5>Ukvq literal 0 HcmV?d00001 diff --git a/tests/images/test_640,448_BTC EXPANDED.png b/tests/images/test_640,448_BTC EXPANDED.png new file mode 100644 index 0000000000000000000000000000000000000000..30afa8565ba0d3b70a4e6574f4941e02e0877a81 GIT binary patch literal 3601 zcmeHJdpwlc8$a*cOwCLe8KF=vjihx+R)|GPZsQs$im|yQx1kuJ@yfciE)~hhWh!kU zBwLIq?`B*4DmD^w8@kwBXIC0yT=qrU_V@e!^ZWa^@8|QL_q^Zdoaa2xbH3+!&RJV) z)72y?5&&Sex!GQO0AK_F2qi4T5PY687XxN&sSYM{b8{Fn|Nis*6M_G;2sqLnGfG_Zy{gcAh>IRd?yvRBi$jKG;0tZPK}!Bt8Vd4qFN2%%Sv*GtdX(L3_`DMW0DVmT z=E+poM*Yos}kpE5{1Zwpf{0-~akG4Z_I_*ttXnzD_riaf%O{sm(r>Qk>Um%qF1 zR(4XyYwVjm;@^ZXwx@-}WD5kdqHij& zR-^ij)h-=u<%xu^W&)?kGDe>UBoXO&dHY6MRNo=UYn;Rz#MI`&R3~w{G^|$)HTE3ZSfi);un>&-2O-@R zJDSa%uB)ICD+#624qwkaItjVv0HUKi@*o>e{+e?QCXa@txKi+&zAcc~KsN*VBXJ8RR6uV|S67XSDt&BuQoI#~;p*F+c%87) znXyL$o4v{0-q@bbbh z1!d`cEKbr|RqFY-af{+^EtIdu|2R8vLPzZcb(@kA6nEbn89Tz9O?$yw)lkA+3lHPg zzfXY-LMs@gO~UKi3AF@U|8go^4FjO7SMw>1x`s+9z{fI7r9%dw64+; z5qXlkT$EezWfWLzj`0}fmtVDu!hVN`^jdpodu}24_A@UT7D%%1>6@t|O}X)8nwWEM z!Fy0uJ||I^@G|h0UGdmOAl)`)O)L%i-?|t#BwMEZwF)P4$h6nay~@zel7H(a`0Xd9 zoHEh7M=ih2AeAb>k)kvL^pLRq=gVL~%=asl`EAEgDLyP$0EFzubK-K+1fJ(q$WJn6 zh&sGV9+iaR)^ZcUp6qqBkPuQSd47IEG32Gq<&AAufR;SAM{>@X{2+|b~_ZY1KB6s@8^`Zoda#>m-9q-#N==EyA~-6kH-S}T`U zNT7#j;le`T!&XS|MDDsFx3qJI4SoRZhXIDLek!PGC=~KFD%)jQGXLt3cENm`-m(St zfveN&t~M|=w$+pmsfu%V!P!b^43XY*2$F{oHnEOu!_P`lRYtVK@++}=7t_J@q|j`jW)%J|4?U# zBogRVL-_T-=79<^?iw5?2QcK&5gcb36d)1iIb= zc5f4{JoZP!yPNhQom!GKZK0|SQtYFFCIOe7ZWn-L!5gEm%@MtP?BipFbTrMWE)RS9 z%Yk6I%OCDt`|$f3$oi>sUG%Y3z_4wIKGr%NEyiV}%Oo5imO3b|xaOF+Oor+FSVNNb z8h6kFG5M`!V>aVUU^P37L|Lu^pB}a0vnW!j$`E%Tig^+NL;Lv>{i0Uo#AsL{m)E0 z#AAkh6vn>NK9$Fg81|gOnO!NmA0?ZX=oC6J;~N8r9}@hg*F_4Z^P>SVeLB6YM>*`7 zn_A2>oEfJe-knmfj3WS${kCGR2mfF0pGG;U+J5ytRqo*p8JVg4xb___zGi*zs_Vo9 z8hzX4<9&o%o|W8vi%14G?t>5OTma{`&#sAMSN!2T+Y=Y_`1Uj?fOlFy8&;88hrtY1T25M~9xXi`9KQ_5f zC8>(gmOf4abYj0;sN%_nnYfH=C-cuQdriq({$vR nYc*2PJg-7}+VN~3o##;pHtzQO-ablcKAPqx)_Y5gX=nZf9t+Ah literal 0 HcmV?d00001 diff --git a/tests/images/test_640,448_BTC HOLDINGS.png b/tests/images/test_640,448_BTC HOLDINGS.png new file mode 100644 index 0000000000000000000000000000000000000000..80354e93f081b097829c8df018bd96e5e56e8431 GIT binary patch literal 4036 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 W?v9VXZf>?*LOIwu+m=yiC;koffr-!n literal 0 HcmV?d00001 diff --git a/tests/images/test_640,448_BTC OVERLAY2.png b/tests/images/test_640,448_BTC OVERLAY2.png new file mode 100644 index 0000000000000000000000000000000000000000..7f65b6c9c600e48d89267af561d2a5037223a68e GIT binary patch literal 3987 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 X7mz)dkl8S?{0edJZl+0r5sUL*4ia?` literal 0 HcmV?d00001 diff --git a/tests/images/test_640,448_BTC VOLUME OVERLAY2.png b/tests/images/test_640,448_BTC VOLUME OVERLAY2.png new file mode 100644 index 0000000000000000000000000000000000000000..8700891136d5f5f7b3ff60f53cc0cec743f0518f GIT binary patch literal 4732 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 literal 0 HcmV?d00001 diff --git a/tests/images/test_640,448_GBPJPY 3mo defaults with entry.png b/tests/images/test_640,448_GBPJPY 3mo defaults with entry.png new file mode 100644 index 0000000000000000000000000000000000000000..a27f1b84ba95154035f202e78c8331a84d74a882 GIT binary patch literal 3659 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 WiVf2<4&_yAobE0x=PPU22mS+4IL|u( literal 0 HcmV?d00001 diff --git a/tests/images/test_640,448_bitmex BTC 1d defaults.png b/tests/images/test_640,448_bitmex BTC 1d defaults.png new file mode 100644 index 0000000000000000000000000000000000000000..aef50bcbe23b4fbae9a115f1b94417bbe855e5af GIT binary patch literal 3999 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 Z67{gaVj@s?mTyhU+{DWGt|8;xKLI;HcoqNv literal 0 HcmV?d00001 diff --git a/tests/images/test_640,448_bitmex BTC 1h defaults.png b/tests/images/test_640,448_bitmex BTC 1h defaults.png new file mode 100644 index 0000000000000000000000000000000000000000..ce6f08d418835da8b8d34df0f3c997131897e3b5 GIT binary patch literal 3916 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 literal 0 HcmV?d00001 diff --git a/tests/images/test_640,448_bitmex ETH 5m defaults.png b/tests/images/test_640,448_bitmex ETH 5m defaults.png new file mode 100644 index 0000000000000000000000000000000000000000..e2f78acb53a92bb38bd3e74f782da87bc2f04882 GIT binary patch literal 3587 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 XpnTuV561c$@?}@2eU4Qh(-Zy$v#rxH literal 0 HcmV?d00001 diff --git a/tests/images/test_640,448_cryptocom CRO 1d defaults.png b/tests/images/test_640,448_cryptocom CRO 1d defaults.png new file mode 100644 index 0000000000000000000000000000000000000000..d528f9b19ad054f205fb6136adddb5580f82ee01 GIT binary patch literal 3972 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 Date: Mon, 9 May 2022 22:22:25 +0100 Subject: [PATCH 42/66] better font for small screens --- config/base.mplstyle | 9 ++++----- config/small.mplstyle | 5 +++++ src/resources/basis33.ttf | Bin 0 -> 39488 bytes .../test_264,176_APPLE 1mo defaults.png | Bin 2078 -> 2036 bytes .../test_264,176_APPLE 3mo defaults.png | Bin 1891 -> 1912 bytes tests/images/test_264,176_BTC OVERLAY2.png | Bin 2221 -> 2203 bytes .../test_264,176_BTC VOLUME OVERLAY2.png | Bin 2365 -> 2324 bytes tests/images/test_264,176_BTC VOLUME.png | Bin 2281 -> 2293 bytes ...264,176_GBPJPY 3mo defaults with entry.png | Bin 2010 -> 2036 bytes .../test_264,176_bitmex BTC 1d defaults.png | Bin 2357 -> 2335 bytes .../test_264,176_bitmex ETH 1d defaults.png | Bin 2323 -> 2290 bytes .../test_264,176_bitmex ETH 5m defaults.png | Bin 2182 -> 2193 bytes ...test_264,176_cryptocom CRO 1h defaults.png | Bin 2239 -> 2233 bytes ...test_264,176_cryptocom CRO 5m defaults.png | Bin 2062 -> 2046 bytes .../test_400,300_APPLE 1mo defaults.png | Bin 2529 -> 2657 bytes .../test_400,300_APPLE 3mo defaults.png | Bin 2498 -> 2631 bytes tests/images/test_400,300_BTC EXPANDED.png | Bin 2698 -> 2891 bytes tests/images/test_400,300_BTC HOLDINGS.png | Bin 2879 -> 2940 bytes tests/images/test_400,300_BTC OVERLAY2.png | Bin 2744 -> 2990 bytes .../test_400,300_BTC VOLUME EXPANDED.png | Bin 3801 -> 3991 bytes .../test_400,300_BTC VOLUME OVERLAY2.png | Bin 3048 -> 3170 bytes tests/images/test_400,300_BTC VOLUME.png | Bin 2954 -> 3159 bytes ...400,300_GBPJPY 3mo defaults with entry.png | Bin 2677 -> 2817 bytes .../test_400,300_bitmex BTC 1d defaults.png | Bin 2859 -> 2912 bytes .../test_400,300_bitmex BTC 1h defaults.png | Bin 2651 -> 2930 bytes .../test_400,300_bitmex BTC 5m defaults.png | Bin 2568 -> 2891 bytes .../test_400,300_bitmex ETH 1d defaults.png | Bin 2877 -> 2952 bytes .../test_400,300_bitmex ETH 1h defaults.png | Bin 2621 -> 2892 bytes .../test_400,300_bitmex ETH 5m defaults.png | Bin 2743 -> 2869 bytes ...test_400,300_cryptocom CRO 1d defaults.png | Bin 2819 -> 2935 bytes ...test_400,300_cryptocom CRO 1h defaults.png | Bin 2668 -> 3115 bytes ...test_400,300_cryptocom CRO 5m defaults.png | Bin 2771 -> 2724 bytes .../test_640,448_APPLE 1mo defaults.png | Bin 3539 -> 3780 bytes .../test_640,448_APPLE 3mo defaults.png | Bin 3491 -> 3597 bytes tests/images/test_640,448_BTC EXPANDED.png | Bin 3601 -> 3757 bytes tests/images/test_640,448_BTC HOLDINGS.png | Bin 4036 -> 4211 bytes tests/images/test_640,448_BTC OVERLAY2.png | Bin 3987 -> 4146 bytes .../test_640,448_BTC VOLUME EXPANDED.png | Bin 5766 -> 6020 bytes .../test_640,448_BTC VOLUME OVERLAY2.png | Bin 4732 -> 4862 bytes tests/images/test_640,448_BTC VOLUME.png | Bin 4529 -> 4770 bytes ...640,448_GBPJPY 3mo defaults with entry.png | Bin 3659 -> 3896 bytes .../test_640,448_bitmex BTC 1d defaults.png | Bin 3999 -> 4228 bytes .../test_640,448_bitmex BTC 1h defaults.png | Bin 3916 -> 4071 bytes .../test_640,448_bitmex BTC 5m defaults.png | Bin 3643 -> 3877 bytes .../test_640,448_bitmex ETH 1d defaults.png | Bin 4039 -> 4186 bytes .../test_640,448_bitmex ETH 1h defaults.png | Bin 3724 -> 3833 bytes .../test_640,448_bitmex ETH 5m defaults.png | Bin 3587 -> 3769 bytes ...test_640,448_cryptocom CRO 1d defaults.png | Bin 3972 -> 4116 bytes ...test_640,448_cryptocom CRO 1h defaults.png | Bin 3822 -> 3999 bytes ...test_640,448_cryptocom CRO 5m defaults.png | Bin 3744 -> 3539 bytes 50 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 src/resources/basis33.ttf diff --git a/config/base.mplstyle b/config/base.mplstyle index 86c56e5b..449136ae 100644 --- a/config/base.mplstyle +++ b/config/base.mplstyle @@ -6,8 +6,7 @@ savefig.pad_inches: 0 savefig.transparent: True font.family: sans-serif -font.sans-serif: 04b03 -font.weight: light +font.sans-serif: basis33 text.hinting_factor:1 text.hinting: native @@ -41,8 +40,8 @@ ytick.color: red xtick.labelcolor: black ytick.labelcolor: black -xtick.labelsize: 12 -ytick.labelsize: 12 +xtick.labelsize: 10 +ytick.labelsize: 10 xtick.alignment: left ytick.alignment: bottom @@ -57,4 +56,4 @@ ytick.direction: in ytick.major.width: 0.5 xtick.major.width: 0.5 -xtick.major.pad: 0 \ No newline at end of file +# xtick.major.pad: 0 \ No newline at end of file diff --git a/config/small.mplstyle b/config/small.mplstyle index 059c74ce..a2d47d3a 100644 --- a/config/small.mplstyle +++ b/config/small.mplstyle @@ -1,3 +1,8 @@ + +font.family: sans-serif +font.sans-serif: 04b03 +font.weight: light + xtick.labelsize: 6 ytick.labelsize: 6 diff --git a/src/resources/basis33.ttf b/src/resources/basis33.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b20255b2943f6109d529a83677f26ebd2e6ad753 GIT binary patch literal 39488 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 j2IqGlG$n)(LP&)_?xy{}| z0?%I;Q9XV%Fro-F+V+_uY#BvRge{{8im+uAK@ql$A}GR^eM5x3A5j-kzhO0h-jtts zOXo$*b35bAbV=M9;`01-jfjz^{Hh|{%kW(zVw@?zJ4Fn2jJQuk0YwC_vfg-7MAuV( z91(yb07U?b0Eb0n+cnUi2;HJwgbk@o@KD6EcKls~BEVS@{^G8*eb6AniTo2HY@7Aa zJ|SW+y@^=P_rE8?_H~blte$g!&7g>w_}u0fKoP35X%$4kz#b7Np@^9HnKV9|B2EwZ zb|@kyekzeigNVB_3)1&+J0E?0MMPIWZd>~5oLN2~B2IH%DB@rpZ;SY!p)V1puIF}* z>yHs5iYODmR|iFanurHaAavrBQ+`*9NTtUrJxp&SB9$Ji^e_|wPKh{w_Yq7HaqFi) z7^-Y`q83n_inJkiU3QUSeTWHkDy)Prb;X+*>eO+A4n#;;zU&vTgCuPoV^w{UYDgJS zu$(hW(3@=YqKH^1OAjPo3`y#p=~L=&e$kXUT(mYHY+e-}K zl;t8;ca5}@i>MAK4OvHj)2cKgT3uWq0w<>a`DufQ6!+$b$O#eg!srtsYL_89M7ZA{ z?~4mWxL=l6F-2MTBAnJyL@cHV6h9zBfPTHTu4so^zZLJ3+UIU_T*Ra+r3i}XT!ct| zHP?X%y=v-wl<>_4_uw?fh z)eNVumQGwLLew3t+eNJ0)~t%C9TaQpTIyKm9T9F_OPwQ#C_eU_(7fUnIuNl;`F&kP zHBVJUzBE;qwrK6--k5e7r$nq(RW5BYn236{6j4-FE^RT2i0t%eU&SqK9q4MydHkIR zONuxyVjta$KmbL5JSF0NIutSOJ-}R*6}%_nSNZ&hhqOE&p-^-u9f8UY=~xjdUPF?HY5sv}@>>9}w}%!EwC_Z;pr?D&5O25%tUPv1t?0bU$Kj zHb{qY>byE4_P9l2uY1`a@m-6Qr9Ht`C|Q5 zXA`3T`;Q8Lu|F^M8lz%Tr8X#U$}d~?ooxNEl1rs&){r_RvF>d4ya*9DBn615Ad_i{ z2~M88nxKBWo7J+cc5~S|??w+Hri^lnUKSy$4`y8IH(W%m@MB65eu%Yc;{03(h66et z-}BUAJ=oSlR5pZ|7Usj%#>98cif}_rujV%j+pXj$%45!RRXv0AcYmir2qA=!3jYAi W3KE;LLXju{0000- diff --git a/tests/images/test_264,176_APPLE 3mo defaults.png b/tests/images/test_264,176_APPLE 3mo defaults.png index cd33c08e84279f985b94a1190c5fd35700734482..4eb122a4145ed5973f3e12387acfe4c3bc673cc7 100644 GIT binary patch delta 1115 zcmV-h1f=`p4)_kREdzfxNkl2bQBS5Cv)Of9TzTuYeK)6s=!7&nC2+R$0aY z!EPJrjL2oqULkJm|JCkNd+u))){C4oM}VJaKt#7rRM}#!I%e!88{+kHvGSZVdWo}O zY(!U#8`13+v(^OTSr*++$Wa}@el(`1@Nho47ZJMdun42!((ixWV6m2!V=tJ?A^y_P zhBgt?TroXD?E*|LvBhrYwNuPRMG*(n^x!2$*gIrZTWt}eV(+~U))b*Xg)A;Yy`9a}n z!+t}AUNWqRMocPVFTPpRN3@5hKe|;Eany4BoxcTIwUz#DaBvZagY#xrlX^u_C;|*F z;;7~C7XMUjd-3fKE~4G0C<2Tvq9GIk9*Yn)kkNbK+&q8p5n>IJxIA!fUWpK)h)wl} zUlF02?~Ax=m>T;1Bm0Q=B0MPKW&BtqL_DS9h?xeI6!E>9j`$*8LlJ-?z(gVfrBVc- zh!fp@iqKu6LiS-K*W07ZZiN6fHC0Ez$<0Vo1c1Xx{!ZvNsTtWh5nfvFywrwA~jh%QhBpa?(_ zpudQ!hjyQr(Z2$Uz&%Cao+5C+x(NL<;i4k^fiQm*K@n#G6oCRL0tHY63ZMuSKoL#_ ztwjuSv7NxE!NwgzaMO99$N(bhUu-8QXRC3f=_2Zg@XtaE#Q0|__U)4u$_Ndkj|a6H zP@7F75#k0>MAr`s3Cax}nq5S(Ordj*ymiC<*Poj2BD^O%@S&L^+@Nv!d;u%}lffDy zymx;+fA_b9h@5ZFzbwMv{XY~jK5s=NzBK-zh`_sF&X<&4U#vgzP{gyGlZyy^Ri3Fu zFG-153W@*}0gQ+$*ZZ1>fQU7*UK&e#808nk{!j#<2tW~lA^=4IiU1S=Ru|Fzp!^{8 zA2Bls6agqg!F`0w9-Mskz|zq*3&}~dxCnnUVrFp>ZMIJlZ=xxpK_NM578kJuWn2+L z$RGA8PWIVO;X{E=^v%ViV!0#1c0zYL7>$72)OpBewOv%&*ui0Q`ioUWH2e~M{NYrh z+~kR1Keevr9l8~=ZPtbpTesJH*A@1o#mOy^=g&IZ%1a)O-U6xLAJ*0?RpmD#0?|_` z5mxlkb>b~Ev3~M!bU5{U5$d@(Q|g=i=yZ>`R4o!K)tr$TNFIy62tk4ZyNd=isFEVi h4b0(z5JCtUnSW2H42&A~o$>$x002ovPDHLkV1k(z`8NOn delta 1092 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 diff --git a/tests/images/test_264,176_BTC VOLUME OVERLAY2.png b/tests/images/test_264,176_BTC VOLUME OVERLAY2.png index c0bfab0b9f7293de8cf7ea1fb546fd2db392b769..7c0c1577a1b49c1aeef8eb104ae9913c7c140599 100644 GIT binary patch delta 1530 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 diff --git a/tests/images/test_264,176_bitmex BTC 1d defaults.png b/tests/images/test_264,176_bitmex BTC 1d defaults.png index 87154372d5fbb91a2ccf22f78fe0386c41b7b441..1c048ee5ab2f069e03bda806fd622a734bc9138e 100644 GIT binary patch delta 1541 zcmV+g2KxE65}y*VEdzhuNkl3!`>=hmQ;6!}Z{mESowzyb5d+P=6A z`o5Qr5B*f*qk*twnqr!QHm$<#>43*YjtXCf)TmKmiwN3*x&nV;q)DwUglu~_XS75k zaxDVlSRc_a$SN6I%oTxYHJmS;j7Qyiz4; z*I;RPm>ILI@IL{B!eFJc3}$o2r@E8FRm{K5!@Gi z4}?iegWxp$6h?Ot?a#qY;=`v&i-I`5cuc-;YivA&Z-MYM&_+O@4OyrX^IieM4^nA= z_vHtA^A?R+t_Y&{r51}zoAEg?lLO(-$J+S;BdLEIAjnA7Pm1(nm0V}}EC@bCj{#xB zwz!*FXZc`~(OVv&2+WH24&Vi=sg<5ad}t zom(2j6c|f@@Sb8I<}{0D5O!+)J_zc`-Mx|4^ zkw1Ut>4a2=$Cm(c)v60X(3&)X01yyHqtH_h|@i4zk&`_2;vmd`8bHW>;;59=RF|O+4Td_BVI640wV5z9*Ekg z+GG$d+0!c1d(v}=he|-u#0tF?MCNX_tt5BU4}^P`7ZB`mtqFviZhj0S4jse2ZA)4kAv_h2?&1y5uWr(5JoC;l7I-NR%Vp- zfIxKyVFOk3VwSyB1cHwuNx7KJyueH^bp_#nh<(Z5;JMTl2(CN`3|;Q|yW#A^zE^N^ zjo7Sf3@@pGnB%^qMuQj}v+O5n5hwwH5)dc>ff5jNBp^@%0wo|&0s7W>`sxw6YEXRotdOv-VXz0Ptu(HQ=oG0PtEvw_psS#Bc%fzr{#rxua*c8W%Faz#;*h+5{X12(Z}@%TPqc&S;Zzq00000NkvXXu0mjf4;;b> delta 1564 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 diff --git a/tests/images/test_264,176_bitmex ETH 5m defaults.png b/tests/images/test_264,176_bitmex ETH 5m defaults.png index 6f74530b6eea24d539cbb3deb2b4d357ed8024a7..e1bc40c6931da4d6f4ca08e8eadd49e260eef4f1 100644 GIT binary patch delta 1398 zcmZvcdpOez7{|AnnPc>udvp7_bkT`iqLb^!I3kyc3W>R^674$0jZLPw~r zo5X76%u+60wj>;+$*qXUZML4%={e8&<2>hm-akIi_j$hmywCG~&Z7&^H%(;7-UskF zzq8DFW?t)i0HAemI)1S)QXR#^Rfz27QOkmwhKwJDZUdS*IT5TCt<8$kpN$u$7>sC=l$|9?f=!DW9Y~rGp?f%Q~h-uhRtv;IMEg8jc74 z3*>*J7Ih@IBmC6OMsp?p&gy3y;O3Y6xYumP<2#vj7vN>DgB#5QfPY5gw3GC8aG{V>NGg~bU^Q%rRFyy} zmr`AUj1as(xJoXR=apQH($5Po7lLUUs@XnX5`Zp;>0QVgwC8G;s?gFZrM;EsLDFjM zjsYm~*;#<$&3Fj8Es@< z2FM#lAsL|_*@H$5UmGgjenTGEoHPc~YQSnJ#R6exi!?C(`u&>z*&X9zC?FC#%Aj3> z;rfhX&Xul^g(hWwqP^2KIQ`?|9c{Qlj-+a}tpYnI-(-rLLF1M9Q5YO^3QHCn%Y-Q? zRinzF=#~#_I5?M(!EG*q)owrV<&UR66#8m7ASkh_&O;FUEJ0OYYPmd|nV=>0OGDA_ z5A>mU>&*+^8P7zqz*v$OkN~?Qo{FN#MU&pIhhQ~Vj9)!5^dFtMtqTr!d5?;bYsN)Q z94lR@z(}XlI$G#6QcM07OB+hjz_}R*{p5N~4d14fozOYA3lP4rmov~szim#1guo2S zVwd{wfWwC~8X&dLAE0>KeJ9V&e5m9P9lAI&^H?rQ=G0TGYkPjv&WqGMu94A2)OY=ptU~BA-UP z>~l4HT=c43y%uw?rthK{dCqBQb2Z$rFGLiJp^@DJ7)rm$@If@(Pp&Sme~&l-*aiQ( z06K7>#E7pVMc{DLYPrMl!uYv)9s2c&0I31pvy!PJRi|-!Th2rm4dK$wEq5|X>7X*F z`Q__d2g%#wm(AX01AB~2?Y6QYyqTkpn&|5Yk)7;#jUut(E(XDKUuMUn1qnMXnqh=t z`O?(O?RLdsz%1lLLw?&Pbvhb1V=Qd+QWNKc6?mXO4|Pl>>Y2#*!Q7AdtWS z$1QLjlL6S=0SVaJW%j7G+=zZ7d8J9j%wPPpyw(D4^aMF9XAN%EcC7Ret4LpK;Xemk zWB8T@5f-nUAA{B!pC|I~>+xb+GAj`LXPIZvG}8nako;W>6%R^6$6mzPvdFSdb4py9Xr(p=T7 z;fW7PpKQ?leXejqyfZNEG0i@72JmR4=(`a5OC&)u1Wx}`k!P`m;SnF={?pIhSW|0h zzl?DA5hIfy>0-7rk_-ojEL7TinmzTDIZKM*d)AdOAS?*wWHqRP-P?*h6iF&pdB`I8 z`ii7iudZPA2$3Ws1Aj BYt8@w delta 1363 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 delta 1445 zcmV;W1zP&K5x)_zEdzgjNkl#?2m_3K)%90jtYgQUR5X8`RsWcw2! z{J!l6DG57E1qe>!T0MV(pvtAc%Y$<)CjkKx5Fh~ons(Eb0&ZXY zJ^_Mf)oHls*iiK;5WM7c0xuv)sDMzXfr#2DAl$BifZek}U_%9j3g%Kilz^ChTlrD~ z0#puyPAV~cLlBoK^V5>&C<-DT4mJdV&Cnc&>T@8RL&aS>R1Bi~B8x`y4wc>ZB9eb?y*;xJh_nO*XdZ~grlVik6z&TsG_boi7G|0)PNSPBRNB0oAn_=X^y7m;(Qu+0XW_XGlwtp*}n z8EBEtI#fvzPj8L=K;RlGmGL8D5RVKnek%~@PCsp%l-ZdJ}Ph$;z)uqGoxK*i};9h{#I0*Be838=%(<{;`3&j1lj-6~337lcwX zL12HwHQq7L20>;d?Ld&Z4Tc+~u=xRqHkZ$OVa>`wVDcwDfWU?eh_8TnxLb?n4S5hH z*Q0AVbx%?CNloju2Z+msPk)CUrwGbHkcOLRzp*w1@pi(KFR5itSku-ZNFhD6 zE(q)fB>4^?QaQf>5ii}rO#4VcbkEu5{u0E`na_ZL?OYO(Z`3%YXK0X zCe)`r8iez|1%!YQ5MfQohg4^Sm?wV$F|hbD5QBu~)JTU4%2)`5cc>KkQ2I}YfglbQ zdHK_6Akd+@woU~RjS(k<$Vote1O%wJLj`4Q0Ag4nYjYSlu@w*?0Ra*adq_Zl1O!Mx zfCL0cK!A<|;n#=^T}-x~(5mz9%%#IXjQG0a777-VoeUxvBZhmHTS!2F1O$JGSanrQ z)(&FCnB-=cq9z0h2!4!!_)WTYn*_w0AOXRTF-NF^p-3bWWu)o%LQ~%n%|!8owC0x+ zI*p95D$%88+IxHV5!CG|45|sCP9rC*M#R`;f(TY;m4V=f5T}t9R-tIA8Lvn1{!SGk zm3^;9TGzaH>jst=V}xdgi9{VDkw_#GiCXC&sb&>~@7tf_00000NkvXXu0mjf=LB}> diff --git a/tests/images/test_264,176_cryptocom CRO 5m defaults.png b/tests/images/test_264,176_cryptocom CRO 5m defaults.png index 5f97bd780b4cda3d221f3a88ad503de118ffe9be..03f489577aa17e077abd16d588412265a56d891e 100644 GIT binary patch delta 1250 zcmV<81ReX15dIIaEdzhNNklje@ig7)Ejb7ri@q@DfEaWjyEGo$Uv4Mw)t? zKBdSD(fa>K+X=hi|KIkLTch2y(xC`r4E}D@Mt%N%tNy*v_SdyuISXP&G~F(Q9$AdB zzs60^FT&4n{a`0TV~LYudxPi^vwE-%_idJ)!rO^=1|5s|VElg{)6v7XU1}Zo04#%@ z{TLxs_$s?`!KfhOc019wLl?b5-c-q2XZ-Qio)H zdIb7`#?(oGCmj=LM=2%AeqBAPzf zJjG2Bd9r^Z-qkgBoK-K|*vlf)qw^Wrv3U%aLVh)=rxP(M(+v^1v3WRSHzGcYi8Hgc zMaX%I5a;UAOEmwBB91nSF(aB3V%8FoUjC4Kjz0!dMCN!ixK7VO5fO=q07Za75q+ zH!!T^zDN;6>P!)C10xC@07U?b00j~K22YA`8|YTjSj4S%@)HF`fb~QGe>1a~x7=;W z4~T!Lx~}{ge%~7y}r&M5tD@c1nd!jA^=5ztO&R6dZ~A+^bGDJwb_Zd zGuTZiLVg=8IdNK1goPpiMSz@$Yc?oiU+8}{oLt4G2)B9}5hqXtpa?(_fFeLkoI~Uq zQI%(*2tX0w+Q-Wu6mb;!3bD`hn$BV(RET}5HU3k>l8B}!oc;o(UBkcn@4+rA!pA-* z4+2-iqXwV|&@N)W*k={&5r859MF5Hb6agp#Pz0a|KoNi<07U?b02FZ*iU1S=C<1>_ z1fU48n27nGaN3XXgwrKLekH`$9p`+oXD8-=!f7Ywf5Pc-C<0If5Fx)yPTrlVA&<#U z4%yTLnJA(?4@K;gzPn8naVHZ+wC6EPaKRxVgcOh$^4wk94Vm!Vv${+nX?3=6p)qsC zu`m8%UASmb^=!b9$xpX!t09|?>R4K}olAr_SG9<6-vMc{Cz4iY3s2e`FT!2DvUjf6 zifDdo<@4gi#ng&SU+xhNV}$5NO=E=2R=3N`%Z-D_2to)Ugb@}#L1MUonlpaL)fsr*&kNbDSU0?lR(Z_iU13Eq;LVH?RuXi zv}~*4(H=n&fFb}znE38?ufio!XSbE02tW~lBEYaB_AaDnx9vd@fFb}zfFVVc8qrI_ z9~1#70#F1PYS4e>!jh2gPxGkRc0@N3H4l3z0#F2?hyfWu#GS$f(`aH$(rF$OvDi=e zx(j>q88_YKbabh~U*@Zb#VxmSRs&cp_jLbzE)OsbmNmfq9xDn(~?j2h!*;b=r9TVP7!|{^3029zUhsaLqvt68AMbK zkthPpBjTW;6ahXgVo}j&65%%b0#A$RqvR10evgY@E22D@{h513pg4-4h>JvAHgw4p z&>>HX0BM^k!cc^v2tyGbJ(>*pOIY1pMw>+RdFcDB2p63q5S=0rJra=>lZrSq^B>Lr zrWs5n!uWsLUq9Q`brLu)BB0t7Y7-t>^b}$9_m#Y3%I}aTM4&6&IthHpQzG2#@ArDd zH8)rkkyhtI-YEiHkd^0@2)o`WqUKhtl3{uTMNou_P7#Ps5r|F^i2f-Nq45;qLf47# z8GTno`urgk5!PMwVMX{#S!NZXYqm0>hy`=f84-V>dR3Viq}ew7ogySGL`>A2{Y(tf z_yj|UsLn1G;p!wmi_m?^=X}%wzbGQD*&9V%b7~|tqlhTyEEM5V`Qj)-i>SM;->XkH zn3R{MnM_1_hZA;OAwrXlPZ6s4W)VlHcl4WnQ=AH}&0Abc3pIJM2%m88m1uwa`ehN~ zhXa3NRb=Kq6A|T_yjXb|>i@sQfb&7wuQ^Z(M1fU2&5g;p~c|7z%5!l+AOA@3A zb!xp#M4l@|sLt^%5o<%x8cCWml?daWwfjJB5_k#`5*EcNzatSHA5ZomDZ^ASHzaCv!;$7h)l;RR2!F@hlBl72rwD(d?EfOOB@vEO zWg-a;YDuI!Y)zt5NEnIKA76_HO8@`> diff --git a/tests/images/test_400,300_APPLE 1mo defaults.png b/tests/images/test_400,300_APPLE 1mo defaults.png index 384b290e629bb91ded9523cd1ea1b4ea60fc0938..3cc7411d76671d2a25f9f99dc656308ebe2df26e 100644 GIT binary patch literal 2657 zcmeHJX;f3!77ifv21IXwfLJKpKof}w#a1u{fm{M4A~G0Qih>w|lt`E&V3C;wQJ~yq z5gbC%Vuc3*YLLMO#3F`(#i5Kch)|$q2vb^=Vof8`s(pXn|JSqDUT3fG>>qo7d+%?Z z)1G@>HPtt(qfjVK8kORWLMb5%GY3=@NPj4H9)(i=!*dVaSuU3=kXQEa`ImwJGX{JD zn~PDX_l#&1GW`T!T9{Q^OaxUwl*=D+9{i@Xg~%{@zrt_p=~F-jT}OQWt0SnCiF$co zazvFlsjxow!1RDr-K}+ec}^z%Wj&WV5_d0-Q~!y)uyTC(@j*h^Nm2MALgjS}^u4;6 z02R1p|J+opSFpf*4oT+G-GKcrSQ1u6?(>qP6M< z4xWm1lDyzMl$PMXIzlUx)?doC{iMcsD(@SCD#XyySZIhZO)%hQrh--=E+ZBEb{)hp zrmSBB#L}#+g6sKP#T@-%TIv)4+uWE41TaO$FBGp7c z*_QPq;Z1xh;+s7n&9}`hVK_mgxryT=-F}Iz3zY2K$?=Wc8{cbgg*HGrXpaNox?Ci- z#T9@rYNMmFp^pDJl!`Q4r;Q5cYQEGS$9oLg?ToltzEdhaNPW1cQ$)gSubbAxq=D5> zf$I}CUi%H9o_P)z&CQG=Q@fL8=he;ZW#|;p>I|3OH#~}Oy$(#L_RC)xH|uRac}Vqo(c7|8X}(g zcpI)}@tlveJKbi#_Ai649Y^ZcL-kMVDubXXOQV1!J)O~?H-(>|jiyxc%x}66=CzGX zhB;zKk8fi>dD&^f!Q$fQm zi0RoRp8mWVAvQ&pb?keb(hs0}Yll;a4J&KTn-y^Jfye}7(=Q(Ylf1Mq+N;j$M)&57 zB+jG(>ZIAADkZ3(+<5F$Lk*IDjT?w_8HNLZ)m7++XOGGzkrEy=!7u}1`Q#_bHiOa1 za7#ULtl4Is+zXk$e*~KJ!3h1Ds1hD|S8!Bax1J(95GSsU*gLCAq57|~;fYzyVi^j4 z-vNcJWFhTuGE;;7tY*^>&RShMQ=}E`E9by?%uhk_%PJ5%^5yW!Vx%$5v4G1@sPb}_ z9Gm?@BVx&xYM+jjM1JpP1TQH!?3UQw7|4c>!f8K7pwSz&eV`B^7L?9mydJ)#2=KwUk|quVOjvD7}XDK&VT&_2u;-Bjwj{Ma(!F=q^?wJmD-Z&9 z*QW9UPXMFA1F!$%awyF>7l=ZoFsvs($hR}=W-Rk_!V6XV%)^LXtU3XM9X}s%><$rX z=V#yldf~VLik`DBr)%t(D`gAVyY;j1iTTxm_tG1MD`OVR-5Dnc`M;Wk6E&}hWX{V7WUzZ@h!}|o(trCP@em-s1Sj} zZn6F7Bi8<=^Eo+fo=dRS6x(k=oAC#&AImtwHFc^u<&wVhj!O$0@)A~eD}6wKMI8x# ziy9tpleM5i*IZ;W~S8*p2;QUAh+xF)Nn P=~pn#c`v0B4ov$K3>_$< literal 2529 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 diff --git a/tests/images/test_400,300_BTC EXPANDED.png b/tests/images/test_400,300_BTC EXPANDED.png index 1f3f73932de00242de37db1a7966947d751c9d8e..121572f068eb12ee5c62f7c134ee23329ab2fb30 100644 GIT binary patch literal 2891 zcmeH}i#ycY8plU&KQn`$%WNWwQ1(`>dR8 zo?8_0T6i1|r$|Mey>U1xwxpXt(vp?_DAETUZrS{{tv)V`i;I$#ul?`#w+H@W9`N1O zbOncl6sXRQJ}E`w^EpXZjnrkYE-qdf8o%Fe;zwT>8a=#kKd z=9N}y`~0I+n|%0tMb0f_0}N*SbFHcNbr?)e$iNa(;CB!er-aZdt9v# zcf1I~zDBWuHsVPOPTlx&B0es5yr&MvvJb)Lu$~;k-<(YxJ^eoav|6gw=@g6zkv;W); zAG9M_8>H5jx9L~}f#4oe=>&+`CpZ$aUf?*N5NKN$Y_IqUE8xh)9%L5`WvkXT=cC); zuH?vLtKcr3lA%Rn31iBJ`Zj>%hz48+{KBd`If+r}D-FA6MiPR%-gkIqL@~dRDtr|& zGHorhDcJDz+{!1);rxyrS12RhXW(C5LBL^#eB!k5s(sN#GZ$1A)-xC}s}zoTfVM7( z%g;qPUbe7avnhD@`KZU@IShUM?#aW|uBcb2vLf~+0%kZ@hV`x)=fX8wNO}DBR;K(B z_76pHo~6^@;8MH4S5v|XUIBokE_tTV`+gt-PBhOV3pY0@j0g#~hm z=RtPx?*wT+U=8a_h%Kt#8>oX#WWuXG2i+=^kfb;J-`pb8fwBb=$yz`~7d7b#G(Hz{v({LyrJIl!&~$C048No#$!87Ba6dTMLSX z=ceND;5^ShQ_53|kfRYDuQ>Vw=^G-OaXkhf_y48x`1NHO&P)?a$ASUL%Yj=<nM3c#yws<6d!E<7(`~W5 zZo9+lYWr<3YGN9tzt>PymrC-G)c>pu z^OjhD;7%LKzO?Q;Veidwq&aqE>A9u)??nlH^bk!W+hCUul)7 GEAwB)8=x)# literal 2698 zcmeHIi#OEi8%Klh%&@-G$UV(FW?hnsqEa#Qb(>kVj7wB@HHlRrm(^yvxO_1q)|ZmD z)NYz=+6+;ca;XfBIuX^72}@*!P$HL_-{iM@cF*r$`0abnbIyC7=Q+>&zR&add|tlS zHaAUz0YOPgNt4BNW-BQvV+vaZEm3&7!k0}bDXDz)^6+($%jF8sXZv^k+kyYH4)_J% zyQHL~&SW_=e19kyE8yn}D6p#RlRUepGu$Q8dz0~5ed`K4ica3vKN5~QIG%1?s92ax zx=3+WGm|?48T(UyTyH)G6Vr26|?S+|dMmew~tq)R|=p2N{$q38vVvtx*9KhR%zUgQk*qV zUJ`5#Q`L|V$*)`da=#vUzW!393gG-5a$+UtCmuP>is&qwmYAykGvs=v@<@W~vmeFH ze6qmL$1)BzN`bA7mTY6(dezhf$KVk0LDOp=4+Z#`96^nq_%S&RId9ACN+-9KP^Cf{ zF}|eOk!MCIo(Z8KSG}Bgec2^iu@X^Twf(DZgN{vqd^o=2qbDrJ_rh zSl1u&h)Z~aCS!G_(v7Vn=+xf)dU<92(#bV$Rizq;Z|Z1hOGJD`#E&lpWtxqv%UV|Cl{6ErPde$NR))M8Ib?~>oR0LFgQR|SNP z7^Ywq@3Ta-kop=B zKc)ev zoYr9;l!}>9e~s7^r``X^$5mn(XS95m{u_d|CmfS_7PGpVZAP1)nWwc7nv*cX6?`;% z#ktxG+b&{MI3~Sto$1h(4SQ=ze*z(`2pfOU?PcohBRLUH5h$TF22T$nEdd-2-DF)| zl;<5cSZNQjl3@$Nn#YzDL(9Shm#(D^oQTM zIK`{Wu*R%M#COHxBs~WzTCK67P1MlSYn0d3?Wn9sw;E8zIk`y!rqG%NQ+1SQorU#8 z#pt~+IpfNVN+U+MIB5_yjnyyl;HCw^0p>`3mX_z+ z%66#7+*P05Vn%y?#qJ4#@5sm_I^=WE7q8N=7rUd(Y3&9;xh}Oa$U~Tdxjxk`PsS|8 zy#r+qspkSm3bE{717I9QrnZ)^ihLpc&9Jh6ZMZjZfJ7TT^z*_QaR*0I9JJUOZ6r+KN=@NRKWxPHjSbND_J9i0KR_1zLv#1K&5eoOGU<8VD z=2?V5myiyFPqn-%hJ*x>_ME~F_Sr!qRGyv$=S$4H2+uc=4~&_%>aydIk2ae?zTI>H z*e!(HPfGM)o24i(M~7pzUe6p^ssKkg2&s(m%YY^zwPZ%_OPVYB&1=40&;nnWBkelHs~{nkfq-YUgN^l8c0QN z51SFK`=a*P4f>xPn+XP{jgX?}TJ=K_kJ5u55Dags0WBRHa91cZe7NIDbSA{$8T6fc zf9?|d_I#yc=2(O0wc}knpqmfjv%e*^YoWZ!NQKt6MF-UE`k6bB*AJzlE0$fD`SNQH@T;Z zS9E&QX_-9~XF@A7H`}VLp%sjSa;TsB6NOO(2?a)?6nW)mM(8c4E=M<%)1g`hk5b(5 zjp~=BIG|AYcP1Z9)&KsN6Vo}}vHji0a)p~ZVh1B<{C2AL*jSiUWnu0+?doeA4XWg> zbH&{4(dX`@7<+`za|=niul>Ga*1g&_u6e6FA)`0YKajW18qj33T-0Oj-pdtFgCFc$ z-#6WBhpc`){l|4ymF%ii;J0-mo~18}Kov(%6%L;7@Em`A!FJ+OUD)!D8%ZW1<^Q{J at{OjX$2aGNv9=_BzAnpUo3juJPW}(Ga6fYZ diff --git a/tests/images/test_400,300_BTC HOLDINGS.png b/tests/images/test_400,300_BTC HOLDINGS.png index 76379ba7c28c798c186de7f45e0c41aa6bb5e972..916ad620454c73692398c71bd6b7c163a1adb172 100644 GIT binary patch literal 2940 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 diff --git a/tests/images/test_400,300_BTC VOLUME EXPANDED.png b/tests/images/test_400,300_BTC VOLUME EXPANDED.png index 546728d92a853496614c2f35dd4144dd6aa548f0..30181a6d412c7281ccc571952d9441c9f19124ac 100644 GIT binary patch literal 3991 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 diff --git a/tests/images/test_400,300_BTC VOLUME OVERLAY2.png b/tests/images/test_400,300_BTC VOLUME OVERLAY2.png index b362c3ec07d4ac11157134f3428f613e63262d9b..e5bcbc37d8573711efc07173b3c8547d9cd72793 100644 GIT binary patch literal 3170 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 QQu*fR+44CBU{BP)0fiw1kN^Mx diff --git a/tests/images/test_400,300_BTC VOLUME.png b/tests/images/test_400,300_BTC VOLUME.png index 90ad4d8e4ab75819e2c78f88f9c5c90557726ed9..642b35b9adc5e935ef7abe7a4ce80b08eb683bb1 100644 GIT binary patch literal 3159 zcmeHJ2~$&977i$w1ke|VEaJjTw1GxIf~bHfJU{|bf*C*rRFtR#wkSqKKt<&Rq7Zq? zCX3pH0J1wl_9ZR|5ztl|89E?$nqM$|t8Ue)?|kRhsk3}_uemro zs9;xNQ7Dv(BiW9ILdhYryAi!ahIIO^{DeZuFSzV>wU%$ zp)e~Q?QC4nr-|-dNzBkuMje$(Gb9HLp4X))`8`+p!)j4;gDJXC|J%J)@;?7A18m*eu?%B?cu#o@)h@IS_%^Q0f z_i^mud@_;(j@Vd~7Duk;Ev66&+-QkSpYGkJV_aLo;-GU|rvxnBnl;u|;F@C{$*=A98b2V+gd*2%LhD}!h6=oLXjhbD zajJ16x6_-^VgAM{!DIhPCmeI;{ejzi+Cw@nI6T~{k|Hs8#~&R z2c^VL|Fbh`S9k?re)bKv;|`@WcSzC%BbVpdR%Hw4ORfUKEylW^8|$)+-rn;j`iLk;pHc<1dE^pjYQhFz@2r`Z}*4!njD+)WDl=sO{;~nmvNW z1c@KMzicYa*1Ot8lQ&yR<#>{B*g*3(xU8B5-N{-}#^|q_c~Iw=)oo931Hh^CWzLI) z**hQmGKV9JBN7n?KvVhJvEAyNw%8&ZNfB-(6uE0Ih5WU)yM_R?KljsQAFF?^82z4D zlTR`HO=3b3Xux=zFS8KySaKKx(3XBb8f9^%OTjWmHqhg}9R)_x?EKz&pS;x+p!cdk zA4+lDmrCb(Vb7kBRZ|@1L8{8MF3Upu0Y?b-}rF?Jl-k2o{T^i3LBt7kCt%L zSX+SCYgR){sNTO8;^j}XJ#RS$D~%F>GYP{zmx7=VS;c*AKD`ZZ;hB}WeareKA`Qbu z#(u%;n=VAUF`3zb4W#_YJ>nc{v_6=Y1kugm3!fV5$`*sBz3l|n-XxwK+Xc^4?7}z> zfOKNagqyAVu~%hAgEkkU@vO5fGD@NxgvH>_G%A2&-QD#t+I(mWc&0;;3eTukLiA%W z*Hx(_d@(&PM0e2hlLmHwv<`jw=iXL(9Ne7lNfwKydYaLWegG%c+<;qn568Jvv0q@Z zH9Q@O<6x6GVK_FrsM%qxjao!X#LI{Qgr)+7+8fISw_UGu0-^lqw!$Sjx^wc?MA<_o$GtnhdY|5wbu)3v{vF-ySC8}S1R=eNO{ zN>PAsA3(B9dmFH=+OSRgA4Bpwbo#asmG?pm8r-EFP~#rxH4~nULTjxKu-Z89)&`-K z2kN5ms)gbqji(*?TY+m)hHw{4Df%=mwp52sdM(6-xmZ4=1s%fZ1!EuQTRCM47^vzT2SZP&{ zYe_rk!1{=TH)l)K`h#s*>ZQzhi&da15$ZYt$A{Ljkm=PRT8o`ui6?{xJU}{^8=sWQ zfvWINCeOy}BdRRAsaUNL+CFtc>ShnJ^HK+adaX`f@X&ft<0+raQrlxAP&fV6j@=$z z0a6nAdfe8OmoI1Qn>YWnwymIfIWO8A|DOK8a1~ZlEdbgFb zrdN+U(P;GMAeG!YxSM+HAf;r{2{O9dx(xH&tk5+q2plQ+T!g-9d~|do7jR4;P*l3< z;FL3!x!?ttM?<6ovyb~S14O&fjclzPi1kzq5>KkQW&()pljtUsg*K{=44 zfaej+_H9u*b?qDTCb^eLC&e1_PltnK|Ls??(TmO_pBpjc>-Q?w7dV88p_q zSD3Fd%t3dL#^(tWBf3L9^J3rjTvE2G@CwmCxH^4jProH)gLgY4tjEjpWSTT}Bwcsf zz<8H;>wq6~JS>2?FId!Sp3mkW;`6zErB)gRZMkY|^2Ha92G!|7;nk;?x1oj8-mRW_ zH@0U~WF#aJbDuFB4c(r+FLhsMB4jui6fx&Ma`9C2v~wrq{`B>GM3SOF{w|om=Pdb) N!_nT^t`PFM`a7NXM|=PP literal 2954 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 literal 2677 zcmeH}`#)6qAIGQMjzP{$hAx9SV{%!!*GjEN%`xmK*)=X32{9z`4MntJ(-||m=xEzq z<54EN8;tkwOhY=VFzaofK!5kHJ5&E z_Nc5ao{m_|-ExHbF-oFoA{?8=njTc)9NXvJqBFh5dS4l*?CH3xmue$npr7BQxBqXkkw@}b2o-{4}MG0z+ zG-1ZQrxk7_p2qQJJ$Un8YoS(ox{qhu*kIoJj?TW5sD}LhHr$kmg^tN9QGv2tp6&LP z8RBB~5Y96Oz^>Jj!!AQEQt6uuRvsZFy zYGjvzrqpvR&dYI2_384GeF5}kU0o#MvSa5yz9fmCWVzaf?tK6-3rR~7Tx=cBBSwr> z|FQalgDVU573%fw-ZMHLZbAtZ{doCkPi6pBurW+y{1P~!0bdlHpE_$+(!PJp2zwfR zJo+Wzz>7<2an&={FgpbzZjxfuhD7rh)Jr?jc4FqM1rtN&qXAm){8fYLikE=;a;}xm zC3=!Mloe8ii(Sa^AphXmHt0Yy7Irc>Z4;o)0x`Rn1)=Ye!SW1(;>{DtjrX+My-jsUI*=GX_FhHn%WI0NvTp$(L7b@=ok z;Hr=Nu|DyY?(CC_Ty#-D;%cCiu0RX1aK*>VjSVu#o|~eyV@XD0p(Ju?9n|%h z35CklY>&N@HxJ%(qEF@S;OKQtpF^_?`4mLR958Q~IgiTx@v%DHrrY1vrK7_1WTbO= zd+zV}ujb;R9?N~^Q~(ysg%|i4O|C=5@Q@#2VeA17Fcoc*OTz;y-iwf!1_U@VNy|6TF1g z9L}mtR!N(F;#;?}{#}1*;K}_L-xoa++`LVlieo%|HFmQ*`aF!AA*s7!1C~viQus`}T1am!qzqMKi_^u8KiU z9AnYkJb8ED#DpuuSAioenkZcDV1q+rAbW&N6CG#w*xKyG)r^F-^p<+gnq9-&;3h)@ z4cIOuiswv!OgM7aWt-4E>-f94!i?8tE)O17pGr5$s&^pXX1BcXHV!u8m+Ad_1qY~; z!-4Uwoa#~>L;nhiqW2(gh%v<6R_abUo0T&IPE^gY;Hz0RqBs5dIe?{ef?a4ME;aG9 z_H>gGcXAA}x33vMC}g1y59|)8BYxnd{P)j+s#H5p#agA(W5a+V=<4iFy8#EK{ue-N BN_qeQ diff --git a/tests/images/test_400,300_bitmex BTC 1d defaults.png b/tests/images/test_400,300_bitmex BTC 1d defaults.png index 8fccbb350fd02287507ab39d2f370ac4d254e667..98bb71848012b6fe741215b00652f37f95fbe9fb 100644 GIT binary patch literal 2912 zcmeHJc~nzZ8V?}yLZrN40j&smA?O)`L{RFA4v#n_17!rX0m4p3MjSz^K)@0}9*Y_w zO{I|9fI=i98V5m^vN&oaC#0XuBPtr$t^JHGPLd=`J4hICMax(P)w7{zv;G0{>?b zI2>}n7=;2XsbrT!%pb=2=c|fsLH$9s#;x}fR=&~8rK%+ICY7C2GP1iUhFfEYdRLsE zEcfaAOtD{6W3N;Q74x;M?u&OdepdV2SwTCK`Tlt`Bjb91&RQ2!x)^>uAz+ModxOtN8L%SPHeo5}j-EJhR<}4XTlt+ClY9 z)n10vvB|p3$uu+AOdonv3kShl5Aq_6{i5%^t!k+-9*s7D!f@m@NLF9_fF*^6Kjs)o z-x&DHq}HH)d#Fp+IsmKpL7@3*Q2q(NKac($E9bQ_f)g10y7jIB=~EZGcMq|>%Fl4Z z zVLVwvGWv89xmiAk zofqg!haoEu9HUGJe$yu@yS!S7c6c-$jX`I>smQQH$emFO&w6B9OG{S5*Cd0b#$t$Y zW$A!5;t`r`JaV|eH!Ekuc{fTddPQa)-9$_0xk&Oawl+AJ54A9;8*z&Eo_Z zN&550v0qY5^dSdPP%Y;bI7j0ZN}O7_4cOKx7Yh4Up5|x&_w&~|4MY?`4XVaagRKRa zh;%`RU=)^y8^DcHTY_^5jseC(aS6qoLXMQ^lQswG+z2`I{7=LJP{y_cUS?I36pkrFz znsBRWX571}rs0*GVpq?=W~ImUTo6etB5fu#Zs%6#MJdDKDHtyYufx)B^^mcsa@z1o zIFfc@0qw_qujL9m2DXUD{E5{51~2zjvtU~~q@9zX$*++$3pf6$IP8xQ=r{&2l+M=u zg20v?S^x|7PsCPwMt=+Nkgkjy;}5^@ zY!#eSXK+Fax5h>LxinjN%vkMonV5&i%JR^vkgAP?UasFI&3ZyDacdIVTx5-jS2*}Y zDnw?#g#-E|7~UbC(2&~R*kdhr6waDdqVI7zGEI|a(xJ&d>pj4CD`NiG?lprSZ zdKE10TFE5Em<&+2HrrBRo;G2UB)T)ffoF(;I6T-7OuY`Vkf%TP*vg>$) z#;#lsN_$yNhXlE&9bw8g0PE`0++$;k1RU3gZnm0n?SqR3f%PxWZMkt;ggKiIF;46O zx(>Kgezbtnx=YceTiS1>-oy!fKA?$C%(u2N!pe)wd8g7Q(Q25mQojanfTYz>;4W<< z&*22yB8TrN8QyPe<5enj+sb?&3-D`foW@&68fgBiJ*#Wdex?*6W$A0pdX!s6ddJyvUq zb3#z46yn9Ge}^Rd&$T{Te=h!1%?U-x)JD9=%&A>LLv;7R;)}f|OKoH2|LAtLyfwV! zvDf?>tsbMAm5}f3*rXcRW5eiT6~!%F^l67l=H^dtIbH=BfcV z5kvEs9T_*g>xX0P6;@PR`PZ4_Z5+gzB>41JJgcLB)}~XL<~0+>`l+V+0&PgIWKy&# z{~@O7W|tTiWz()Q)Ax(ZCPnOPchsIuifl!}-SLV3_~C6kY+7`;9PLz0CJx2h^!VPF vRnzJVu1OT1z|V*4+pn7+3w50Z+0B4mtB5mP^?u literal 2859 zcmeHJX;hQP8jfsc5&04|C~F3yVKsuKpd!l$LZB2h1tfrgk*bJ-U|9l!paByX{2JM1 zX+=~7M9^CZDjXq704tV41z8P<4f~=j!AJwQ-rm!n_wVhTGiPR=dEZ%{dEe&@cdx6X zGFA^-k3F)PpoWGP76`>J7!*S57i~0xLr;S|Dn9j{wWu`i z@|^Y3eDB0aS9MLBb}&oYvN$zyi`tb@TiF{cc|R-X>m{67Z~`5cCRmtlH>Q1RvHr>0 z;Lxt}e)r~BJfGJ+b3POWigqvZxbXC~SM3$~(M@)bH22-jEgqm0js4=vc#~e1McZA= zg?wT!Aa27?hSDN5+!zbu#N$%ob{4+f+OpM1uw|hmw=eEN{W(SM zt&$V;3d&sD)3D(R^BPOnN)7+so3~0tBjj#-npg0Wg%>Tp>9twR4xp+8_A3A;$$kx+ zlL(o7jObS6QUmkx`~vT}-|WYqn0;*l=_tVh8_q^FULKgXsXVW74ap3i)p8tP4MVN+ zD{jjsffibIajcPE3D3l!mqgyQP^AEN{pCB5^`whJaTHp+SJyuN=oaVo^o+}bq|d#OX9a5* zh|SR$>$^*zxJWNa@FOq&U&y4P(X9WeL?mxz{Hs&XnW@3qj}o0P-K!I!^UmhkH;t%g zuS)bFkyrkw*v7$P_4-}q)ic-7Yzxn*Uh2VGZG1&l9DAc@lom*C&voP+jChA6lRx^%MB4P$aGgkjck9$}H}F9p;|EI;iYO-6wk z8xA=#&ouv-Fe<){;#%KG0BDB8w)aJyBUe~(-VgBHeqH4Tt4N6<9gaR9|4rgXt_V z+ntEm9ZTvsg@u*AR~60f$2O{v;p}-&ArZ_ubIa~R;j~Y#J!7HknXA7bmOBe?SDHoK z%s}STMAyL$<&~fq!Z9b=iuT*>zMT0zALigXTD;Ae z^1*Md&anlCxa%^q7IBTn$rr-S0e?>m4rj86H&y*J#ALUvso^1G6qtxBFYD++Pnr3e z<4w~ggOI5roAaX~Ime**ehE?Mjv`=oJ917?eSN#%)z)gHA4)||EE$2Y*dQ>aT(Yqs z>4EDG7HG(NHrC_EDW+1$zG~dA`wh}eB$|Y8W#55f!x9h?zA({>Lasd4?Ix@jsLBK8 zrF9i1KD3xK?iY}s=B4bw6qx4ou>!fL0qT1VeI7brgia~I$tV4UdMi&@Rf&upZhZ5V z71x+HoVgSHB(tMYuXQ!|2V61lHQ4xGU#eUol1&FC1s(Ig{b7mk%2 zB#BxjOO^KS{X%WA{s^5CF}DU3%NEs%aRSTf8fGLYLtQ3T91Xl{An=RpapWBOdPLt7 z$2iT`4Xl%8*lTu&x^URj6dvUV?c9$is93^VWUw*?Nf zTVZ7>=|*}xJo?G;o;E1(4wHWJv|={PA6 z+lTE;v7=F9F#M_2kwY>^2}Yc@wPtrXEfi(Nv7#nz^74fSYDyecGHawx@SydvYOWHp-u zzLaB%jckr92wE8l9cWJBeN;If`s&CkrtV~T$%{jp%mb<`BU1VcIe~+XQLZBAa)Q@R z9HhRg{5vA)@9y#|Z}wTOKP$!m0^)JvQckqL*4Fg?vZr<&FH1J(znVv?YYMIepb{?b zn}4>{WBzkCHP={s@6mhXOKN(8*oouwp*RDP+1po|?7>JXp0_v@e>E~@yZXcoIpwf- zQS$`J@BM))|AyeEvR!EIvSIE6MELWq$ez>>n6bP;yH|nH8_V|5JS+!d4A9@Nn`ZH~ z_(3i$npxQ%*-7g~X1Jmzs$M=8<}E0`{f6sT61jaFG4~^3ioV^q`oYb5kEvm}{V8rI z7df@k^D!Re#EajLXU06TCE0UY+uGDh{Ywl5>L~cHA5DM8g34$f^#`Yy?`oD&r#-Ir Jcj17ue*hgMsmK5T diff --git a/tests/images/test_400,300_bitmex BTC 1h defaults.png b/tests/images/test_400,300_bitmex BTC 1h defaults.png index 9ea315ce48b5635083565d6673110aca8ccbe0fe..ca7e928ef2fce61ea08cb9d9ccd687064764af4b 100644 GIT binary patch literal 2930 zcmeHJ`#aRz8lO}egc%IR5wn_9iYZYlr1_f3jHAe|lEpXJZ-rw9JeJaF_x z(;Wl?xt&TP9%1Ib$-A0%2ZvI$8S_ z=I@4t6Z0OBdxA;mI?Y*q?gL36N(YFN*tDs1JMzLadmXB*#AhsJaoS&Pm(kY`&-K=|V1hCq_S_iwV900w+iWH9%~JB8 zc*I;>49s8g^(?s(Cm_TOq-j6l9KQU@)U(Kak0-k=^mIjY;$wgE9x820D+=Ia^q8jPY7D3;J)k8V5K4*C04!WVcKu(z+l7+@l=6%Bx)s?L zjJa1ML<$~>{v7Df&iayP@?5F*Nb0L=Ku)wW-4viGB1Kc8l)ay)_H|=Q(Yts7j=ts~ z@X5ZnEh|SFw=*FP;tJU#Sg6AvJ({Umsv@18194E3!_O2R_k^g|)pJ>wxN*cpQ(rFf$mQoZK74A~XbkK66c z3nJf2izHF8SLN%L$hQkc68G5a%j*X9G?A;4xrJTs8lZq3wML?OC=oGff5L8cXw{CE zNYr{5JUK5D2IqJib#$){HDDv@N$+taoL#P{6?!JQR?6!>5LI+G7lohZ2+(K-(h5iq zjzkA*M6dW{pa7BB57cjs%Ad5zd8rIh%0;zsOi<%w3XxL2334pgaH;Dj@`zC!f#g2= z8MQvTpLR(U5|OIO&B$tN%o~FO%2Lq2O^3m!k9^m*0my;4%i4`+-E%Q*S3bt2?$<43 zmg`gr^FDm06+o+!T=jRE+V9>%CzLciPJ~xUsGMo1awm* zmzM~koL6g&-f3TqS%lp2ewE0+yBjw&IC_ z=o)RfXsrTuT$9zc*i%SeJkL}(+8;A&Sf;};S(;+Etb0fs&cp(2rKQe$Qxrq91PYLJ zN1Nj}$TMqP*`FVe8tXtlW|qR|@NZ5*lOFE$1C-^OR0ze`CoVklLe^}QQ9*+Ncp<#l9}m>WR(k&*^UQkI^4$b_k^P^S0kM`U#2t*Ni1=sFTmG4&u4E5i!h6_(KoM{R5Vn4Nt_z>)fsw zH=iK@8TB=)9!#+cGV2-XdzZd(SGRs#bH{e@tsne1wZAlp|EWBzTz-u7=*eKK-p48? z5}llgD*wYI;qdRH*CG(zzbp~eC+rWFX;&$x;6Joi1P_bJ*kkR1j?y29l}#_cCtT?^ z?5bt;*&Bzoo41?hmta`$BWTRcH2qt)H-`sHS^U$NrNeatr?0%1V^LfaYu(wCdLf@u z1GT!|<;1i)c`pXJolU-ls$}v@4U6Wnnt6r6b@%u9YW;$vWyKvFm3rCw$*XZlK43C2LhlC?SGjP=ym>i_%|`FvWz_coHc(X>N8161-MQYmyI F?srV-*1iA$ literal 2651 zcmeHIi#t^5A0L-B$6y?!p`tl66KbWBvDqz`V=%fPv^HWgS*0FC7sjpPC^qG!T$0gK zNH#lStD(jvO?HaNtleC*t63$C%P7XMv&U}xQ-8y6&-1*`dCup3Ki~6xzn|~>dDFc- z+;j-b2sj*0$DPUW#^F>@Y*+$n7}6bPIF7@q&UCZyei0eexF}FMkMYy-2OJ#(=8k=D6{`O*Vx;@G)x&}y-1DY*cAQ-K z+HSSjFF4aKvNv)xQqe?xmdOcx;i`4w`%~bC>pQy|V{cgGHs0%m1CAZ4zby$93aav( zZaJkHwU@8YeH3#u?Dws!h^6ImW6@V*=WTd_&YB3*`W){L^&L>Sj>U<4>Uni7?0>^D z+#~?D4|=F4c0K--pfN(B^~nc`l`{NK_l_QaT~B}99TebGN&sq%iEx7fl7{^pq%`dx zcpKHAZYDgu)cZbhoM^GuQ!#aKHlmqMW@vv{qX7#K8&m~OinB)H_c?M+e~^Mfj%h}K zo*Kli?r(gSE8*U*6_n6Nk0b=}@DO{Ed-@8RGmtv}6aS^!Vl<2z%|Bf0KSuap7`ny@ z6BCFoT`M_7meAfOB^5%9@%j)G!%5pQPgQKfT;ew;-!J8=15Tm~N8Mmc!hqkkWhx+L zO)>v=eUgmRI;1?a0-}S_`m3P36MdedxlL*EU&dl)Jd%GzHbp{kp@n2Qvvi6RmnxhG z2U=PB6goW{OC=F5KN+uCqjJRQ=SHcaIL_<&6Itq={KoqK7-h#EGUmjXtY*XmIc^p!1-l; zd6O#8Gcx15SuVU16pOkP=Zz7Ycf0@+|S36~&T!?xR%Ed#Z&@@?w{MUH9de^*d8xf9c;&AOH)~c2g zxhzH7F+^8Fk zfCr9O7%&jBWRD=VgK!Qd0D7-BR$4iUN;<1rdi+S@W$kw;Ay=}{@%8lnm)M6Hd_LU? zfLlL<*mtz#dGEP$uu2COR&Pz4uO%VX;mZB#ndr$Xw9EwB7iMU!v}Z9{GY;l7%RP1T z--IGYTS=sFT}1o(F6NNwY<&TB!hCH<>IBHYqq{!D@ATF)}7&!S?516dN=#+w7ucN(y#b%3ZhUD@?ynjkd; zP1*8bl1dvau#S;9SW1FFGLG-isqQ5(?+ME;!$tH4<6?&Rp_~8dDXE!I`Bl?DUUSWg zW_S`kBBRn=J(=R7aZ@Z0H>UQ#O?eP{r%IJv*PBWjHigVHaS)3~vQ9zQO&d;n9knGv ztfRKm*L=`myL+sPzRS%$DR^HEhy_~f?+c!t9J&8nDq4vh4W&z)=kAAhQqd@^>!*dy z+jqAg+l6GPLCKeh@m*ys;W?y%wCHj(+xKiC<~1OnX8nnGE^hZDLtO-2*9ZgjCWt&M z+lKn3x)6H;qwk6;BW(oiGjDSC_4o1hKg_4!LyY?;? z)15!WF-pBAECQ3w4rMp>Ixts)-bO#>prbhp_|H$}c>X3J-OLQJ$pj(T=j$4_hfhww z;H?@gMAUuYsptpaepMK7^Tp;0%ZoY9GYR|`Cddj?+9&sagU~_lXl}}1&fKwpySsQW Jc<|ojzX0;#J&ynY diff --git a/tests/images/test_400,300_bitmex BTC 5m defaults.png b/tests/images/test_400,300_bitmex BTC 5m defaults.png index 0f670008abc57b5cf32fb5b542419ea59e399f02..1ddb281fd8099182d1ebbf5a0ca5c9a2a70cfc4d 100644 GIT binary patch literal 2891 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 HbRh0`lH2h{ literal 2877 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 delta 1779 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 delta 1830 zcmYjRdpMNo8@35ExcG)e)(-O_<=jC;F?>!Vr$Q<@w05Xgw99P5@Hu=Kr+iB&hJ;4j z57l5CvS@e83@eHTnM`HKAqtf-vF&i}AHVmn=e^(Od9VArpXa%o)mzl=nM%XIx;Z)c zU8XOT=S8Ox0NKKhua2>dBSIx?>TR9&LqoDfH_{>pLnDICj|w-uudWNOt#+>woC-+x z`rA!QQUI{im)EqE=+NU#aFXBuPLMa_r~Eb*02x`_K#_}URsVp@Lt7k@D-W^lX*)1D zX)u%;-f%@ad=DtQ2^Ff!?=E~PtqEHzuLzLYE+0>V@Gzj81$T2J|LOU8n1jo5S}qhkhA+eU(*_L3G0XgofHvT3b1$4 zjNIxP!4Kj*|Hdy3F#I!peVL_XyQ6-Wrpvr6M5YzHgalrgW zXm4EkiU&2)HX#Yi4?2!%Xbu3}Jv5QYcC^BH^N7d+edk8hVg$u#BXEF#q z^Ghb{z2|wj&@F_vF`01~^UGb#n9F4K0Y604WywtgR_7Ym7Fc~h!t*SI1z3gkb3OBU z_8i>d09r*c`AL0T)8j;Bh8EWZG{lqHei&D z;+8 zqgJ45E)B6q&1x3s>1D{%Ih&rU6>VX#8Q=E=1Xd(^7a=A?qiO(2>L#eF{adEt;@T zk_zFkDMi^CRLrat^rm=v#Mpc8*m6QfY^^vR?ECg|4N4`~6Sjl6AvRgIYs4*)0ZeO-^UYp;VV@zBL_ z#=Hgu{dAnxmxH#6EkVmEx$gHtL}q8to%;@T%`9H;ky8jkXqD-4>Jqe^HWMRCv^+uo z%lk6xc?Wv%oQ56bls=rJ=}7Y|+SP#eV((k?Vxr2Jyk1Y+FQ4zaz$CQesv~V6;U4gS zy+0dmHr#D{->mJKAKln0YziXn@(^5CGsU#sLW@M>Ge%_6)@IyRRgu*O<$R6xJA8p? z0E4RzrkU0n3d;xQ&z07iW|&xmw_;=Z7!`W-KN{lfvD*pKQElxI1sUWwb6g0@#%;Z)Qtef|A* zLI#_U6!4~pH|PeqD`d*Yxqh?}dyT68C2tMheRIbQ%J_Dlr-vZ9igShdyTFImm9AC9 z_aj1Hs?RhL4@oz#+w(8Uft~F<_Ynac1{>EaS(ppU^em1B#Rd_gw7?Sz*RkW?8a|yJ zQ+Q@Ds}Yrg0{V1ovb3;kmV<$-EGcSCLi~!CDA5AH95`m--444OI|HeJM)E}^5Hohv zvcGUq@azZ{AQeJtDSs=x?gd~5fCXXkzqeD?nMWrF5I1)8p>HL=|Z-M*b zXa7TKsOWfd0(LAmaNCvv0=kdO5x)FZEY5eNn2+gu8X!W+s=DSm>c1jdN5ZSR`f`xA zeG|ndf>B3Ofu3v!eMDR%{eDwrgf0gm*9;i%UzG{xAGvK%fPF^)&A7xbU+dJTpgEea z8FSTzIC&$9h3mk%ex!@e!!3=iCzHMZrwoRE0-fsY5Zd!h;Jz5p^%uw~Rp+0PN`81U zK_zIG34VX`M*T!3FE=1s?CAX8=MI-m60vJaB`Z<9(Oh8 z>ZG@;ugwz37_ck9i8rz@I}82r!jTk}?ZRP*D@=qmUqfS?&e+~w;&G;3=edjS)Rzu4 zQ@9OS>9l>#j6IvUv?#uFAt?qwp&b$nFwO0x{{JMW6J1L7Uj4fdiP?nRoV}bHpfjoe E0y-;5LjV8( diff --git a/tests/images/test_400,300_cryptocom CRO 1d defaults.png b/tests/images/test_400,300_cryptocom CRO 1d defaults.png index fcca5280a620b6b0fab3e23b2b984091343c6f47..9927688fdd201cd8f0d2a368ab0f6bf539d9b94e 100644 GIT binary patch literal 2935 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 S^14b#W?^SXSBENObMim=&Bng~ literal 2819 zcmeHJiBpqV5)UMiFGTc96p1WI9w3w)qTq#yhL2#vAfOQB5^xcRjp*P;Bph~#4QNxpA z`w4s+U;ByYvxiILM_qdY_bSEvm*yPIy+xM`U_TrPr85_!SPHxzHg36w)`oW|VjV{M z0`hOJLg`@+5Cy*wA^FAH*5r~^-N*1 z^xc7*ZAMoc4N}d+W@nAEADEa%d5b=r5_;~h$?2Va^(_;l@t0*K&QzJsltd5x*#rd&0C%p3OL;jS#hHhG5D^P~e_GWFrZ={82TAXFE83!jI(v4lKfW}3#+V=ZFGyUj|M|Y^%cU#FrZ=~<+<~sd6%!P3;nr~mB8yez~AvA-j z^AY`H$n`jgd!WLa*Ts_q4^M88Xh8(-}XC#T!(#2OO;H_{!vJ;0u9+xO^h2K*wR{s}|kF{0V) ziz%w>#y3nPpoKEK?T~+15T>~IMobbJ7MkEAnt|bw#aEp{)4Hw8k;VD0 zp)^D7IU|l#oKTUzIYV7^RM++~4mh~xSNxqG_FMw3;TeG=bW=QVfsGfg2BJ9ovPZ>k zaM{_Y%al->byM(DAb&@Bn08YV1CIE9=y77(_pRdyJt2ZAr}$?y+9`ThxgQDf!uuN+;nVQ%0&A;jnIPj1j|+?CDCH}lBz_F-$tQoOc<*Qhg^>t7cSGI z+7k1sOb8&&*rq8MMCwwjLPFSaDorHVUlo-)xQ$qr{Sm2LMXF`^laYoMFYIQjRZmBV z(g2uR`8==rqlcc?R+bf!A?aoKyBW>bCf*#|W8O6FtCuxcF*=~c3z%@$&;QI2mhV6| zwfGN?Azj^(CQQS5MqFhgx1h_7C1g=*l+MwWQsm`Ux;%<0c(3Qh5BHZiHI|R0z$m09 zUKC}*sWABb>Qa%sCr+80C}p}R=4B#RtjO$BRrKHuk?B++IjjE6G=FpX>S&m^2%_{y z{?IRb2)S0$naV(u3D}`3D+{ z8aN#hQkfwdb1@BCAL)9jPP94QyMCxk+4Ddw+VgtCy2DP_VId@J>cYhFA}iBllfyxL z$!zx8dmHa^8!V^v1)NU15>F!FA&E&PZr|wl3mn~8*hKKcKVOw?q9i{*yUIlezF9rzbanAymLU66{{<^JhwT6W diff --git a/tests/images/test_400,300_cryptocom CRO 1h defaults.png b/tests/images/test_400,300_cryptocom CRO 1h defaults.png index 8f52285a227f7fa43c1328ca4396e2e45bbe6f3e..d3ef52f3f901712ed6524eaf592eff0fe9b74b41 100644 GIT binary patch literal 3115 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 literal 2668 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 diff --git a/tests/images/test_640,448_APPLE 1mo defaults.png b/tests/images/test_640,448_APPLE 1mo defaults.png index a23be7b2dc1dcaf9ed51e3ccc8cfda76c0e1001b..9cc489cdfaa959fe6ccd58862dc237b1e2f17cbb 100644 GIT binary patch literal 3780 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 X-F|KVDLLDyxg$qgSDU=8s7X*cQZT z3s7`;qO9Ri4$(|2&taoL5Jn{iNEkunjv$09WD`eSp7VC!%R(m;zWS=` ztLjreUNm)8162Tky2mDWKLB7100<{4$&m$D%tdlQ>f`CZK_-*Q5ykz-^+yK&&oU6e zcyI*()!iQMF8;9>hdNTCU)U~k_RW;ZUY}b_Y1{Zfk1KgJ(HTi`i`$Wz_~%@;W`R1; z=o&~G7eu68qlV4BzCH8oKrJ<5Zj#NeXB*2BZyT}9oOK*EgtN^}n!}@Fr+VL7-pkR| z`F+yfGz;2zLcw#1$cC`#`aY~@izN0@+IgqKTRl_7ho=MV@1I!7dT3!l&~wLN&nPZPQqf`9L#im?ol2Z&d;YxYbjy>_9gv2r zLR|*TlD)%LTu29Qh}abO%vBXHht()J1!Bc}h4kmq?j0EjztXM6SO!@kHd!E-Bje`R zZy=%`ahD0zOK~4KP=|3XCoA4DqC{z(@7NG>eyJpWJF0ngCncHM(w; z*gl*~pdUFJH8UGIb?v1Ccjb>}c=;L2kc3uziP_T@$<)x;WR8T&Q9!VzT>ssrw@bU< zNHbo{PK@4$LsvmL7en=FhjN(HWp1tr%GE%Q6d4;!LUNC5Gfo8^4oF@+aJR}iWd|KnF=5l6pv=wKRk>J6(CbVFJhm2NJdpxlWslY$BBqn(eYXp+ z=VZeIC_ixA%{(P(4oPpC=lvgx*9Sq;M%ncFhLE*nDE}hx$Tkuc=+7q5kJ;6@VrEt5 zcu>5SXit{CAqD3mlW!6WAnq5=eyN6{?o7bjf?YLOhx09G^X#;!i8Z&BEL!;k-#{|7l8Bj^8^d;jYZD>gbNG6tgVlIRorZ@?< z)Mccn!6gY_J+a22jt9^m5gp{=z=RS4*_h#|Ru?>;Mv6C>?W2D4h|T)kE=P{^KS50Ho>*v z5^V+%dPcN44k8J9uGkt_jf@*WEG>(ZYWf!f%XJVOCn}7p~Y`4BYODbs*?MD0-U(J#h~_=!pr4rK_L= zCU_H}Iu$sKF+&WYXj6PYq3s-~(q@Fi?HjQ?1pSSm`ep}j1>@I1fc!TP@z(65@Gs>| zXwX!hl+gAqc#fbnIM56?LeM-AvlNel+cW+*;C2o1D@U>;aX#;U)n+RFUh2mM!h(a( zVq^e@b4btfU3feYTDCC@P zVJ&Fm3iDz+fdyNm?H2zp5%6I5YUn_G+~yh9!Q0eBnl)p74bg*dlGIG_E82|5tb=en zk1W}p3)VSyXo+@d)M&m`vUKQfGHf7Ax|TsLUf6(P7)>ZNnj2n1$9fNyjLvC`;)vqB zNPa31*5q^qlJS1-MB_}k33OAKE6Sa$tFF(&UhS#tZtGQjhC*CJSm_+fa{h%U+Pq-Lq#alqbp76_=r zz8LM+LCnahpN93CI{T>`i%h?z6H(?pI6<~1=03D7>^^Bi4Sj5ZOnYv?PUspldYa(7 zMOh%m1h2E(j_pzM{MrD@jEKZ~iXw{b-j=-9z4X(h4;yru%)us z&W6^{cxU#lKPE*`Cl*MS4vP6#P0dn-BexT$xM)g+Tc3Y`AhAHRYKMQ+=^ur=z8Bs( zXjQhmy54l#_U&iAtRO3ERhyq$J^Ia4harw*AR9#1(Y?k}x(rli_MTF&`)s1+##2Px z*hQFph0-*|eeEl1qDI5xhfbFZP)G0kyt?I0wLSX#4VjgBf7`-bJRFdb5{LL;X){Ud zUwOdYYuoJhC4Ihg7z!Lb8OW?rK`)#9OjuvI&`1}8fAtHEddi^63bQ`T98_JQ^w{9# Ke$$ol%|8I5>Ukvq diff --git a/tests/images/test_640,448_BTC EXPANDED.png b/tests/images/test_640,448_BTC EXPANDED.png index 30afa8565ba0d3b70a4e6574f4941e02e0877a81..d439e7010f7e9a9bf24e35d12764a2afaa510157 100644 GIT binary patch literal 3757 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 literal 3601 zcmeHJdpwlc8$a*cOwCLe8KF=vjihx+R)|GPZsQs$im|yQx1kuJ@yfciE)~hhWh!kU zBwLIq?`B*4DmD^w8@kwBXIC0yT=qrU_V@e!^ZWa^@8|QL_q^Zdoaa2xbH3+!&RJV) z)72y?5&&Sex!GQO0AK_F2qi4T5PY687XxN&sSYM{b8{Fn|Nis*6M_G;2sqLnGfG_Zy{gcAh>IRd?yvRBi$jKG;0tZPK}!Bt8Vd4qFN2%%Sv*GtdX(L3_`DMW0DVmT z=E+poM*Yos}kpE5{1Zwpf{0-~akG4Z_I_*ttXnzD_riaf%O{sm(r>Qk>Um%qF1 zR(4XyYwVjm;@^ZXwx@-}WD5kdqHij& zR-^ij)h-=u<%xu^W&)?kGDe>UBoXO&dHY6MRNo=UYn;Rz#MI`&R3~w{G^|$)HTE3ZSfi);un>&-2O-@R zJDSa%uB)ICD+#624qwkaItjVv0HUKi@*o>e{+e?QCXa@txKi+&zAcc~KsN*VBXJ8RR6uV|S67XSDt&BuQoI#~;p*F+c%87) znXyL$o4v{0-q@bbbh z1!d`cEKbr|RqFY-af{+^EtIdu|2R8vLPzZcb(@kA6nEbn89Tz9O?$yw)lkA+3lHPg zzfXY-LMs@gO~UKi3AF@U|8go^4FjO7SMw>1x`s+9z{fI7r9%dw64+; z5qXlkT$EezWfWLzj`0}fmtVDu!hVN`^jdpodu}24_A@UT7D%%1>6@t|O}X)8nwWEM z!Fy0uJ||I^@G|h0UGdmOAl)`)O)L%i-?|t#BwMEZwF)P4$h6nay~@zel7H(a`0Xd9 zoHEh7M=ih2AeAb>k)kvL^pLRq=gVL~%=asl`EAEgDLyP$0EFzubK-K+1fJ(q$WJn6 zh&sGV9+iaR)^ZcUp6qqBkPuQSd47IEG32Gq<&AAufR;SAM{>@X{2+|b~_ZY1KB6s@8^`Zoda#>m-9q-#N==EyA~-6kH-S}T`U zNT7#j;le`T!&XS|MDDsFx3qJI4SoRZhXIDLek!PGC=~KFD%)jQGXLt3cENm`-m(St zfveN&t~M|=w$+pmsfu%V!P!b^43XY*2$F{oHnEOu!_P`lRYtVK@++}=7t_J@q|j`jW)%J|4?U# zBogRVL-_T-=79<^?iw5?2QcK&5gcb36d)1iIb= zc5f4{JoZP!yPNhQom!GKZK0|SQtYFFCIOe7ZWn-L!5gEm%@MtP?BipFbTrMWE)RS9 z%Yk6I%OCDt`|$f3$oi>sUG%Y3z_4wIKGr%NEyiV}%Oo5imO3b|xaOF+Oor+FSVNNb z8h6kFG5M`!V>aVUU^P37L|Lu^pB}a0vnW!j$`E%Tig^+NL;Lv>{i0Uo#AsL{m)E0 z#AAkh6vn>NK9$Fg81|gOnO!NmA0?ZX=oC6J;~N8r9}@hg*F_4Z^P>SVeLB6YM>*`7 zn_A2>oEfJe-knmfj3WS${kCGR2mfF0pGG;U+J5ytRqo*p8JVg4xb___zGi*zs_Vo9 z8hzX4<9&o%o|W8vi%14G?t>5OTma{`&#sAMSN!2T+Y=Y_`1Uj?fOlFy8&;88hrtY1T25M~9xXi`9KQ_5f zC8>(gmOf4abYj0;sN%_nnYfH=C-cuQdriq({$vR nYc*2PJg-7}+VN~3o##;pHtzQO-ablcKAPqx)_Y5gX=nZf9t+Ah diff --git a/tests/images/test_640,448_BTC HOLDINGS.png b/tests/images/test_640,448_BTC HOLDINGS.png index 80354e93f081b097829c8df018bd96e5e56e8431..385a70b9de3160e722b2df755a163c19ac17a920 100644 GIT binary patch literal 4211 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 W?v9VXZf>?*LOIwu+m=yiC;koffr-!n diff --git a/tests/images/test_640,448_BTC OVERLAY2.png b/tests/images/test_640,448_BTC OVERLAY2.png index 7f65b6c9c600e48d89267af561d2a5037223a68e..465e49bc2335f238cec19e88fd4b596df8ba9ee9 100644 GIT binary patch literal 4146 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 X7mz)dkl8S?{0edJZl+0r5sUL*4ia?` diff --git a/tests/images/test_640,448_BTC VOLUME OVERLAY2.png b/tests/images/test_640,448_BTC VOLUME OVERLAY2.png index 8700891136d5f5f7b3ff60f53cc0cec743f0518f..be9c5da0b91f578e1386f5b227d5edd2c9112fff 100644 GIT binary patch literal 4862 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 literal 4529 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 diff --git a/tests/images/test_640,448_GBPJPY 3mo defaults with entry.png b/tests/images/test_640,448_GBPJPY 3mo defaults with entry.png index a27f1b84ba95154035f202e78c8331a84d74a882..af3c04ff72848ed54871228a7e2b7e44577cc156 100644 GIT binary patch literal 3896 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 WiVf2<4&_yAobE0x=PPU22mS+4IL|u( diff --git a/tests/images/test_640,448_bitmex BTC 1d defaults.png b/tests/images/test_640,448_bitmex BTC 1d defaults.png index aef50bcbe23b4fbae9a115f1b94417bbe855e5af..6a6addfb81217fb1591f3a301790b430a25bed30 100644 GIT binary patch literal 4228 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 L?>8zmq+I$ZFoOi7 literal 3999 zcmeHKi9c0&8$ahbmvd#gT%|>E$u@&gxY^xom$D=(CAowWURkm)r-n4i-ek)%qg0b} zqlDs~GFd}I*%^_n*~${`z3)+<=55|({(*PS=W{;i_j|VQ^Lw7(=XsvUg^;f}fD_pJEbL6UTrN&od;fm^j==v}1P(Bs<^zC$qq*^J zyWp$u`r-n|wM9*As<}}g-nEfr>aQfPK7p%Of8{&Vh5o{>ur2N@flZvco`((#x##Lt)gd@EOt+n@ zU7XrwDi&{pkoKFO%1WIez!%om^%MD%uI)0Qix~95W2L6ycz)pRl8(~e_a?(7K05@! zOd~XjpUm)!?W%9-hyetpX=X7*CUK2U@(`x<6GRDk=QC zC>Y~|+lP_lA=lQ%mSa7U^?hTNq&y;wC_>R;v}gG3eC)|<&lo{lj+pMiEXfElW`0(gQ=5$>0WxsAo5579yRJTq0l6ss_=u$r0LXV zpFdLqZIBnS%s4|-KiUyb31#wUQl7B0cnlEnAIe@fRLPjgYznR9oH9QcO7_B4v-ZWM zQ0chxk<0hXW!WQ1KokE19Mt+I4jN^M%Po^n;c~hAa0pKH5gbDPB@SWm(}oy;P5j@Y zOGhtPvQRvKbbZ{J>X~u{Z!nUSclgT=-gv&ngo3GttU+lsfGCl1QAUay$%2#-d#R+8^Lcf~BOI^_bp;&%keqv(u&V(s`HC+fxH*+Yo zwuX^Dmt=%=Tx7ry-Q49jsken|gl>!h46;ah2fkdT24{3Eu`I1n3HmV7RY8R>h%AYd z_Ol2I_6>W`XU%pTH9Sb4@~>!#8uaD>$MI|Y`AX2^TIbq|IQa)j3=3~?>hWTjhX#@4 z^8_l4r=thY2r+%*@$EyxQelpVtuPY=GY>dk_R0|Ev9R4J#)vr4jmN+nRPk^h2hzqp z$7z->1PJe|%6bhK1sO3(_mm7)=#qat|_co*4s z7C7_|$g8X58%RA4sJ)d)N56$6Vu39rhLblddoRA5j03DIl(B}JCY$CZxyM|zX*xym zVhFS7JW!HxI4mMk2b%O;20Df)ZWC!&mD?`^E5GojKTih8aHq}u6MJ_e)4q5+HdtJ6 z{F%srIo!Dmi!WlEk*6dPzZ+Mt1zAk6&nhr3|=`JR_04zh`wpy(Qm z2$(}hw~7pev`i!dAcumz*S5$8xTJv)xO0|gGaTH16+BoKTltF-+IHOxg%wQDG@f4e z_53DM*dL&p-W-*xBC%2Cz{Xfo);2#-=Ar6&iFr{NeH&Zt{FeDh^U#UZC- zLj0$1aqL|vG-c>AU%HnO>NuSMSof=e3zd%|4O~W1z*`!t0*@J@5o-*59VGq@)?nR& z%t$wafhH(bL<-!~w2jf;VgtaMHFba`g_eaR0oMyMRKRZarU2rL0*`{dDAiKU5xVb@ zIi`R6#Dam{kM%oyi0MESwJ9J9Va_RrK$AF6G|#flA`S4)bgzI?w?; zACbH<_~fES9}lds8;wHtF(OX3CVJ}?uamZ1B!T>-0Y0#Q>i6mtJwjR_aA!-`-tlq!!n`UKH~gkf_;CLZNxh8yeUduBMid! zQRY+0LyiVFWU>5Wyx2t6y3XPFShmVoZp z&)&^7LaAE)^Zv*SIb6l6$9RbMPo}0G14P7Man3Bc`!!&wg12+o-EvrtC5`b5ljkKFzAN(rbc>)J zHju#cYU3;(B_EgV*d${VZ$~}x;e~s}x5;I?rQ~=BGcN^3-R8%As5ef%tjlX3c560> z9Y~U&@XJp9L6l)g+-yoK<8?ULuOm_QrIF&TUgmR+g`!_F zfyT{5QdlT&y5ny2 z;PXK%9E|7e^Q`bk(f(BT*D$h>2?ykb%BR`jlq<^eq9WjtGkTb*5l`oVGv#Do?v#_Md-ka)C#r{XDQW%f-7O{hF<9VUt*Dz^RK5GF(!uEbmcmEn06W zw!h7YFa)kx+*A0xb-!q?t?{heVu$&S0{bjQxv`gGo@&pwXJ`JEjejY1;>Z8`{)-I2*gBAdDyd>uC;WZYA7I zNS&46mJ`Vd)aXm4#4bY}_?1pxab_WBt1?Gl!m zrpszkSW<48|7ypN$It&`Yt-oKFkTO1QdmDHv3JJ|I(Hd#d9Tht5B%U#6q?Yd&Uq_r z*{dH}ya`l+gIAX7-P_P@d`d4T*&Q} zd{Cy;SU1L^cZaoa**1_i8_T!kwpw{&&8dfG_6-X?WFAj zX4Xim1@tU+eQ$-r!HY}3@#y}Xb$9t}PDHp2a=Lw1aFlHq78uaidC3O?n|1a7;;)I( Z67{gaVj@s?mTyhU+{DWGt|8;xKLI;HcoqNv diff --git a/tests/images/test_640,448_bitmex BTC 1h defaults.png b/tests/images/test_640,448_bitmex BTC 1h defaults.png index ce6f08d418835da8b8d34df0f3c997131897e3b5..c31bc60cbefb0e90ed0ee5730ea3b63bd88156af 100644 GIT binary patch literal 4071 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 TyxQ}SJZ`O@d{=D9`?po)3`|NK|=k9ZE z{B~!1WwJII0HEx!b<<7&PzV5mDahdn@y0R{4$N$K+O>Ihb{0ou@88eg8TdcTz?bZw zZvdb~cG$FGSHz`3VQlCdfjVPH)ojcdH{XGA&vfyz+ZXPH<*a4qT|4npfl9zWf$+B! zbsw62ANIbZsn=ko2BN;ae{jK7rM}KwP$4mo|IWr4>*%;ik=jEYN2nyq7KlHdTTI-l zi7u_`Ue=tTc7&p5r=fR^u+EiZtW5$?2Meo|22-}o2?F3C7y2rgV zBRP|cCvk*G%irPr;7O}RM^9Vb6L&}%iV=?(B0I0Sz{+iYTOkESb;jd$!@ZgevA7*g z;elwB)^C$s>dXF%34prAtEqrAy!+R1uZ-U&!i0_}Nt8`6zkG$waIL$Y*}DiLPHH}53bVl9GfQ4{Ia?>E3UWYs#tV@~`p>w#jCrru^$$5(QjK&u*a zCvnd9#rvlZ-F-tprv=LTZ*%bA#rPtJuI4@jEby8FP#QOq`Z_~ zkm5z4-EfiflwODhEt#t@Bc$%!Cs7jmES;hk+`NeW{=_X1`S2=Y=0D&JFB1r?ucBS^ ztdT<_J79J2KddNvM0DDJnNE%lI~n-d!x+;OcBJ9lOpY-kEtsp)uo`>Xx@#cZ7fy^N z8)}l7uW9aKXqz{=@`vaigD_9{L>f0oAP|hZze5K$KvZdsKTH@MT7o^Nn>-59Ca@e} zz(q?exO#Nx&31)6d4z0%Ev$$c{xKPSraRWy^09)bvnoA?V2o|gmuD40!OJuwES>nv znQ|MX(L^t3tc#Sl4+*(p?gGaZU%W;Zqirju``p??2(0{nw|I@>sfE1A{YrUURn#UC z_|JdA6>XB~w96TdJf;$doS~*6ZfH!GM!^kToxuEVJ}2ds;_~d31O17ofjJX~EB3DE zXrs417~F7f9mt9DJoNs_DCLfL*Tl>tBu7l7<}#EUSF6ARcGi*Ab#YVGEy? zcN#9niofGkZrcRIEvFJQs`6sy3Y?(ZzoMr=|Gp24tdbq%JY#IS#a47Tlf-zCw3vaM zOkagn+IdGU=QQp)bmB8)fyJm=SrdbKDT7O~PKE98T9y)La+WGi7%XZCp@??K>Y_2{ zW343cqBtz5uPYwVzoH#S=d!6yq~Y%1Ewm-bl>?%2h2dRtx%MzyJ7PUL{jF$3+@oD} zHsNax(GPQmEJj|bx2#I5i2aqfhN{lq^R~d?O0~(1xE7B~HX$QdI$iddkt|l?3sIW} zY|$2PkBvB&;9-?NQ^tH)D>9HIv!k*k*Hj;KRc_mj>k%SyVy#b?79IyKYdCSqO&8RD zxAr^9buH0?|45s-Zn%C**9tSa$0Rm;6@iWjZvrhAK~2myKn*Pu>}N~sRPHPH5BrM= z0v{*%sD?mWhzuR_IryP3sW?nS6odviz!FkkX4o99^eo_^E<^mj2MOlp)m9`u>;gfM z0X)bGoKD{T0A}$9=w^fo3C%nCAiu{6+7Jm5On#Ok;bQPW$%WBd(aY(Q@a4$P7c?x* zJeXMJSPv2qp0?<5(wPuta$e>`)U*BYYaRoUuH4UCChWYx8)*XOIlY>nYC8e7ij%^*{^{WsBt<@l-cCu`G zI^Ekc0w%nZP8DnEV?qg0FcaRtQ#!*%8ZR9^JUfxQ1GcO*m)FAz!wM^cytG$g1M>Bi z8>(YG2Q}HTVD{oDcQR7AE~6(tG;*1+f1-b+uJLVDt{a_P8U;|Bqu`dDr^#D9TgeI* zJ`UNyMcfJMJxxw{$m1*V%`yFZ%%xW5>GE+Sr9o?O&rR$qD(vuz3_Mq!`Wl+{GuXq2~4@xB~T zF~7*K>=y&XHrL#12_{Dxj^y=eBf7>J)Zr^vfycVtu%#-%^byrLvg@uhYOacG0zqdsUD=z3`CuP06GQu2tSJEqM>;|$P zqL1~fvkeg4y+4C|m=hB>u7pI>&tj@-5ywD&Mk@6lND7Gsd=*8D5{F#CXL6%wB#ybl zBljC-9jM2_VR=^j9aDtN88z$@zH-cGnrF_wHS)|BvH5cZ?ZX8jDH&j)`c+`JhBZJ- za)Z_WkFD%sm)nna@*h1hao04z>jrN~xR)2`q$M&{-U=TOXdK87OnOgqoJ6>~4<1>6 zkB8ujAc=PHrLKM7l#j!iCuS}43pz;yzcfIEVY~2+zkc;3rlu6YMl_VaV2EOzP41UX#6w z!-Tt0W5fv5%~lc}V2ymb`KkYT36u@1k_+iJmimmur3}b+Ap>Zl#Q z)T`2F2dMLn1jL8ONLvO5=6XuGXRqla>UYQ1KAUU4@sttcvEiRr$MN$#GqZzP|Ep_d zE_yn#ewx&+_+t9SB)Xb@upB&By==}Hwd?rznSlyZ+X8b zmv;GhXsQ{i0RW)s<>~e{06+);fGCN8D=I}+7%t52^4{w{KR=Hv%J1KwzenKzYy`fc zJtzVI^&u~}&3oeu#`@AvT(<`bPBfSZWt#M{mjG44%$de}S zk?49Ko~L9ehh95BTpt;zjaiVc;JEp_{)CrnVB^N4m9ark@3Idnp2gagI8eRE)pfce zu}bbl_v4Zz(@xDZ^5&L%VGpau(ZdQwT+J!@%$q&7bwPRc&(_cW<~JQ%XMvV&Jcux+ zwXyKyHFRz&b9H#E_{QrH#)G~&t7;R@dTU!2ydjC$_8bBGo5{2EJG`W&`p2fV3Yv8Y zwe$PABsQ;%Yt#M8$ni(QBH8U1726+M#YZ-0>v38pdD4~)c~@E1q)PT430*q#^9%Q; zsbyf52^pQ#P*~8q2t~4q$~f{Bg!hJCdI7AO9bzQ!;96jglm#APM7WFIhvu1 zS|i<&vRpwL5a>{`7_2%Jyaqb@sMfDvmHn2xZ&@0EH+LdNsbi8av^ z10w<;)gAg0+mx2e&|n*2KLUci6N2pYf@C7Jzf=6B^Zr^Nj=^#j@WO(`CLOMdzSp63 zA8z65(sF*JYxO!(gL2;@L zpAswR=w_r+OB=hpQjgXvu5?KEZC040`fztlkaS}iKI11D{=|5BxKzxUKc(1m4!GS~ z0>C*PaWM$TN}Hw*)l!Co4%PG85g<^T_K)G&u^UZH2PO7btskjNG?9oiH;o1v%%l+&8L99H0X6Qg+H)=|E2F z0U;F$S0ie&^C<^G+n&`%*r2Gr_h9WXYPAdLd;)fFA6qO-lxdM0H8Tj76UdV z3vzn{nbwD(It&rNOcdV7Vv46nP;<+{)CM`<@6n zFIN)|Sk~I>kOS}{w>ng20bKsD7g*08x}*81^*ciEB?3|A!dT>t8=AZloiej%K3N7?TuLhRb`tM*6-N7(xZT zf`D|ugf%*6H)c014t?xGDD_x9EqM}8K6MSS%NkgPw%i*$yBMolW{HkCasYXlaL%`3 z(o<|4Y#4n`%K#e_M#=0_Lf?j;1vugW&{mQH6vr(`IVAd%B&4#_4CSmPNisTxY5gR2 z;M$!~Qp;Ot|0y_Mi`~)0AC3|MK6*$I8{PPgTGA1_(FNp{30{dpwJ2BhsX;zvHbA;5q-p%Hpn#wqq2e2 z9gw$U9P)ZD=GrIt$O?%`DKx zMfjsSURZn21ucr-$bJbVg0HqOrp1JF!MW8}LAfY-WJ@vD*W-_HBDnGj>)1kr<=m-Y zB+wk~)1lqVP@XT!t5X0nC;QkR;_s;cxe`h|4h`tpq7+?> zK?WC*B=s2p0glJt7KCb}SE4^Ne5--DXeH7onm*4o#G2|Y53r^v!%%M>qrFBMJ88SX zg_z+J`XKTX6QR1mIsEBVKDdwfb^;eiPRo9o7|ACt-T^lqi7I=>EU}>Wyx`sfc#6{v z_C+j5l{j(g&3Q{|*Y5LOS^6PY$#!tlrt)#WO-3|3s^JThdhtk$mY1oFhS?R z2g7ov#Fu4M7Rj(L$ck8)=%3c;qo?^xW?y|YR-Z|CfrI+^4xfl!4$@06XI~J`t27;% z;rn`zr&r9YUb#2Xw-x!dc#)l~mL{XR9#?xM7g@zWw7l6UPwSZBr!=kr?`F>Na`9F0 zgeujDXHGtLQt9-RQm`?xM~HzH_3nR1*46*z5cbm#9`DWH=W-03LyruxXi1=<>!x}j z!^9{A`7JBcjymMQH@GG(8dC3&J(eF!+Ru;7G|8W@K9e&tXjAo@I$_9Qq~~&o+d$udy!x4} zv4c@_y+L+-_E@>RT;p1BcalOB*t(9)OX#ZOHH0-vM>b?f$IcH~1gb9zD7^^Blbtr5 z5kx7f2NeR>kZ!tSeobDctD0n{pRdVhE-8LIn?+{wM7}o8bF!j6^f%I$(Dum{2Nh{N u*0=ErX|${C){cuA%dz9gdpyh+2iMOj0WWtSxAHBt literal 3643 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 literal 4039 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 literal 3724 zcmeHJX;c(f7JgM!LpLC@g@~*Hnnh4hRFJh53?kT|Y_f%pECvB-lwh+6B^Zr~0)~B) z5RU1nK|o}SEQN+Z1VVtY*$tEuK(tvT(9PD}X(r>0lao0)Ge73fq|T{ZufBWVz4v|Z z)~kEPmFloba;qc&V3Xq^`(psWC;$*f6cZtYQUhEB@LiqV4+@1s5wdarb^XP_{}}@w zw1=etNF8>x-|x;SoEf>0oo~JcJ-Wo#h;ykm&9^_0LRyiVwLa;a)k0aO8pOoZjl5<^ zW=gIR@+$x&GUWg%-4)i!{7;8mx-j6?u~n8abWZ|0102J<)rA7CpB9CyO?eo^#BDcc zfDAGmqyg)&P4BPqV?B=f-5{p(iRqe-A;iWHIP@G2a1rvw_kJ=Up7$=)M=oR8j(;=k}3K^PHB=;`TKUkRdy>I6Q{aKo;R zDI*flfRJ3;)C9Z-R9%%zf%1OT0HU5_gTYaTF` zVv>?xgnYDfo9)pVfG|ioQWZmO97VsiTmBpe6qf$59te|aTixh2Jh;$)17HJF%LM6P zc!ja7O#>qIv^$ux-%nlvARX@7JNw=pC1Qr37tguPmO34B-H> zIVIIp1XNV_VJZG4k-C^T%uWL;M7k{;u8Hx96&C-Y_{zup&mbj-dUJx%sxwZJR$Bwg_oEP!8$Y|q z8Wk2^tBRGQnL(3?c^*h=Ec&3>SkY;#@c~cUZ&-?$1eDE+G4_-QiG=|RTd*;WO2`l{c zyfqOv7vL|o<*=m z!>f5rnA6X@{E#``~@0rROq%KcX2y|mOoa-0768H0F=(H{t0<%+qijHAJ z)1xN`+htAR2EC9Se2(EAL!p%-?h30qqN12O8>ZJc95~41A+YN7E8?;Zx3N$UE27}p>^mDME?>20NM31-y&go&*H(_?sZ;CJ|mDO`ztf6^0aysrt zHBZ^;kKDhGS+lmYKGRepcaIhpD2iJN2}YVT64rWWZbLCM)xg1`D|J086$Hdz7u>M* z@wqW-XBF_WU8ebhFOeQwrfs<{emd$B2w)C13vbq!ZSNKu4qDtzi5%U#LGy0RD8u3U zWDc@yacc)Z-?)3+uvt(i(-g}hZj^v5zHqSp<)GK8m4yi}f_WBr8K&0XVis9&7FllV zsZySDw|t^R^B(sUvEgp%vuQqi_PGzb-Mh=2Fvp#|eD=0KUlXfNlQBfhdvC>5Z^u~i z*J`7SqFavTH>ri`h>p)pK-h9vbhMJOY*1yUfFFX{s(9JVi9B6Vdirk~P@q%~YQNBB zwp`iB#@5^eZJoWpo;D4u9zk8;s~O~F?(W$AXfe{>?6(KI3IY|~mMjQ*F2zm+eXIvr zwnL*vf2i+v2rH%*UIn6mh%UCJbvWjgB1h}zrF%d^0e5pUfu(gR&?R{q8Dl+RK9N2< z34DnrxuO(bT<7~w#UWcb_a^wVw2C_tj1K1Kf}Rq_cICi|FEkn9>Vrg(AJ+LxM{ z!)An%&L#t5F!#uQ{i?`6G|~HgM;7C@{v)s1PE~bB4EurK=@EIbk;~bUN zGX{*$v_(H8rPCvs_$vQLniV9k6FT$Z^i!>i-bnk?H@ZCQMEgjIw{Kegm!045riDT8 zwuP=sT{WhRUrznELWp{rCLAN&_lf_>~w0X91g3T0Bp=7d$Dj0PQ zLB-pNTP;|Za<4H|CRSc7I)3~PcC!RAKXTqI1uopT*iDP%Jt(S^8`dAb;)%kA6>@OH zvO!(qw<*+?sHDwT{B c-+Ufl)ClUe+{CkENo~N62dVaV573f-1uLNETL1t6 diff --git a/tests/images/test_640,448_bitmex ETH 5m defaults.png b/tests/images/test_640,448_bitmex ETH 5m defaults.png index e2f78acb53a92bb38bd3e74f782da87bc2f04882..51287472f0251fcc86842acebef3c59f28189715 100644 GIT binary patch literal 3769 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 literal 3587 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 XpnTuV561c$@?}@2eU4Qh(-Zy$v#rxH diff --git a/tests/images/test_640,448_cryptocom CRO 1d defaults.png b/tests/images/test_640,448_cryptocom CRO 1d defaults.png index d528f9b19ad054f205fb6136adddb5580f82ee01..942a7544888479c3b80b0fe036499c86f3a23602 100644 GIT binary patch literal 4116 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 M>)lqx7W8v}2c@{nvH$=8 literal 3972 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 MmAz%*23pj=0ow*u+yDRo literal 3822 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 Date: Mon, 9 May 2022 23:02:18 +0100 Subject: [PATCH 43/66] even better font for small display --- config/base.mplstyle | 4 ++-- .../test_264,176_APPLE 3mo defaults.png | Bin 1912 -> 1891 bytes tests/images/test_264,176_BTC EXPANDED.png | Bin 2168 -> 2131 bytes tests/images/test_264,176_BTC VOLUME.png | Bin 2293 -> 2281 bytes ...264,176_GBPJPY 3mo defaults with entry.png | Bin 2036 -> 2012 bytes .../test_264,176_bitmex BTC 1d defaults.png | Bin 2335 -> 2333 bytes .../test_264,176_bitmex BTC 1h defaults.png | Bin 2172 -> 2140 bytes .../test_264,176_bitmex ETH 1d defaults.png | Bin 2290 -> 2288 bytes .../test_264,176_bitmex ETH 1h defaults.png | Bin 2139 -> 2113 bytes .../test_264,176_bitmex ETH 5m defaults.png | Bin 2193 -> 2168 bytes ...test_264,176_cryptocom CRO 1d defaults.png | Bin 2232 -> 2194 bytes ...test_264,176_cryptocom CRO 1h defaults.png | Bin 2233 -> 2202 bytes ...test_264,176_cryptocom CRO 5m defaults.png | Bin 2046 -> 2035 bytes .../test_400,300_APPLE 1mo defaults.png | Bin 2657 -> 2701 bytes .../test_400,300_APPLE 3mo defaults.png | Bin 2631 -> 2561 bytes tests/images/test_400,300_BTC EXPANDED.png | Bin 2891 -> 2833 bytes tests/images/test_400,300_BTC HOLDINGS.png | Bin 2940 -> 3090 bytes tests/images/test_400,300_BTC OVERLAY2.png | Bin 2990 -> 2910 bytes .../test_400,300_BTC VOLUME EXPANDED.png | Bin 3991 -> 3878 bytes .../test_400,300_BTC VOLUME OVERLAY2.png | Bin 3170 -> 3089 bytes tests/images/test_400,300_BTC VOLUME.png | Bin 3159 -> 3025 bytes ...400,300_GBPJPY 3mo defaults with entry.png | Bin 2817 -> 2704 bytes .../test_400,300_bitmex BTC 1d defaults.png | Bin 2912 -> 3057 bytes .../test_400,300_bitmex BTC 1h defaults.png | Bin 2930 -> 2852 bytes .../test_400,300_bitmex BTC 5m defaults.png | Bin 2891 -> 2791 bytes .../test_400,300_bitmex ETH 1d defaults.png | Bin 2952 -> 3077 bytes .../test_400,300_bitmex ETH 1h defaults.png | Bin 2892 -> 2811 bytes .../test_400,300_bitmex ETH 5m defaults.png | Bin 2869 -> 2797 bytes ...test_400,300_cryptocom CRO 1d defaults.png | Bin 2935 -> 3053 bytes ...test_400,300_cryptocom CRO 1h defaults.png | Bin 3115 -> 2903 bytes ...test_400,300_cryptocom CRO 5m defaults.png | Bin 2724 -> 2660 bytes tests/images/test_640,448_BTC OVERLAY2.png | Bin 4146 -> 4117 bytes .../test_640,448_BTC VOLUME EXPANDED.png | Bin 6020 -> 5983 bytes tests/images/test_640,448_BTC VOLUME.png | Bin 4770 -> 4721 bytes ...640,448_GBPJPY 3mo defaults with entry.png | Bin 3896 -> 3857 bytes .../test_640,448_bitmex BTC 1d defaults.png | Bin 4228 -> 4172 bytes .../test_640,448_bitmex BTC 1h defaults.png | Bin 4071 -> 4036 bytes .../test_640,448_bitmex BTC 5m defaults.png | Bin 3877 -> 3832 bytes .../test_640,448_bitmex ETH 1d defaults.png | Bin 4186 -> 4130 bytes .../test_640,448_bitmex ETH 1h defaults.png | Bin 3833 -> 3819 bytes .../test_640,448_bitmex ETH 5m defaults.png | Bin 3769 -> 3739 bytes ...test_640,448_cryptocom CRO 1d defaults.png | Bin 4116 -> 4104 bytes ...test_640,448_cryptocom CRO 1h defaults.png | Bin 3999 -> 3930 bytes ...test_640,448_cryptocom CRO 5m defaults.png | Bin 3539 -> 3702 bytes tests/test_chart_rendering.py | 9 ++++----- 45 files changed, 6 insertions(+), 7 deletions(-) diff --git a/config/base.mplstyle b/config/base.mplstyle index 449136ae..b18432b9 100644 --- a/config/base.mplstyle +++ b/config/base.mplstyle @@ -40,8 +40,8 @@ ytick.color: red xtick.labelcolor: black ytick.labelcolor: black -xtick.labelsize: 10 -ytick.labelsize: 10 +xtick.labelsize: 11 +ytick.labelsize: 11 xtick.alignment: left ytick.alignment: bottom diff --git a/tests/images/test_264,176_APPLE 3mo defaults.png b/tests/images/test_264,176_APPLE 3mo defaults.png index 4eb122a4145ed5973f3e12387acfe4c3bc673cc7..cd33c08e84279f985b94a1190c5fd35700734482 100644 GIT binary patch delta 1092 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 diff --git a/tests/images/test_264,176_BTC EXPANDED.png b/tests/images/test_264,176_BTC EXPANDED.png index 380f2ceeb71a4ab709ef3f2b17ecac4701941008..d4ae60cced83d164a3eb473e8a2197f8700b53ed 100644 GIT binary patch delta 1101 zcmV-T1hV`15YrH_EdzfMNklITvt`-RypA*~ z$U5gCqThD;`#Q9UpehkdG~RGx=5ODdCK=ane02BlnFuYSsvso($|}KI$^D!suwEs zN8Vh=Xpdf%En*Wfr-x+k;3*g351;fA(M$3Zawg(PjfnLgy>@1&FYA+(B0{6GMNAAt zFe5~mnBadwi(o26C_n@Q5scwyP>5h65x21`LVwDr!n%lNcf1h6Km-F33`8&x!Pp(k zZY;vL1&ClEf`JIevWTXrBG$oMSF?hrFGEGhg)7d@HJCk81ckLbH7j`fGE_v|AI&w- z^GqKx%YPatN;y`I3h;|b^jRo6n5j}rIG#;%?7_LPV!-8zN*5^QQ|D zGC7EdMf3q8WDXr-HWMMSQ)XibyoSc_z>@7l${7fri9lUk%3Z4!k!egDAP=vOE=WBl=C~gt!fd*U`@hI!hflJbG1&=Wi zp^s?2g2$YQUdShTh=>(z0d67@a)PH@1{Oqg2O=1VU?74i5;4QeguQ_XMir5GksBhu zCn5?t>_Y@Z#QU!np;rCU|-c6B!W^^$}*u3_w5P2_6b_;?cef!P{8VKG+9pQGb)o2bL8Bx6u*z TaITGh^A({Ejp# z$T;UAqW|sk=j+fSf~rI;(Rjm&kx!9in*aOWG|9MrUm6J7g+(7msuyE25&DQ# zgsks+C~j2%0PtRDcSA&D!_M`RkN?M;@cHLN(0!&Bv9y4neV~rHJ*0t!l`26hlPtrh1`5f8@<|jP~eN*&;R(b9zYj z4xVxm{_uZE9}&GIKOtu#j?{=)@6l^#cKWhDNhu;UDqFFgoz0rv5BJ`(>Dy)lWcE<}53`8&x!9WB95sclj?8YMaRThZwKm-F3jAao` zQAMnSx2|RdPhWg1Bgh&N5Q-lP3mTf4OQAm9P4~ zNrYUCe);BV9uW)oL~t51p{i0m#8Je(vE+n^f^;Sj5f^jm?jU0Ae|!p>O~I002ovPDHLk FV1j0d4gdfE diff --git a/tests/images/test_264,176_BTC VOLUME.png b/tests/images/test_264,176_BTC VOLUME.png index ceffca394b2ca66dc7ba834bad9db0e46fec879e..deff61840c4bc10002273410127d606dbbfd42ae 100644 GIT binary patch delta 1487 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 e0ssI2cmsbg#}suW0F&qd00005-q?0 delta 1240 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 diff --git a/tests/images/test_264,176_bitmex BTC 1h defaults.png b/tests/images/test_264,176_bitmex BTC 1h defaults.png index e5de2280feb06dd8a94f761d05e4d9f2cd905ec7..cbf341b31dae3fbbd22988d6c7b4ca8fee87dd57 100644 GIT binary patch delta 1345 zcmV-H1-|2O@Hty}#TGu{_zw&4DKkPfkdhsU;GqIzg zg#UxuAhvU|$A$+;EJBtL`R>!L9$X))#zZ(Gf^k4+B90^CHV=QUeSar^6cOBT_cxiC zHvAl6Mace=yny>$_z_{RKq2CtKm-F3%!j%AI&P=J0Qrg0{VdBU;!2tRYHEQ91|k@U zV3ZfZDkhQg`7Y{;pLNk(`F7Y+tw1% zCsJn-m!y0ypLr?LloX1n?Z~`Y?9n0=Rd#P~(@7(_%}My*q3w>Uz6gy7{u6B46N^Z; z0TJ$65+YPrqZT1JTkaZ)kQ5|Qk< zfPl7E(xB%Z1&MuZd5AbHyhI@}c-mqcu3SLTRdDReH< z&76sd(TRVM$?QpQ4gd69kgAKz-tb!kBA6RR%$3D16_H}e5s?BS7~Ll?h_JP^&2>TK zT=cv~MD0smh+rUsfd~d77>HnWiOUy?&?PS4DB=f1FgX!6BV!sYLGDQ9Go>ISLaw|u zX5I`{ZxQ4dA2(cr+=1>QxB+fu-sElfTf@x}Eth{Fcc8zBe1%30SK%%KBA9j}${(>S zlebMoP9b7&d)XlA7oK%7d!FCAz6;Xsq0-0fd4B8qE(k;zhzNo}gpnfJ(M80`NtGh} zlCTGfNPc#&6JeLne%gyDrBnn(KSM-25$3Q~?he!<#Hw(;lIMyD*2KSBMDlX>3k|X0f+Z;_pwzCp}(7Fh?A34IVCaBFbdk{WvLTB7zH-6Omi^`)m;|i|v>8 zttrCo1AsLB5WYPhU@wh#l#}EviMuKh4G|_^Xij} z5Zzf(#L3r>3*)^^gf3n3S`nIf2NB8My3F4kKm?N(5g#gx2N5PMB2M$}2O2L7sin1u zt>R@7<5Sl*BV$gMAP*1`XMBf?P%S}jAcFEQLv9g4;fSyW+ePPVH4~A42QXX&-wuD= zZ0{w=1tNyyv$oWK3G&P$vUC&SGk*~A+jpDkMN}?9&cqBw$iitw^oR)&91|iqCPZ+| zKO&}BArk`;%rFtM_bZA>wgeG!7b4aXk?tr&WLjE5#748s-xwf*87E>Ye4@&-ricqm zkQ+AEEpjy^Mnuo#t!-^ud@{Rl7Mp)t>lV2IVvgv3Ydj2yU?76&k;Q%_Fu*_r0}%{F zFc85&1OpKaL@*G+Km-#f*(>T#SgD{6L>y0@yH5~NQwbu<>p;Zu)VcfAUBnV790CA9 z4)Wjg3HJZhDXikYy;E3CRY`+?PfqbW^V3?zRdm(-yX(@nN|DivMU+$t-oH5(ig3$V zhluDsB4lTZM@0GPD@J$c>gEVVwPAAv0000007&x%ZSWE0SL5Jo00000NkvXXu0mjf DIsRwo delta 1377 zcmV-n1)loc5d09ZEdzf#Nkl#DU49U93%TYbpH559|wXJ;;|Kxk}Z;lOPz4!x#nb^@# z!vDeAAhvU|$A$+;EJBtL`R>!B9$X)q#zZ(Gf^k4sBF-b?F%N&PeSaly6%pKU_ZOL% zHvAl6Mace=Jb~w2_z_{xphCnqfd~d7n2mY*JRYaP0Qrg0y_aPaai^^QY+8W`1|k@U zU@AqVIvsDPI`&^@pOXO*3`8&x!PI@}N_OGw`;$mn%k?W zzK?*-aR0;iTez!*SVS`11R^$L0ujgiE!@>Yy@;xY+b(~NqrSg1{wY&MBGQQ zC%UtQ2Ouqq5e!5y5WzqM zQpoqG}A)J1Ru z+{(PkTlGuB%@IA9AS<9RB443X!%eu8fC#3ai1J(P#^h}mkyD5m++H?F`hjO#OwHqa z*LOks-BkLRn#cF9?}9*tfruaoL>MWeA1Wd)4r&zPmxR4YMDn|Pn+UsncIz*qlu{8C zy@!8@ej?0it=tn-ix8{A>y^A$M6f3Q(;||mbDU`SOOnMzoMyA%Uo1i#REV4*hl&u( z3z;=Vh?TdwR9#9$JXs16epJ6ngimJYv)KQM*y{)pZcnp_f%s&0HjBL<690ZGKIru# zf;r-RY4C7q6HzAP>Dx&`7ZF^zoQT}Q-*v~NujZY#J?2u0*8i83MLwhf55 z4F3ohBFgec5McxPHC*@aC?*!Mm&L!jEsQ5cTvwl5gy_zSA})S@To~_TBI?p5pA}IP z?<6AGTbKEp1BhVKBH~?T@gTyaMZ{^|V@KzOA+7Wlu~)n;Vtne_W@OC86666Q;*5Xq za1m8YkUNN={KJq(L{K;)Y{7og`C8pX` zpZSA`-?n?1UPR*(F(HCu{v%?F6*4gp!3+~2d%vQHWJ?es zHz8sj5$TRXM5d(`MC^3S{EY!3m~nq1rotzxENhCmu>`qeV``C`Au%E}lef0DY4OQy z-7Ge@rWUyaVvbP1G+qWoFc86LWU*ff3@{MEKm-F33`8&x!9WB95e!5y5W&Pr_J;Zs zRw}3i5$8ka?h{0`RDy`|IuLO_bnZT>i&%mRhX4SOgZ%G&g6;q66jpJ+-YHqER#mA6 z|D2rSXXcl+imTLB^UtnJ+bTsyFBVZ!C3yZ?D8emc9U?+|M99t*kBIWoS4`cNTQ^5k jR2w!&000000Dv@qDX0=ZjqUpi00000NkvXXu0mjf4yA+Y diff --git a/tests/images/test_264,176_bitmex ETH 1d defaults.png b/tests/images/test_264,176_bitmex ETH 1d defaults.png index 844e66bafb0539c720404f4356796c989b6cb432..ecb9211518750262665f9f04fba7a445c2691bcf 100644 GIT binary patch delta 1494 zcmV;{1u6RS5%3YPEdzh9Nkli*|z`42Hq?f9RcQ2m!ehZZ-eeTBU}-C!j>S zDJ9xjTI=Um{r~(Yz^3^?nN*FRqOJ?yuKVTwIa5$Q1YtJG4jct=2nndSslI(VQKoMC zIs2x@N@@K9K~tUmOIZ4pj8&?ylAqAlVwDP@0NNtdH87q%#^2?cG^ z?AbDh*>QsyU$!w^HG_o7#X7=lkL_AbBK`2*CB(l4!Zbj-q4ZQ* z%r^H~N*AcM9^KjwL~RAQBp^TnA|O*}zp}BkkZmg85(x;9fB*>y&{7bgLD1h$eIBdm zaf79R00{_?fbf6BIapQz@S|SqwFbn7@rWfLv=b%#G6=1=2-Rt#Pl@ps|2x|hO~%6CR<#wjK+b;ITQk&u7@2?$VU%<_jo^qC6?5RIpYa{nTTVD16}au*Pgdo74{*aQTRX8{2c5Fh~o z;sZgS3ax+8jvxlZaN>2C`auv%nJ-|o$0MSmATpjNg1{ER9jc29K$I*KnEJqUP^d1h zS`bs73Yn%bAXFDs4~WTYvIGQZGKjdlIDExA$ng#-6miFT62LuQRr)f_B z0Y;UTYLWF}i|5aJv=c_7$O`j63q*YSM?lbu6-`UxAbj`nEPe-szZ<`?4Q8<$2zz`l zi1>ami`_xg<{#K?15x3=Tt5S%x7CC|km`T#2*R8pH+2jM+z;Oaw}Yts_&H`@5N-K4 zeEb|EAmErBh~itb#*)kcQIy4H?_ln7@qjSXaN{L$q}mSzoxu0E2=X6Iav-X&625pr z*a#sDUoTt+B75@Up}Ha37liMnvy>C^e}RBR0RexB z%pfpSH%6;KRA2FDO!Yfuf~D8jL6~4^2n05h;O%FvliejCK(!$7KD^e+?h+87I0!GM zNS;jnB#3`So`|?pApzkWBp?KYdys(0gV4CDj{A@HO;ZI3vJNF6ZQeBOO^QcwsTM?J z_NkFWW>wv`ss<61cHg)7M&95gJ@l0Wl|gMhOUzfB*>ykbnRQh&d7vAOQjTAP6ULiK!n1 zp_Kjd=Xrq{PGO5UF=ojqO}5U9SuzR+heKnQ!zCa<0s?eS%yO`V07yW9uHb)Wll_K9 z6*dCmedykG5)eH`0;1kVK)es#yH3MFd_oNjMIw%zW?eZ(g*Ebx z;tP#CWtXMefPaZ2t?X$nuN6))Dn7NIr^518i}VV+j6XL>XlyrjE8jJIqoS_i8fot@ wf{aqVho&;kGip=IX#A5PL?V$$B>K4i0IMq%NMuo+F8}}l07*qoM6N<$g8A>EQvd(} delta 1496 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 D$q;5< diff --git a/tests/images/test_264,176_bitmex ETH 5m defaults.png b/tests/images/test_264,176_bitmex ETH 5m defaults.png index e1bc40c6931da4d6f4ca08e8eadd49e260eef4f1..0142489741fc920a50ca8d0f48b5e7a595816090 100644 GIT binary patch delta 1373 zcmV-j1)}_WEdzfxNklsC#S5op#y z!oytW2+8o?#~1(k>#ZZQ!>gB7#GEd+7J(NJ6?5WUXawt#49x z5fvx`Py|?jbsXl<0H6p!5r859MF5Hb6agp#Pz0a|KoNi<07ZWQiU1S=C<4qSLT~Um zpKNN_i7+ZTZt%#~hGjTbC94gdu(WR)j#T&aiL&(XZoHH3&qZRjW}J6#nKY84?*>Rst@ zmvil7J@D!73Szs%RSmdxoc?6M1@)IJ~%S$5kdy2S61j;b@?x2Xg_zj8x6al(LU~+wf z2np$*iO5D>6d{?khNR|S@6jn@yB|rWe2a)$rp1r$6>)9XX9yAMlb1#K!clu6I->>=VIUF*X5s&;oQ_bo zuj^$WmKxn}wdGZda6yAK{(XyRx-pU^o*FhSLN)HVn4R?zN`*=v+mBOY{+39~BI1{n zm*tQ*L>NI4pijiLS-ABEre~#Tz2LqW7FW-;!@0?U{&b;8lK6#G;ez z1N~Nny32HQ`y``__+n*HGHrn(3LI7F=v;rLlBapN??p%yGA`UDnn8rqWBp`CFq??| z5fk?$ zxCBK=)=O=R;)D=%CHTYZO481wl|Dhn)NAU_$ah)mIQo;nEFyWzU}_N`C<5$6Y^i@6 zBRr2&NUu2=ZyW>_~)HR zdy?`85rO}bKQHpMh~~S@TEsmg$zrA(eInGYF{=o3C<0J~h9Uq(fJ@QJU_P#B2j&tX z={6z7<@_HLagCOpt|>$~+3Av-WMzLY5kB4Nn)uc@h9Uq(fb6GC^FjlFA^=4IiU1S= zC<0Ifpa?(_fFb}z0Ez$<0hZ$7rSt

PSNo`%A~J6GeQJh$8yaP{jVyvFr4>h$*<> zkPt$Sh))e<$E}GxoC6QIDyn1=Y zgs%Jr5%N@0vj|DsEJ8Kd7eria5w0uIR!;h~MoUSB=b!H8hCZSz(RSFFB=!-p?LF2< f5JCtcgpe|SKJXQcjLtJk00000NkvXXu0mjfg;06W delta 1398 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 FV1k-*VtW7p delta 1438 zcmV;P1!4M<5x5bsEdzgcNkliI$`w3`L3m|IyQ*xb=vh9F9K4hy^qzQ2X2!5R88jZtU<2u;xC;A2l1q zwo(u%1%Xl!s0APZl{*iCYR=_+xKWwLWYp(C7(S6nX z5GDD2DF~E;Kq-F+)CLb-vHjd27%OYz!4hi`DPKWQ$}$kwDcX?6f{0Gu7xxI59HB~s zSSlNgm=~ClfjA})*MOV#AkGulFK+1gFf3_Ut$>XY>p+}6;4s*J|M>8eCTj_Z!x#_5 zb$s|qleO;BxO~&4!FN}H7!{#P4wjqUMy%%dh*1uI)YpIJ5lJZsl!8Dh2$X_A?FeEC zyL~}a1XX%SL3mCFXjc&4)920U5Qlq$cv6IFG>Efqs{=C<4F|D9gsNoqe>0&+nAH)g zqSgP6-Zie)qtT~9aHG`wp+TA-p-LL~Ms~M*#S+@4M_`;?LEu|S^C}QQFPGUk5bUm@ zAW#Yd^>Kd?B=>@Jyhiv4Zvb+mH-g}kM7dF@>jn7>L4@w;_`M*`(la1}JLN18Gb2=S z5aF}KA`mkpRFxor2G^*%gWwCPhQ=eBK%^hLNA`$sgP0bf5`mzHs>vWyUIvue1|nU> zcYz3Jn%jXG5TSY|hyi6P2$X_Al|Xn;r=JHwp*Vj9p&%55f{1{?bOnLw3WB-Ma_AqS zvH=j^OGh84AG0|Kf5ptW2vrk^yas@n5TSYm2**M}nBfts{XwL>bSnulLj;7Q^Dz)~ z7Z?K~f0JoczX%lr;gxQBf}ks}cP|;zBdGKs{*Zb1nN}1;@9^S05b@=L3ZlZjf}lcN zRt0}y?AyWZK_uR3yYDf6(`x}yyB0^L&LHCDr$I>cAP{)v=0P+|LD(V|f~fTIBoHn* zC5lk(2O<*xZtM}>pSdYTs2&JHTxI;5N3y`oRv_%sx-kCT4uWlZfuPC5gFw(2F#<%Q zwLL(b<#Yp)a!_$LBF10|2zm-p5WPSI5vqU7QL@x9yut>Cr-KNNB_KGrwID(ozc}y@ z&#|BPkb8OxM5g=!Ah7jAK)Bfe3%NcQM6FK|2r6_(5bPo$6)Sdgz-)~Ng0-0jj?F+& zXP5#4yj|zi#Sew$|D=f^XrdekaqAJU2Em@}q9AO#-Q5j@{F=QvaC-{kX8LLnP+osS zMLsehjPXvc2H|!&i2OHHj!>0A@JhLp9qx=Gl|ZndMHxgPLd7iotKbnJC{q!HG5H8p z9SB$AECo}uA3%USLS?MeCG2I7>0kjMoOL~E$t zEU-`Dk~LIs7TBnaWa-eGh5bN5@G;`kAQDm#C8C4uu%~Atb4afLHuH*AnI)t#69cYZ5j^Z6KY_nQmIra`R{&&3r`@ly1joxDjJ>3 zqb1dY@Mz3R9x(Lk18D7F-WOo4Y|ZSa#zjeOwm*03d)DqR*>^4FCWD07*qoM6N<$f+hTjLI3~& diff --git a/tests/images/test_264,176_cryptocom CRO 1h defaults.png b/tests/images/test_264,176_cryptocom CRO 1h defaults.png index e90055ce24816518eb6ec9c1a8d648f9803cd833..ac0d14977628eb10a33cc58586f9fa64bde520fd 100644 GIT binary patch delta 1407 zcmV-_1%Udw5tW4vyw!+P zT4SI|MD+ig?26s-|7-tFy|ce*3>_`rxV$q(0&Tra?KZIHhvc!>+mIKQw+jy z+mAQ_!uOp|8d(RO&X;LqPkoXfu6Vrx5uXu8zE`5{X*U{(LQa1O{Ub*w$`LUeUs%M{ zuowZv5CRAmK(GLUH3$e|UA>7C?Wn0D?6Dh(F~zs@aZXbNjAU0HUDQVgZD!8z8uDfEYyp!72sO;V#1? ze81>D;O9s1=z~=qlfrU~_deIgUx!6MISAIbEVJsq1j1W&!K30LL)4_TF2vGlED9AXq;JG45zoI8>2S zpG*%f=7WDAlB)p00tgmBumFMu5Uh3}=yG!)*t2ZiPejO%S%` zdl1f{%6pbS1kuCH(Su0q;`VtLQ~{!+t;MZzHNSrdA{{dih{&N*fjAsmZl()~t#%;d zi>%=pA?jB*MF+w!>Oq_$dxI!xn|U2X)Nz0~f*|vG5VpDEH?M<%5NS4N)^81h4%G<|u^kd>ei4M2Q>6l7 z%QSxgA&>&ZM?l;?tsQT)7a+nhG$3qS+~U}gCz=g}bs@}^RaYl92ys6X8TP8hJwS;6 z9ITp5rdO24RUqW7)qIn)Ad=$grc?BR`(Wb4-XdDncY)Z7LX&VnupS=#^>Kqt^bf^yP>jxqp7!Ls=I8=Ys z*pEm_^{6C4_+eCk5ZxTAlvH*~0f?sR~XWh)*NgmkRs#_nD!aBSh$u&_3?e6hU;zZHi$lc~ z&jq4$&9iXmKE?$I7C^87Vm1K;3m{kk!2$>tK(Lkr;pd3_U^3ar3RazWXRHKXkhiNQ|I>pdgvH)(=5=MU;^( zfNE$N^Z#w!irex3wSC8qYzF}h%fMRv{agLtu-oc%GVaIM9y|rMVRlK8O~}C48+q8U zm`oBx*xuSf3Sy95am^9qbq+9u?nWrm+VVPL7)@_NO%UuLEtFf#># znJI|z^d^X*9P}y>O={rYS-RJkxOnDS-vpOxSDc~@jv%UAh{YG#`-Sb_OgseVTh>^0 z-vAM;I`XJ|dGfP>h9IJs#uFe6T2sH@H$m_#dBVGhp`U*?AZ*zA1yzH<9)492u9u}L zJ0Aj(ZPgjP-@r#fWT#}$?h1khDF|2&gs7u}@S6$(H`fM16;%*^kp?l8!%`^)fyx14 z*h3`+P7A`BGSb`42O+JkSwT=;Or}HiO%UFpDwsNy4dRXI71at3)wZ!P2=7i6SalM_ zUJk@|WHNscaVZGYDdSv1HeznmA`Yt=CCLN97S$jQk-b3_6b)VnLEGj= zTf5snhXqmkXPpp)D>HRwqk&-Etjtt^sK1g=Kp5D8DEvg%(;(O==4&7T-UJ~kJ_Lxf z`4WHiAVhX@D)^z|A?H^>T+XSIAOISHI8?ky4^kxeZA}>0M0>B#jV)xqPaj6H~4%t10jdu4M8+4X<8$KFqEmd%XCzi z?C*gv?1E4b-vF^?d=tds&}Trn)npj||5iw;Al{g5)lJ^7A*P)6j%T6f)(MVk#s;ForHWY}I z1^^-5P6Yw4f@tAT#dC)2OJi?6EZZUyARbmAoO*xAp>nwo2O>CBKr>V~Ee3))RP5JJtAQYg%B`&m zLi7Bn1WG}m6a-2^pcDjZIS^rv z$WxQa1{GO#!JTnh3`FOTJIJ z5Tqc=V-&DYBr5O;zUM0t!|LKO^EDwQfB{0}H@)h{xlXmVO^m@&m6uy+~@!m6~N zZ8P=9&x`0T7q5QQPkX)Fq>5H`A+zmowd3abctutgaBlrR)u txxPTzVWvFf**-$0QmIrbl}Z;C(I0zR6$3Q#e0~4`002ovPDHLkV1jcMb!7km diff --git a/tests/images/test_264,176_cryptocom CRO 5m defaults.png b/tests/images/test_264,176_cryptocom CRO 5m defaults.png index 03f489577aa17e077abd16d588412265a56d891e..6b991dd3684edf390eee6344771c2f8f3cf36aa8 100644 GIT binary patch delta 1239 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 aF77j$FzU%w-%EM86L&d5C6_~iDSrYi8aQ+S literal 2657 zcmeHJX;f3!77ifv21IXwfLJKpKof}w#a1u{fm{M4A~G0Qih>w|lt`E&V3C;wQJ~yq z5gbC%Vuc3*YLLMO#3F`(#i5Kch)|$q2vb^=Vof8`s(pXn|JSqDUT3fG>>qo7d+%?Z z)1G@>HPtt(qfjVK8kORWLMb5%GY3=@NPj4H9)(i=!*dVaSuU3=kXQEa`ImwJGX{JD zn~PDX_l#&1GW`T!T9{Q^OaxUwl*=D+9{i@Xg~%{@zrt_p=~F-jT}OQWt0SnCiF$co zazvFlsjxow!1RDr-K}+ec}^z%Wj&WV5_d0-Q~!y)uyTC(@j*h^Nm2MALgjS}^u4;6 z02R1p|J+opSFpf*4oT+G-GKcrSQ1u6?(>qP6M< z4xWm1lDyzMl$PMXIzlUx)?doC{iMcsD(@SCD#XyySZIhZO)%hQrh--=E+ZBEb{)hp zrmSBB#L}#+g6sKP#T@-%TIv)4+uWE41TaO$FBGp7c z*_QPq;Z1xh;+s7n&9}`hVK_mgxryT=-F}Iz3zY2K$?=Wc8{cbgg*HGrXpaNox?Ci- z#T9@rYNMmFp^pDJl!`Q4r;Q5cYQEGS$9oLg?ToltzEdhaNPW1cQ$)gSubbAxq=D5> zf$I}CUi%H9o_P)z&CQG=Q@fL8=he;ZW#|;p>I|3OH#~}Oy$(#L_RC)xH|uRac}Vqo(c7|8X}(g zcpI)}@tlveJKbi#_Ai649Y^ZcL-kMVDubXXOQV1!J)O~?H-(>|jiyxc%x}66=CzGX zhB;zKk8fi>dD&^f!Q$fQm zi0RoRp8mWVAvQ&pb?keb(hs0}Yll;a4J&KTn-y^Jfye}7(=Q(Ylf1Mq+N;j$M)&57 zB+jG(>ZIAADkZ3(+<5F$Lk*IDjT?w_8HNLZ)m7++XOGGzkrEy=!7u}1`Q#_bHiOa1 za7#ULtl4Is+zXk$e*~KJ!3h1Ds1hD|S8!Bax1J(95GSsU*gLCAq57|~;fYzyVi^j4 z-vNcJWFhTuGE;;7tY*^>&RShMQ=}E`E9by?%uhk_%PJ5%^5yW!Vx%$5v4G1@sPb}_ z9Gm?@BVx&xYM+jjM1JpP1TQH!?3UQw7|4c>!f8K7pwSz&eV`B^7L?9mydJ)#2=KwUk|quVOjvD7}XDK&VT&_2u;-Bjwj{Ma(!F=q^?wJmD-Z&9 z*QW9UPXMFA1F!$%awyF>7l=ZoFsvs($hR}=W-Rk_!V6XV%)^LXtU3XM9X}s%><$rX z=V#yldf~VLik`DBr)%t(D`gAVyY;j1iTTxm_tG1MD`OVR-5Dnc`M;Wk6E&}hWX{V7WUzZ@h!}|o(trCP@em-s1Sj} zZn6F7Bi8<=^Eo+fo=dRS6x(k=oAC#&AImtwHFc^u<&wVhj!O$0@)A~eD}6wKMI8x# ziy9tpleM5i*IZ;W~S8*p2;QUAh+xF)Nn P=~pn#c`v0B4ov$K3>_$< diff --git a/tests/images/test_400,300_APPLE 3mo defaults.png b/tests/images/test_400,300_APPLE 3mo defaults.png index a4e82238f76a1710c628af49c5b70d0c27eeef1f..9806bb23dc1ad7fe0c0fd6459da8acb0d49c0705 100644 GIT binary patch literal 2561 zcmeHIi&Ii*93?9PsrBN6l1RB~+puWm;yWJr}J=@iBqr_CnDXvosbhC)@oKwmb9PneTjaf9L$p@7(z~e!kQh z`gnZ=0x`pbMxi4RlVIJlMNQTrZQ&+;2!!5IEz;A6y4d@ntcFQB}XC@m$iFqd&4O=xOCe*wx(9B^1WhZmtTYHoR|(QJ(+QjRb!_TpkfItUkpR<8Hz1 zYFDj{WD9wQlfvq}yM$dPsx0)|{jLG|{KopdL)F35i$R&vLvSw;Q_*c-0iv*zK_$w} zg%~zVrTN>H2?Eb#$;<7NoEx3nQ-Qe}ewuuNZnLmGv1uhGdC=?6PHGTLRW6zNR^9>9 zRX&^$9MyouJ_tB`x+Wyxz~VnrMmIb&O{do;am28uE<-R4YH()H8f6M4QZgPu`|0_f z)m0J3fq(__>rt#xPE3?1npwc}!F)xDl@`?!O!(x9W@OyUCAgpAdST2q?a4|IeIDhgSioUa6H*bk zVVHN~@Eu6=;K^;70m@X;+4|us{znX^6;O1v|C9~XLGAHzVzYz?kg*1&*90i7y=H&; zUh;}B>M?S3Iw%?I`Af|SnL)G&3_zs|8|OX=k}&-j78tP3m)F8gUsE+MMS_PS>gKbi zPaBQeIQS)GQpFS7{lPX#+vuSAm8!wj=kXIv|J=s}&WyRNzR2EPfQ7qvV}!Z1oEWz7 ztjUX1_}S%=7!|qP9}FnRWWS8qn13CD+WXchce{J|UQevtZ3@cCHIFX~!(y~PrJLt~ zH#cP7-t_ai1@nfpP)yT~UkG3{H>E*?$FaCAltxGw1(isGHQdg#3oBbfxq~$_3`eHH zWTKVtOz`2>+7Wf!3)TKW0M~CPXB8*IPY2AvwRp7prsS*{E7*lS>oIFZojgtVBUrfG zfoJojj`C-@=0kSFF0>C_49nhQmfd<#!(SFwjw>MhFf_;7dgbfQ3T8Xc&x@uuuf~Q7 zNkzVTs3D?NLQctKNC6323~%jp$p>~Ad^7)2z;}3-cQES0;w#K!6@CkGW3$73cq7IC z$LN2jW878zz0THsi_i8(T*E_r(X(kRwnOE`#qC?n1xRX8$#|J7@#55_g@BS&bmX*+ zf4*1oj-ux!M6Rclb~n()I!} z!~vT)Jet92CglkA9ymoNjdWHUqNBx0H1yPm9S+4S_=Wk!h z7e4K#Cle0W1+=&_i`#6Fi})15bXVkG;{i>bZN{4FJvXam{ZGmPoY o`z-ybkkUTZ<6)oBqHRBhaI;hnp{@4BC9?ADuw`p#T5? literal 2631 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 literal 2891 zcmeH}i#ycY8plU&KQn`$%WNWwQ1(`>dR8 zo?8_0T6i1|r$|Mey>U1xwxpXt(vp?_DAETUZrS{{tv)V`i;I$#ul?`#w+H@W9`N1O zbOncl6sXRQJ}E`w^EpXZjnrkYE-qdf8o%Fe;zwT>8a=#kKd z=9N}y`~0I+n|%0tMb0f_0}N*SbFHcNbr?)e$iNa(;CB!er-aZdt9v# zcf1I~zDBWuHsVPOPTlx&B0es5yr&MvvJb)Lu$~;k-<(YxJ^eoav|6gw=@g6zkv;W); zAG9M_8>H5jx9L~}f#4oe=>&+`CpZ$aUf?*N5NKN$Y_IqUE8xh)9%L5`WvkXT=cC); zuH?vLtKcr3lA%Rn31iBJ`Zj>%hz48+{KBd`If+r}D-FA6MiPR%-gkIqL@~dRDtr|& zGHorhDcJDz+{!1);rxyrS12RhXW(C5LBL^#eB!k5s(sN#GZ$1A)-xC}s}zoTfVM7( z%g;qPUbe7avnhD@`KZU@IShUM?#aW|uBcb2vLf~+0%kZ@hV`x)=fX8wNO}DBR;K(B z_76pHo~6^@;8MH4S5v|XUIBokE_tTV`+gt-PBhOV3pY0@j0g#~hm z=RtPx?*wT+U=8a_h%Kt#8>oX#WWuXG2i+=^kfb;J-`pb8fwBb=$yz`~7d7b#G(Hz{v({LyrJIl!&~$C048No#$!87Ba6dTMLSX z=ceND;5^ShQ_53|kfRYDuQ>Vw=^G-OaXkhf_y48x`1NHO&P)?a$ASUL%Yj=<nM3c#yws<6d!E<7(`~W5 zZo9+lYWr<3YGN9tzt>PymrC-G)c>pu z^OjhD;7%LKzO?Q;Veidwq&aqE>A9u)??nlH^bk!W+hCUul)7 GEAwB)8=x)# diff --git a/tests/images/test_400,300_BTC HOLDINGS.png b/tests/images/test_400,300_BTC HOLDINGS.png index 916ad620454c73692398c71bd6b7c163a1adb172..1ce577aa2b127f325ebe3f59f4b7767427aea132 100644 GIT binary patch literal 3090 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 FzXSQ1r#}Dy delta 2154 zcmY+E3p7;w9>?|49+W-fndfXKP7jYE$K%Lj8ySg8NyvMq?upZ&PD1RMJ&afFlvm07 zYBU+r@lMudFoihC<9c*WhCF(RTr`gBobFlo-2Ynt^Bq*NXn?beU?KIPH7k0bBV>Aju0f$AT!4)D?4wkv?xq`_b69xK#pW$AV-~OA_YWu$4<-Bur(fY{;P7qu!@I ztb8r*e|G@BC>G0UlOFuobb8NUs;CCnQx(6cNHYl&UbSbO>_ZmsI4RsD7AsvIX(+}P z_QH|mGaW2Bsp;kcV-A?cZ-wKU@u-^rFdT?fDGI@~R5$4z-hGy|PF7dLW2D`00Dik6 zw;`{%tlTd$i|W5}2}0E-yf~-w;xO$G2WjU1q3g4~Gb!Qt0P`6+=!>!@)PanY>q|iX zi5S)!zg{+7e(9d(TflrPlsZHRJAMBl;3zx07#Qw}Baf@1mLBXwe}^;XAimlkUA#p3 zTfu-7M$gYJxe94WlA}gh4s^lxXsofKD7|D}_=&*PVFn2D+L~8)~f-lvQ%1AW< z$l7|ev5J-tks~8eF&G5d{h|&_y-@gE)1U!&4iP?YgT`LSRcbuL_p+m*&_TETd~v)2 z{0cX0v5zAOEkwC`bp(Q8X=kZ2utm{6(lrOaY&ir{!e!@;a#8+A=Q8v9@?SmKd9I@6 zzQe5d{}{b|8+_wlm)VtnQI~ekLOK+;Jf{d`4^RXrrGHT{($G-XiB8JjPg3rB(@R(P z2B&)80ihG}J?=8InSkSAuabsuq>Q==sH+*XXK}*`+9cKge&rDcgjjj6AlJ3>Pqr>? zvfyA^5^O{L9=P3{{O%y1nD4A??s-dH1Eu}JMEnguvcYv(xz|M2YQZ#x_Vecx!8k1pD5^84c-=4WS1A)*u|Ke@cal@HYCjY{mk<6Uce_GZvo(b+eB>SLl9a1ofg1!%w`uxnPgr9Yw8(k|=a#>|Jinoy}FfER#MwrrctdKP>=l4(W z?MY~0u8GI{!|Sp!Q5aX6|AVw+9C&I8RWmsR@3vv@`QF6i_!>pvn1TjV4lAaql0B2K z=xP*wSW5SBV)ZB50&ukryS&?pCARN4K4pgptN`-caacJ06u_QHKs>jM84yUT$C_Z>g-nDz+e)56}Fhk*CWl`^{vhjpXppXx{v9byY(}`Xd+QTt!F4Cbu9r`aIJG}Q-y7v*o z_?3xKyZl!a9WB_Lm(lF(L=`Bf_7JBx;7%)r98;cJgRNB)}>!qgWpOfaJz1oZ8vZ17q( z3kK24Q*`)TKfTqIQal%IleN_4*`-A5*$Bq zVS>orSy%ePh4%{&Rs}ad{bspGg)6@DD+cdh_BuXlJ92JuO#NxuMMX?PA&ke zuJx5L-PTiZyWMJhv((9KKaimj=PX=x-uZOhL`S3h+@lJ!LT}3&PKmSS$ar|Efu~CPHmw(S4?OiB5*e~uss?yW? diff --git a/tests/images/test_400,300_BTC VOLUME EXPANDED.png b/tests/images/test_400,300_BTC VOLUME EXPANDED.png index 30181a6d412c7281ccc571952d9441c9f19124ac..9f6c3688f784ff0f5ace04fd54d8a7b98aad9d4f 100644 GIT binary patch literal 3878 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 U5%MW)#zIIyS^$AS z2wCFH@CXDKm9sUG+#KYU7v>`Zv19Y(iPPq6Hk*TN?SIxk75G1^fW3QbE&_o}vNSU} z9g_VahbzrT7dV#3W?L-iJBvi)x?tO}aE4Dc{lrtPvVtHfgmLu8-nIPDxCQp|YR;Wk zBUN5Eet+S>VA(FsvGVp^`k)T=?D-tzCt1Fkp5=?aIFJ{#lv1KV($MgF@pGdnQUn{H zlnXR5iqUBrixFw|q#WN0LgY__+W&n-PMaQbfwPrSi*xe~ZH=bzawWH_aWQAAkPQUjbpz?Yf!^Fp`^!=VA3s?z zUK?oiGnV#D_S-Ac1cxbM8MIb6KX+bxITXZIh=6O##3z+#r6JrpVxn#{6xvGJ*hb)m zL~8#Wy38#kp<7mq$TDYqw*3;>9qf!FEM`*&CVXAxnfofCTNZXs;H82p>NI=9Hkc~* zi5E<>Q&BXM!%S6v$p5G#=@INw2|0K^%DCOGu*e1Oo%5ZmWsTg-g6W;lPIax^y)9eP zDNr`5qo|pUr5|xqRgAEYPg-Y1^7%g|CSX#snha|%o!rSb?P9-v0vC?6l5av&qg5_1 z=j5Pc$9dnX5M$4K@y+ZpyBV^quE{iOz7SZ2_?cX$KzPs>A_UKovw-!8l!K@nS`n0?r${GG>P=RR?VDeyo-J;w#0ybWpDy-2 z5~tSE1r(-Db@jPpT`6Kv#NP9i7X!OMMushVS5h~JnSbB(9IVL^v;dlFA*@|!COmOB zQe53NFD9B>g$f-yt9&_$!E0Ck za-BQL57)UA(t)oR{_Zw^8PazP>WBt>EqWFskL-r%t)Q9a_Q6c_TU36wxaW^?;j2`} zWYlI1b)-#c=XhMPX?^-K_t?;vWU;>G$gBSJ7KQkviYG-PWbS@z7m2h+1?GW!hf9Uq zmiMc}vD?jYtR0jlpp^giLM)xDS3vceDSNg#?{|50^QnT57U?o9=t|SEQ zc1Pdm{q_kUn9~o^U`(HrAaoqd3<&GA&$veIpB3@&4CV2{vHuOqUAH=sgcaIC!Z=70 zAk(jaGhMp_h<2!?rOTQ~_jTHTDw1;Unq4-6E|>#kgUeae8Y!s$nFL;aAEYS{wfexR z>hkhTLuVuu=J}9BNq-zDfp`Acw;>03m~@Hv*BjMda?D@11P%EE&x1j~7@!~Ba7Smf zO2Tx!t0L2VRT70dXAkJLKP~*#V$Ot=c6LNg9DgRO!{f5&Ift@6`7TR@n(NSGvgy%!#`k5^4H)!va>Z zh@1zkI~>qS5-1ZF7<7sq!yj+Z(Yn%VQ7_4!)MBbohFo8+GzMuFh=>As9a`y-7=_qo ziMnsyq`;)5&g#g9qV5;n#hm($cpl7iC8*NF1@9NRlk8W}!2@?)bBroBLcw_pr%KEV zalA~>0HdA+=(R}nVdnR8xQUZL$jI(_oUj9=qo z>vDC}<+_>Pxn8OB`Mduk$v5cNI3^>B4thL1ALzc4HW)KB!b*KT$=B)U3G~i)doT1E z`esuE=OMytYiNU^!-%l$$+uf}woByQJ=(@VvFNjuo}@B|1ROlUD$938CU uj?0ZN%_JW>gG`(>pl4}~$_oF_%vHeR)`rYUmWkfXt%#+$jaf0|9`z@$g8Q!k literal 3159 zcmeHJ2~$&977i$w1ke|VEaJjTw1GxIf~bHfJU{|bf*C*rRFtR#wkSqKKt<&Rq7Zq? zCX3pH0J1wl_9ZR|5ztl|89E?$nqM$|t8Ue)?|kRhsk3}_uemro zs9;xNQ7Dv(BiW9ILdhYryAi!ahIIO^{DeZuFSzV>wU%$ zp)e~Q?QC4nr-|-dNzBkuMje$(Gb9HLp4X))`8`+p!)j4;gDJXC|J%J)@;?7A18m*eu?%B?cu#o@)h@IS_%^Q0f z_i^mud@_;(j@Vd~7Duk;Ev66&+-QkSpYGkJV_aLo;-GU|rvxnBnl;u|;F@C{$*=A98b2V+gd*2%LhD}!h6=oLXjhbD zajJ16x6_-^VgAM{!DIhPCmeI;{ejzi+Cw@nI6T~{k|Hs8#~&R z2c^VL|Fbh`S9k?re)bKv;|`@WcSzC%BbVpdR%Hw4ORfUKEylW^8|$)+-rn;j`iLk;pHc<1dE^pjYQhFz@2r`Z}*4!njD+)WDl=sO{;~nmvNW z1c@KMzicYa*1Ot8lQ&yR<#>{B*g*3(xU8B5-N{-}#^|q_c~Iw=)oo931Hh^CWzLI) z**hQmGKV9JBN7n?KvVhJvEAyNw%8&ZNfB-(6uE0Ih5WU)yM_R?KljsQAFF?^82z4D zlTR`HO=3b3Xux=zFS8KySaKKx(3XBb8f9^%OTjWmHqhg}9R)_x?EKz&pS;x+p!cdk zA4+lDmrCb(Vb7kBRZ|@1L8{8MF3Upu0Y?b-}rF?Jl-k2o{T^i3LBt7kCt%L zSX+SCYgR){sNTO8;^j}XJ#RS$D~%F>GYP{zmx7=VS;c*AKD`ZZ;hB}WeareKA`Qbu z#(u%;n=VAUF`3zb4W#_YJ>nc{v_6=Y1kugm3!fV5$`*sBz3l|n-XxwK+Xc^4?7}z> zfOKNagqyAVu~%hAgEkkU@vO5fGD@NxgvH>_G%A2&-QD#t+I(mWc&0;;3eTukLiA%W z*Hx(_d@(&PM0e2hlLmHwv<`jw=iXL(9Ne7lNfwKydYaLWegG%c+<;qn568Jvv0q@Z zH9Q@O<6x6GVK_FrsM%qxjao!X#LI{Qgr)+7+8fISw_UGu0-^lqw!$Sjx^wc?MA<_o$GtnhdY|5wbu)3v{vF-ySC8}S1R=eNO{ zN>PAsA3(B9dmFH=+OSRgA4Bpwbo#asmG?pm8r-EFP~#rxH4~nULTjxKu-Z89)&`-K z2kN5ms)gbqji(*?TY+m)hHw{4Df%=mwp52sdM(6-xmZ4=1s%fZ1!EuQTRCM47^vzT2SZP&{ zYe_rk!1{=TH)l)K`h#s*>ZQzhi&da15$ZYt$A{Ljkm=PRT8o`ui6?{xJU}{^8=sWQ zfvWINCeOy}BdRRAsaUNL+CFtc>ShnJ^HK+adaX`f@X&ft<0+raQrlxAP&fV6j@=$z z0a6nAdfe8OmoI1Qn>YWnwymIfIWO8A|DOK8a1~ZlEdbgFb zrdN+U(P;GMAeG!YxSM+HAf;r{2{O9dx(xH&tk5+q2plQ+T!g-9d~|do7jR4;P*l3< z;FL3!x!?ttM?<6ovyb~S14O&fjclzPi1kzq5>KkQW&()pljtUsg*K{=44 zfaej+_H9u*b?qDTCb^eLC&e1_PltnK|Ls??(TmO_pBpjc>-Q?w7dV88p_q zSD3Fd%t3dL#^(tWBf3L9^J3rjTvE2G@CwmCxH^4jProH)gLgY4tjEjpWSTT}Bwcsf zz<8H;>wq6~JS>2?FId!Sp3mkW;`6zErB)gRZMkY|^2Ha92G!|7;nk;?x1oj8-mRW_ zH@0U~WF#aJbDuFB4c(r+FLhsMB4jui6fx&Ma`9C2v~wrq{`B>GM3SOF{w|om=Pdb) N!_nT^t`PFM`a7NXM|=PP diff --git a/tests/images/test_400,300_GBPJPY 3mo defaults with entry.png b/tests/images/test_400,300_GBPJPY 3mo defaults with entry.png index b4fce6b4b7880cec69083f3c6e79e62271346142..8978d3007f0aa3e231d22125a8e6c659580f0ba6 100644 GIT binary patch literal 2704 zcmeHJ`#Y3rA0J^oC_u(fUPzwqvTUH32F`@Zh)=kWc0uRHO$qpghO z9!U%aBXf*GreQE5sBr57qQc0t0Hs9?X4kvp_Ab@}fj}79-hZ#Z75G0>;N+>+Vhl#Y z@fg|CC9+_?;A%!W9u)T#2#UFf49$)zD@|E6&UtzhWZS}G&e?hF#;ELBKf}5c8lB&K zYph>?bhs1OY95;V#FdoItWt;twSVg)Jqo^e;pNtHy>SR#hu2$LP2t(k#GzWAspxb} zQr4JO$puQ?wU$sxsvtn4%6|w;-(aVOJC=(=%o54**FH48NAk246WFe);`XA`zCKpr zOQIMQ)d)Q8*}G7^+2GW(_=vxHDAl*;8-2#eS&}xVWq(AVB>;ab2De*qQ~;bPbOujO zc4Vn6JdW|KF%DATRwefBML4mbAxQXa=aRZp^b6WRZAHM?+0lJ?vh*K^{pl^l!Efpi zus`jei#J#-3ihW-_i1x&9;tCbp?)AX`k`hC2`KYiS4{?a`c#bn0pQhxypG0PN}=z? zY}A+r_v-1{nm5*dxdUReBJAZJNc+i7MgsiXfrhxLth#}Lk5C+$+0ICT4-9!9T1p%mdNPK}w;#E7-0N5%6m&7Z%`6QqHXeh`VKvw>q#R`11}1kl z(*ao4TQPFz`HkkZsFdfXJ!Zn&0U*u6v8%r}2`FoG4Zew9a$>3^%^CMHk!&bwbh z%|6KbUi&x?3{3oJg%FluI(nF_DFhe>dHEq>B0CP*=UPd~J#hn^5&ipEWJ4B0iT&V2Xh;Qm_I>Cv!?#nnL1?#MG=e7bhQ+FDI>={?-MS zs)-1 z9vumLu~KoF3nrjO_qo2Kt`M2Zi5~r(AKs+9Vq@2}eE2ec(tcU*DU;t@qnqtT?1%so z>##`9V)Pi0_$Dy{K?_$$;LR=E@&t;OMt*zu2}=RW)p(0zRtgyBv)smq*@#1sIu-^A z!ZP5~pg)V<2Bh)tU?8AD72!Y!+vkMbUfHri*7)`Ncrl1+uR~Pp01xd(xTVE(!W*ZcM{ns z(%g(=QT{_ZvWn?HM0#mL$vsyHC4o zF8T#mnp|o!xpjeI4JF#3Zyi;sC290QX{b3rMnIojCCc6L^W((@>f`o zNzE}j5sLfK!%gAmTp&RTv^I6ex%L(j@|rvo4w(+Go3%uEWpWxepuXtO6LfH!(FPNM zz&5n7^F%n~ijnfJ*UI8e?~bgWKS)PztIU;Fm~?Om^%0UmOLH{oYLD6T23w@t%?-^} zM&S&b9R62gfwKZYU$=92ogWJ~d0Q*^i&iB_KWAT+m8SiKP10zBddewMnZZm(cTv#V z#Z3F@U}JVoID_osNKdq76O){^edvN((BI2xun7Bmr8ud~q?~mkQPZ?$>{c0r(7ODq z$iU!t1ynegd$3*fK628(nr?csy<59RJkZ-;ttTYrHkd&vNxNev?Z^_bvT41B`~0$hz_aJNzUN%m_d4e~pYP{$zMt!y z*sSxgTMMh=yQ5g;$i^c)~eVlXQ{?QrvSluD(t%u@V4{$}9+jDg+z z8ZTimtLoWIhG#_1+uY=^;}i{r3sULR+)Wqb?C%xmh$L>O)M`Sz=K{2gO)(oSXY+@i z<=Z^e@oP$7?7TE?1#|sN>5D;uyleMc>;)RJqaoUQZwtvGc0WF@E;eb+cfC#B6K#Zn z7?DV?V65Wf3H@+*$~8f+uxgAqKOMWc_0XGgbkbrrvi}x^nd0e;=$-R?P=RzDJ%#q{ z>TD;y&o5j*#bD(@aH`~#`!|C*hFWE|1O0iv^E{5E!}DrrUj_$^2lbDErXW=jZnhU_ z0(jpiCW)&o$Aa$UwQ;ZeSpax>h)-dvAOhJg#s1j^o=5wmmzFU@De@3-h(c3;v6QOs+^);)EYY$({uH3XB5E1?xU96oQB!B@{fB2{~MsjW=8QStheS9h-=Ii3}0>3qwolndxGQL~2Ou2bUsgZO@y8 z;iMZB;aY^kOfC@nlRRujx4W}mIb73A7;m~*n-;7HH6hPO8svD2F`c+64U*qa~jovV7uNOr0WuR!rkuyGGa=x21EzZ zZV5@cgPL=7a0-kgqp`TIzn&BkEtu6nO-{0M+rVT0ZWdUk;1eYdn$8x^;h;j_ z70}+fOCdziF z>MFQ-&I7u;{HVSIJ?1Jf5Kyg!2%z<}A|eE6IVYf@L%F9I06hG)7b~YlW0MLz96$&& z1a=a`;y^^!^J?958K3p2>m7(^^~wydA8Xf=8JNF>BU5Q^SGZ@*puj9vxf>kEeH`5sYk; zs-jlx!>SE=Q+K+I^l8}7_GGSXaFAm!n(y*PQV`uGSGt*n&M$Yn%mfcxb7Y7?v)}z{ zxqUMLgGmDX9e+_}#VdFJznqD#{;|tP{~#>7v%`)fpI0#WRC^L*e7ZBv`9^=xJR3I& zbVf4-n9h76xkT>t4WABGQn=h5Jo)MBCGtL-s*E+-+7db42IO~NT9)AREiCLjcQyX5 z*H!ePHr{&oUoJh@5phKSIt<2MSt?yCX=@nzdBFCik!IR0<4W5CD?&pBbF*raRpsEe z&3m4cw>){S7Q?F4E&8<0As%nw{O*dx%`pHB)5c{4I+*5&Eu-8k-aC*FPV)AZ`IX(I zOJeo}B$EbvwLXwIt`CH|RfEP7pG+^E!q(8NkzXF|OuY;Y2H_bYGeIJUFrj8ba0VXV-4%jSN*F-oUYj%Z*Msc zH=29Zf)l|pI|Zu#8)h6xjmK!t<-JO+b7eF58ruP^6;*TfVM#t(^zB*ko(pN5a sy^XJDW>Q1xc`&gJ?vnZ7AHON|Sh>xGMm|OZyRw(kY{%`)Qg~ndZ&v?vUH||9 diff --git a/tests/images/test_400,300_bitmex BTC 1d defaults.png b/tests/images/test_400,300_bitmex BTC 1d defaults.png index 98bb71848012b6fe741215b00652f37f95fbe9fb..a7b50904991902a07ad1911b75732b48c02473eb 100644 GIT binary patch literal 3057 zcmeHJi#ya=AGb@rzj6JIaw&?R85Gfut;RBLKO-X|mx^da(@IHUmFu+eo7XHgW~GbV zDzh$ONgVHMD-}6K%Ii)DR_}14lR+8m-HO>RkK(ipnbI=_^BNAhC@E^{l>Jgr zum4K6*2rRCU2wXi=;7|wm8Z+|tDLGJFH5WR(?Qo~ztJXME-MrrFR2?JFAI+n$dc1V zZp0GS++vf&GW_p=nxt17`Nh#^ruQ0Hbfp(fdj&6GYTbEb1`G0aXUZ1S^QxPhXZsP# zv~i7*ucb!kuS&bG!&@su*(8!^9zWB=HG7y|v`jAKUz>cxO;*VKgC4SFgx2(VP-i{NC03iXySQ#J1aIt1)`L8kw_VL-%x&2wt&n{qOzEQ=h0&+ngA4Ez6Wjy{jl-6 zZWR2Gf2ulv|3+pptR+s$5ea;p%)^15^b&l!)k~gK)VgFr+|Vfas=WLv6BEB)T(WTR0ML#%)}+Nx@re` zNEblc+VkY$;A{+B7YCvUPZPAU(+h9?V7g569Wwx}jY83`t~5+)C6?(Y?;7z{RUYgq zs24&&RTk&Idk!YQh=zrqeSN&rIp_U3gMH{NVvy@w=2ZE6T!{MZE%UV8|AfILy#GmK2eg z6CNbCiw)226OFrQ1Bn?#p79G=2XxfwebGPBm?fWDJC2K;q40zXom#{v-1{o-5d3<# z?p|A-<=R_$-jMs1kpChxluX*R{ldvu z*!0Ok__d)N8JVV>r7}SL*sFJoK?{;QsM%)HweZ8;qc~OeeiC2k2E&>_8K}J1{yEoDU!y-t3Fgs7##4^sH3o}F>M}}ti!R@|?sa!#KPdD()XwYA0 z=*Ws)g}2U->XWOsJfrur+ws>Ly%gopopB&efMI3%Muvo>txliwWE3K-#Tw+H$Xl&F z>v3X8Ig_29QOBH2s}M!AnLT7@Qe+@2)7RonGAhtq8LBy;;-;mkO$kdZW?1U6E_C)d z^E{f=Bq8Ucj}570&Mf9`gq8;Rs8J^xGgeqhOC1KP#>u^Hg%5#(Tx*`Lrdp`Vmk_;- zgTjA+jgO1VB4gDrGx^qZb*t^zJmXZ4p&JMic#M>ex58ozt?60Jo9t*e1uF~|8P+>J zPF7Sp1qnMfXhf{`@Tx5fJS&{dci|;>Jz&e&; zzKz~=k>DVYCNw+U~J305^Rs&s}p6opMHZrywU71-0U%OXIg(?T?g8tts? ze*B{;Zr3d(cu$+Mo3DbPdS8rXG2L#52K6Z24s-{nb3Ug%lH|dFI!|07FL~Ih*N`Qc z)8^h3!_P-SfB7|%)|?q6=b$~LDv6v|5En3n!o@-)sDYr0(Eaqe22k@cB?;+YlPE)W zG_yY2g}0~g9f(ee*B;7e7Eh!92wO%$X(5n>Gw>{@08AM@6BYbE&D10BTpWmpL?`cI zSzlHX7hV=ioQ#%JU6SVx3jQ?i& z``oXH;@5-zsRn;4%2)Z2xvV4{6g6$DvKHg>$t`)4jdv+9U4KBt^bMV>(Ym9mtZp;x zs7s;N0|xqoxq#0XuBPtr$t^JHGPLd=`J4hICMax(P)w7{zv;G0{>?b zI2>}n7=;2XsbrT!%pb=2=c|fsLH$9s#;x}fR=&~8rK%+ICY7C2GP1iUhFfEYdRLsE zEcfaAOtD{6W3N;Q74x;M?u&OdepdV2SwTCK`Tlt`Bjb91&RQ2!x)^>uAz+ModxOtN8L%SPHeo5}j-EJhR<}4XTlt+ClY9 z)n10vvB|p3$uu+AOdonv3kShl5Aq_6{i5%^t!k+-9*s7D!f@m@NLF9_fF*^6Kjs)o z-x&DHq}HH)d#Fp+IsmKpL7@3*Q2q(NKac($E9bQ_f)g10y7jIB=~EZGcMq|>%Fl4Z z zVLVwvGWv89xmiAk zofqg!haoEu9HUGJe$yu@yS!S7c6c-$jX`I>smQQH$emFO&w6B9OG{S5*Cd0b#$t$Y zW$A!5;t`r`JaV|eH!Ekuc{fTddPQa)-9$_0xk&Oawl+AJ54A9;8*z&Eo_Z zN&550v0qY5^dSdPP%Y;bI7j0ZN}O7_4cOKx7Yh4Up5|x&_w&~|4MY?`4XVaagRKRa zh;%`RU=)^y8^DcHTY_^5jseC(aS6qoLXMQ^lQswG+z2`I{7=LJP{y_cUS?I36pkrFz znsBRWX571}rs0*GVpq?=W~ImUTo6etB5fu#Zs%6#MJdDKDHtyYufx)B^^mcsa@z1o zIFfc@0qw_qujL9m2DXUD{E5{51~2zjvtU~~q@9zX$*++$3pf6$IP8xQ=r{&2l+M=u zg20v?S^x|7PsCPwMt=+Nkgkjy;}5^@ zY!#eSXK+Fax5h>LxinjN%vkMonV5&i%JR^vkgAP?UasFI&3ZyDacdIVTx5-jS2*}Y zDnw?#g#-E|7~UbC(2&~R*kdhr6waDdqVI7zGEI|a(xJ&d>pj4CD`NiG?lprSZ zdKE10TFE5Em<&+2HrrBRo;G2UB)T)ffoF(;I6T-7OuY`Vkf%TP*vg>$) z#;#lsN_$yNhXlE&9bw8g0PE`0++$;k1RU3gZnm0n?SqR3f%PxWZMkt;ggKiIF;46O zx(>Kgezbtnx=YceTiS1>-oy!fKA?$C%(u2N!pe)wd8g7Q(Q25mQojanfTYz>;4W<< z&*22yB8TrN8QyPe<5enj+sb?&3-D`foW@&68fgBiJ*#Wdex?*6W$A0pdX!s6ddJyvUq zb3#z46yn9Ge}^Rd&$T{Te=h!1%?U-x)JD9=%&A>LLv;7R;)}f|OKoH2|LAtLyfwV! zvDf?>tsbMAm5}f3*rXcRW5eiT6~!%F^l67l=H^dtIbH=BfcV z5kvEs9T_*g>xX0P6;@PR`PZ4_Z5+gzB>41JJgcLB)}~XL<~0+>`l+V+0&PgIWKy&# z{~@O7W|tTiWz()Q)Ax(ZCPnOPchsIuifl!}-SLV3_~C6kY+7`;9PLz0CJx2h^!VPF vRnzJVu1OT1z|V*4+pn7+3w50Z+0B4mtB5mP^?u diff --git a/tests/images/test_400,300_bitmex BTC 1h defaults.png b/tests/images/test_400,300_bitmex BTC 1h defaults.png index ca7e928ef2fce61ea08cb9d9ccd687064764af4b..803ca2cc87cfcee40b635eef6240351530e552b3 100644 GIT binary patch literal 2852 zcmeHJ`Bzid7LE)O60G+k7~nz8jR-{+xqD+b?VGv%di$TjQ$f(@tmEm#0 z3Me40gn}A^q6mt@lLC##VicxA$J_oNw>_ zopZ|D(`^k&heRL{*0?iWdz$8J}dOeRM@?7!Au4E&!l z;J3f6l0Z-yaCdRqom4hjo>Npwg_JkRWDipk6{gf(4-H0Kx_{VU6}Ld=Aycqp9YOHR za!p0mrWV=j*H#WiX5F181A9DT9v=*s&hBv_fc6?&WIUTuJ@VE!$hbH$Ip}qLy-D7= z5=%|w$CCV^dx6Zpm|9cMlf2PKqm234ggb-l&vEs#pjBlVQZVwo*^=FGvbw%|dMXke zJz<=tH;8NMEMBcinvW4{1I7jD;AXDzI0Xm|MaYO|VX-r2vvTQ?b-pA=jQ*Xo5&FfuHtKe9v=PLpo^5Rb%ehv+#z%6kBwpJwUKK>Lgw+ zCC&4SoH1<^Bm|1JO#{QHt$=A*5Yr}pR5Q#zl!N~h1W=T#otVj9m(GM7$Fsfx+o4$V zd`LZu#xB9<4Stq-fUcBX7OZKVURBlnF$(9p!}hI#Sa%s!R0CC{Bnn7iHvQYFi&AoU z%vn4_B6ASb4qKR~g;;$mZx>kR17~MEXI^@VS^slg0Ac~d#Sm2K>aD+^6mgL~qw9Gsl z1^b{!9ciG2%2r(I8;I8VWSY8(*!N2)5Vmr6`U`INJZ_arYTjh?SO&*=c&ck?z0`a+ zyPpA{Hxvz$6J0p(G&vXXD{?U2N6~HLmiDTQA9@Uz+b($dAgBEcwnd|X|1P-9oA7B7 zmk;5oUSsRql>C%Idr}VG-K!<6S~LMsm$Y?|{J00z!WWYkAMCui-fAIh((j`^XUEhI zsXF%^{K%RJV|b?%=7|2|GoVD{#y~U($;*O{5yQ(C%#KXI+x$c=?@s~gdztCuZ?lPM zqFskxqgtV6Tpo-xUs>ntNqS}OuB(LFD4`fpya9B`XK#*tRTIS{x(^_O&(fd3S$Kp8 zS`xO2o6wMjmzQb!-Vfa<(jOfYr>F!A$38b?d(vxViL>PJJLX?vswo_FsqU3_9r>bi zUnZU`E3T`L@TurX-4aaGx70y4o-H;AMB1w@zn((4G`>~pHC&}Y)#z4(>EFDB9%7=+ z&Rc}|6n9oDu8YQ-TlMeM%dv-JRqp;c46BdtTpBD@y*FJeq}qoF-dylP)j9$Md)zjD zsG5)2dl!Ls*Wt5f9hMyF)4d`ZySxaOG7@ZB8#`%@>am_`0E(5%LuH7dTHv6y7Lib0 za(zHog_{%Bx190jJzUtceqb7oHM;}a9!NMNmzRf7u3lqVhA9J(0<0+A>cpF;f{|Jq z>9qpbHxr`AbEI;*V%VsLojiL9`Q>@ScbC)+h?#pUUuN3f!=S#nWI! zNI5m3fz6f*=f3X{VXfIcQ!1Jj%gT-bL#MRHEbjtNEAUDLg>Qc7m$O%*g(U%O6++eAyatS1V2Y%P)KdATr25UHbw_IpBU7BMt(L3yn?M)-Xm)9a;Gl&b% z9>t!_9qYaVs}Ts%3bMxB{(!C)(jm#U!y!vY7@lKw^qC{8O;U4u_@wFa&DN}ngoVXK z{tlbltxv6G4NjB!=|e^;!==WO(zeE|XANfJl+&|)VJ2(_C5-jTxP6S$Sv0ZD^B(S9 zHNuNw)S9VHd^yuG&SXSXSj-cLFMZ=|q4U(L;`r#WxiBQMK2puUYNYPI&ER|99Ob{h bF-PZBS|ppIGr--GA3W}^o-TZ_|M-6ZqeG^K literal 2930 zcmeHJ`#aRz8lO}egc%IR5wn_9iYZYlr1_f3jHAe|lEpXJZ-rw9JeJaF_x z(;Wl?xt&TP9%1Ib$-A0%2ZvI$8S_ z=I@4t6Z0OBdxA;mI?Y*q?gL36N(YFN*tDs1JMzLadmXB*#AhsJaoS&Pm(kY`&-K=|V1hCq_S_iwV900w+iWH9%~JB8 zc*I;>49s8g^(?s(Cm_TOq-j6l9KQU@)U(Kak0-k=^mIjY;$wgE9x820D+=Ia^q8jPY7D3;J)k8V5K4*C04!WVcKu(z+l7+@l=6%Bx)s?L zjJa1ML<$~>{v7Df&iayP@?5F*Nb0L=Ku)wW-4viGB1Kc8l)ay)_H|=Q(Yts7j=ts~ z@X5ZnEh|SFw=*FP;tJU#Sg6AvJ({Umsv@18194E3!_O2R_k^g|)pJ>wxN*cpQ(rFf$mQoZK74A~XbkK66c z3nJf2izHF8SLN%L$hQkc68G5a%j*X9G?A;4xrJTs8lZq3wML?OC=oGff5L8cXw{CE zNYr{5JUK5D2IqJib#$){HDDv@N$+taoL#P{6?!JQR?6!>5LI+G7lohZ2+(K-(h5iq zjzkA*M6dW{pa7BB57cjs%Ad5zd8rIh%0;zsOi<%w3XxL2334pgaH;Dj@`zC!f#g2= z8MQvTpLR(U5|OIO&B$tN%o~FO%2Lq2O^3m!k9^m*0my;4%i4`+-E%Q*S3bt2?$<43 zmg`gr^FDm06+o+!T=jRE+V9>%CzLciPJ~xUsGMo1awm* zmzM~koL6g&-f3TqS%lp2ewE0+yBjw&IC_ z=o)RfXsrTuT$9zc*i%SeJkL}(+8;A&Sf;};S(;+Etb0fs&cp(2rKQe$Qxrq91PYLJ zN1Nj}$TMqP*`FVe8tXtlW|qR|@NZ5*lOFE$1C-^OR0ze`CoVklLe^}QQ9*+Ncp<#l9}m>WR(k&*^UQkI^4$b_k^P^S0kM`U#2t*Ni1=sFTmG4&u4E5i!h6_(KoM{R5Vn4Nt_z>)fsw zH=iK@8TB=)9!#+cGV2-XdzZd(SGRs#bH{e@tsne1wZAlp|EWBzTz-u7=*eKK-p48? z5}llgD*wYI;qdRH*CG(zzbp~eC+rWFX;&$x;6Joi1P_bJ*kkR1j?y29l}#_cCtT?^ z?5bt;*&Bzoo41?hmta`$BWTRcH2qt)H-`sHS^U$NrNeatr?0%1V^LfaYu(wCdLf@u z1GT!|<;1i)c`pXJolU-ls$}v@4U6Wnnt6r6b@%u9YW;$vWyKvFm3rCw$*XZlK43C2LhlC?SGjP=ym>i_%|`FvWz_coHc(X>N8161-MQYmyI F?srV-*1iA$ diff --git a/tests/images/test_400,300_bitmex BTC 5m defaults.png b/tests/images/test_400,300_bitmex BTC 5m defaults.png index 1ddb281fd8099182d1ebbf5a0ca5c9a2a70cfc4d..2ab56b75476a3f8bb1480d8404514b5a864b5205 100644 GIT binary patch literal 2791 zcmeHJiC2?X7LTl7U@%`~9g4t*D1t1;1u09AM?!)I5zA5~6l4`a5CR$v1qTxO*z^;p zE(MDSQni&Jltluf5SRo+8Br`Ef?|javbg{mSsHRmr~VDocg{WUoqON;-Ftrbp5J>} zyLZvFGz>LxIGmOzow5gqTY<^V8d8>fo<-|U;&4jyyBWUJ#l=OrXUYCre=+cX#(-Z) za|sToe$|uW=F2V|yOeeA#zt6GJhw<|vVej8c2Oe9Pnx?%%ie2;z1OL36&#hcd8%rD zRYwtrIV_O0M6g(iqu$=K(T1u+d=(^ASTGi!;$YDqGJ^7l9pa60HWO9=AzEPl1ioI@ zuGwoxG@hKR9_E%lCMW@+gJZaa;C(xCx=6|^TwOV>F7Qd3vsr|%G_Nx!kBt*7&V6W2 z`1R{@Qok=7rxAR{={qT*vvmG^n zh%MUrF&BnJwJd&=G4X%5s|6nccBH+6QeZHjtSubt-v ziIjj<#!}1Lf)IYAosXR!qI7ZElw#Tq>d$_R)`cvKM%>GnPc5}(HCFH*a(AWxG&{oi z62UN){*eLQRslkJ3x}X%o_rlHT5J)1=uRIZ#1a!f(a0>!^^J6WG1(5?r~%Cc2wYh!M4xcJ?5T3YtnvXx$dGxJ>S4v2hNglo5iN_D%TJYjVZN7$h z%x%UE0zaI9NlCnah8iG|fh!SJMQ?{@c(WhP!p~2_18ao0|ITs_&EQ3k`-$O3M6vBDa1Dc$E?kL zs$Xd%3%b`@x6b_OB;cTny}tJR1}u4OLc7v7z>6LXn|XYR@M<>M4#x);>r)}HPtKo$ z4|XH`1r5D`RVl%VwU-$xh-N~|V#KRgz^L8v)yb9kFUTn+Na@D??o#p-t@AYc)@JW- zC-9a>4tSt-Slvt36p2?SYvc6ia2qlNAUmyy6)cKh770;*mX!CptVk~r*+f&<&HuVG z5z!Aou|wi^9+QcHnzb=MzqqM^XpV8Mqssb!xd^Z7W{50)>is*kj#&997!_Zoi86Np zhI3n&b@sd3t&nWD7fM=JooT?G-Qsec5ALU~LdY+-W!jWio|~Jt%3;y-Uk${k1l{F{ zjHvVyC0okydSIv*@-S+rx!}3f6&%z*EU$(5=-LU*Ghb$79;!_Az7Kbc)gTBzWmf95 zLf?#)1S3;NhcEf3>0B&~6uNIwOtu`7xjGEW3n36cLzgS_pHhAwyqxuO{~y9^?qKMqnv74g zkKeZGrLsbz`tlgFC$Kj2RQq^GV-qD^&$-waBd62dsN-|7#*ZbVMV%S-Df3mwx^xvN zuaHAsx{N=b1$pw1oTjrAFFRT_jBHGR@Et<2{?j(^wzVBn!{OL>pII~;QH>>mPT4LU z(nYnm?^7f-wOb+wj;_}}Rv3T$d%HIk%=$a(vh1*)PS&N&IeJ!#?Skn*_E2sy#@9F^F@`CrMmFDL^k-;dLI>g)%k=@#nx)kxG?xK`~ Hko4aG{o-&K literal 2891 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 Kl~4@%U-=V`s4*)5 literal 2952 zcmeHJeLPfY8=gp=p)y01mds%$Mw3C=-ekmCnUSJU5fPa!3DMU~)0o&Z86iiDk+oQq zv=im^nU6M2WlPz-MNxR?Lm{S-Z!_#9yKnFN_xs=O`Td^rJm-F%`?`PUzV7FGo`jw5 z)TNrMG*KwjQdgR@CknLyQ8f~vuCjE5>U}_=)Ra57dvBecomE*rwZEUgGw>J7!0rQ$ z1t=8Y;_B?=&Bz}7G4a&TILy|Av$F-V@C&I$J-lN{tkRMV8io&F=_NDk15h6r85?J0 zclL0cU#=o!U8ci4_&X*iJ*L`QT24jQvM~VGloVirk9aZ;--4o;grFL+= zkzn*|lK5+j`nM^=kxJdZw26_nErS%6C=qEfpVbF@RPF#)9Sp`fFM)Yc2SK;Snar`S zj3z3zG7bZesLjvBVwj3cX^&pF)*9DP7Ha{&jto&FTJEYrHuck~oyTvUL$=FeBx8mo z9R6Sby`*uFOIjVuD!#%#>lWKdZF8d0?V)9H7;B8lB1q`Svl=8sVq04~sd3t$!T4qK zU{~hB*u?pGf!D1E##=P!mmS$YTI*5N7JnU3IaPOK-_4BWNXq`V?ytiwH8VDPg z6{m!65DmnWW(k33y3DLiFX|{pk6nv73HsI3@#4R{#2>{ zWnIEsUHyIepQi zW*lR}A~Ca&;rrXLb7lU{3{S#CNiVs=LqR|vl=Zywt}G@Bydtld2sFdbXd4kik`oce z^AK=saS34k?TK{6D#vgTYE%?%RG=^*P;+S-9U5LL zkTRhudPrEQKm#00Iy#tMv7DRzWEO7=M*W11md9|B%nm&iys~p`7!hzS4IcLmTz?V_ zV)@d-nJgFf!`dr3riGlj0VcTRnv7Ak9C~jsY9!0BBS~IMXU2qCR1-<_REKWZ>S7CF zb%w{?f-+NK&a>hQoXW4L?Gk{_J+qo1q}=Hzv^5+q7w&F9tNMIpg-+m4Sc3Af1&iE$ zA3sc7r#P)8FX{!MjKgM5v>%Wub(i&#U*#U@r??*93-)q;qf^RRedcm=u=A|#J3+@U z1u&zizW2MS7xr$nET3E}qs!~?LmUkyP;+D*5Gw714B7dkJvq?r{hhit*2`huE&Wr< zWTdZJsSa9{Yod$FtJxZ0krQuaJq&vsJ-KZlVNM-YJE;Q}Dx)?-c3wJVyVuO7*+Q28 z5y(FTO|^Bz0_5Z-_(VP*A;%c}=7TYD*#g$<^c%cCKL@mHMOhpI`f$_6vOl6nm!95? zF*(1VcH>Rf&hBGX;yR=Yo$Q-T0#XZ3kQ|%vD({~WC!DiDEx2#Hk^uvE#f7@6WDirw<@-APN%XQ2 zz@S-2(bc>5s=$@h8FWuMDatEZGKan8;w$Dkb=}YB%KvH*&N<1O7P(cpxu)7D&Lc4% zbBh6BzwEXgGhi=N-88eoag8NIqrYU34>iRU+)Ieme8l<2d8&)=CAZ^z|7=tAWW56! z?T{rJu5lI9-}s4c#GbjoIW>@zkvH~ONBQwGT<1`_wyP^&r@>lu)P8TfyWBsX5WrCb z-AIi#^c#;SgSHUf>&RZGr6;a<{glo+bd4-*xEpbZ*Vw_8h(@2v{OcMR(+wLFbDGJS z;|?FwDF+N?N8?=WBfGM8m`mQDO;6-cQtiKzH7D(R)UvX4^FVKS_wZE5sl$)?mk6-| zQ7=Er&%8aormJG2HnNmK*_G061Ydi`%-v1SYruSYTcXS?$jBsJc%k>S>XX@ZtGjav HbRh0`lH2h{ diff --git a/tests/images/test_400,300_bitmex ETH 1h defaults.png b/tests/images/test_400,300_bitmex ETH 1h defaults.png index 03078051835c35c877cce1f44edaaf68cc41d3ff..b524110542fafba1569fb46daceafa62066fa1f3 100644 GIT binary patch literal 2811 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 diff --git a/tests/images/test_400,300_bitmex ETH 5m defaults.png b/tests/images/test_400,300_bitmex ETH 5m defaults.png index e485c82748253a9c3bd21996d186909fc23094de..bdd93926b9b2d5742c073172d0a793960d006379 100644 GIT binary patch delta 1878 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 delta 1954 zcmYjSdpMNq7S~ppG08VBgSO&x3CTUGO)lRa8HA&=H)hD3N+-HdDC0UV-(*7hHoK`5 z`{c3_4Im%$(wVz&56IJ-hj`f7pZM#VsG7cW2%CS*4O z<}=`!9i#IZ^!)gdOe{=K0jvPM?GU9X>(U zY9O|r3C^1ix$C9-)+(spF^dr!Ta~-uDR@o!7fH)%{zCYT=(ro}TGhnSq}FE3{*IN4 zpHuF!_H#Sg8xEKA?62q9c!D*p^;J}U*1qCHS=CDwzV~b|O^iSB-mh*OT+dOj%a-KP z0IOm1kj8Rb>ah9P)YhG8fXR#39dX2TTvlI>Vv(&pXkFYRM#XCXzw|a|x*C7b7d8g) zu<15XIqi>*+5%`@x??BLL6KHzHXb%?1d%GE`703*0X>V5?Vxh4VMq;mN106%^6Y%u z1q?rQn1Li5(^7-!eDkq_z(Hyc1}z#1*MXW+0jm}ClgHl!btY}^RKOF?bj=k=Kn^cU z0~+uIjb7UFh+Vn9MezX^M^L%j=I|qoWIQUHD=Qi_i>BeppMpI3w=Zh|kwz1qQw>Gy zlTV?AM+dx^l0Bfusme#P9!}|kADHK#am&w4OB_fWYdIg7`N^IdO;*rRFI*-5)72?y z_5-E!C9PL)y$Ruz+X8byght^P&7k*8X#4W*crBPNX?WidftHBx0D|lF{&aEKtJ#&) zmnx8_x*>|67tzwFaj|a5$ri-0`x>&s6xpMQnq)#=zojldYXoae$9;>YrdTy66`^`? zBQPd0_7JW>RXCgse#J~;3a#DQ>uCYXSSt*K8TrM*O%jnfSa`yl3VNc!$wm^PEFH;z zXBaY_+aAOtk2|=z(|X%FlL4zm%;Cj_G$eN;;ZrCZhG)=1WH zn?&3`mqRl(h%GbI&Ol}Y_}u5>a)rJ%QT@6H__?clj*ToRq8)d7GbQEe$j&=t){`M$ zoi7E*0(@QjaC$}) zWk^k8G$>Q|vQG@2y^pJNN@2#K+$q8I>U1QM0$+GPNJGro1j6_~s5;4sjMtOu-ep)v z9KArPP+yqUCzAcjQtQf}o{!-QqMELP29@fx#wHZ;#c!%PRnncaft~R$1CQHM!&FM@ zZ*?C(gac91Zo`Jkg==H>{QlWN0qL?5wbiqSq@iLY61dUJkkL~dAgAi$NaG8V7lBk1 z6g6U25&iC6ozLn`6gsDW6cA1a?>9(nx5+>RX2v=J{Uj+VsN!np!xCh~GV!z`37GQ$ zX=^?FpLxh1cpoEtpi2u*(#Pe1bf3 z+oPc(>>H&X7AY%E$$p9Q;+6YvL4}o?k8MSTDS$R&wVe9W`NdC1Ua=H<>XMPu@mK*G zHh3^6VAHSahD^kPVO)!nP+xR9Vj4m8+eg&HfHuK|L)70(0aK}E%r8N@ZF+GcRu)5B zu@^peFXBp1Fol+d3fltOMBs$2`H9hAl0L@V!sJU{~jI^Fi_4+uGRtgw=xj3#kCyxOHs`NJVyY zC$7wi;=Ak65Fk{UE&Y*~3A5$?f!}<;3XVQZF{rkWt;E@1A&02@bk`rea=imlzwVVb{K~3ep1m z^kIdezbvsr2 zHZvWl{pMIwxXpL7l#_Fo?||=;4;Ex=$UGlhqYT_vy&-90H5{CR?~d5naqi^_r6xO! zrt?QSC_}YAgN0fRYn+{u!o*3TlsNEqZob^>?C2FPG%%7yfdrtOgisS;xgnU*$gbclE|s IL4QmAFVeZIzyJUM diff --git a/tests/images/test_400,300_cryptocom CRO 1d defaults.png b/tests/images/test_400,300_cryptocom CRO 1d defaults.png index 9927688fdd201cd8f0d2a368ab0f6bf539d9b94e..8a58bc04920af9dc43d854b4b532aa1672e90614 100644 GIT binary patch literal 3053 zcmeHJi#OE!7WeiWkNVAcKf>2DkK@rPRC4&C8I&|l9(iTFjw2EWvnwV6a9ug)RDS71;;xKd7J?F0OTKE11_k7pdYk$9=?_PWFwfEYOELRtz zw1l#RfPjFsBgvjDARvfskP#%jfeeJo%?bzzt-J1{IPm%W4dgTZb^eOL|5*eMA8oG? z5P+^a+S^iS=ch}viz*CcMT2x$nAf_qED~BvL_iaE^LR0g10tn-!dDXd&$D0q2`ej+Tsm2VlL#t;`Crytx z|0)Wos<;Q?Rgnv78!T2qr%gD?LmU~MJ8d?*ev76!}A9U*#JC`TMI$|KB+QqJbV*-i_knBH1y zTlsM7*a3HnGG8C)uJpTxuBBqvqW7)7$NPjN@#0Mfe>_=UwS6Q2c|^c@=6M_BTFMf5 zMe2Km;^s{!Wx=;*5fkegftpRVLzj(E_Qj{D3^K2`7`}RpayDhdh>UfN|ILi9NDiCTc%xv2fgP0aSy)>mK|wLA66-xZRA2*APG-0I50UlNO;m6L|+Tu zyyety8&^7=HSKtL-5YMIAP!1%h6L4@Av#a+i> zRCSv(d#xzsOsU&AQfD!g5BJA)O);DlqSoi;HAV$c`$sMl5uolqr2m_VwoxwTGC^lK zFZ3xv3&OCEzaZQ$nYrj2ItpM55m9>xk1Lr|X4-OSonGRxl^W$4Aql%|yj- z7)^E@3h26rx7Hsm9yJNL&V~Hs>$h$qelJHD-tto&_I4VXC`sIOLfuB*!U5_7qAzPa?H&ogWTs1xBqyStX^ih-R=J9n0)@1lrVC@)*5jDhibvsezYOfx;65 z?GLi4n61X=um2)FjkM20N+SQMq5^%sWUk+j?oV}`#6 z#;0QgLpqyf>pRyS=_<+q-#}+6{0QB;)3NsVE;B#&Ekho6jmdG>LShe|%wUX_kSi-t zR{Z{57l3woUt_csG9M3E1!ab(J~RV{3_6vDCHX>3jnO6LUKC9h+DmFLf4`WBvdSmm zdNP4bt%2Q#Lr_Mag4qd^g0P4n4Hj9RYs0QRuMi~-?X-%sgrj7jYUin@voN{%WeOoi zgJH}R)S0j$`A~(Oo~L5XEV05WyF;Y$q5k_w%N3V6Jnb^<-lGcIu5h%!*GH(p`C3b( zufk;U9AE9++vgjVGx}nZC1G|IlR25#3GHmHR_t4r1D7+jKI&k9tGZLllLL}S+Cb%b zJC3<0M;3&IM-PGBIO(lSqQOWg;%z;*b_EqHd?^e>i9$iys9pDshC)~6gxb40g^6mC30E;1&mSz$Dg$N; zg)J`*LI_p@xFy*q77;G*xlXQpKiI3Jk)?vT95mZNFGcKmGoZSw6omB=_(xarTe!Ae!Iu2Wjd<95O4nh2hwt4b47RIYVi zspLYDf?jQzOI*klKAuEch!j!WYs&dG-cpDo^hNdJonfxLDfn}|{kvs;JzD+*^CgsO zGijw)vvodQr$PAa44C;9TNXDC$T_;P*3j?|ZaC2R;}>#4(Sm%Ea{)7P{g_|}FG zdVUYh4j$1tgCCflTa7JwvXa|LJ2xz{+qnU|Fa2s>Eb>gp9#fU$N=nC1yy2Z4$?cS( z7DcExo#y7fx+H#IrPME^t<8 literal 2935 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 S^14b#W?^SXSBENObMim=&Bng~ diff --git a/tests/images/test_400,300_cryptocom CRO 1h defaults.png b/tests/images/test_400,300_cryptocom CRO 1h defaults.png index d3ef52f3f901712ed6524eaf592eff0fe9b74b41..e9ec6835adc834ee2ec24ad742db0d0b0f4bf0a5 100644 GIT binary patch literal 2903 zcmeH}30G5D5`fbN@C8H?1W}~H7Z!mK0d2a2EXor|VAw=71W=I#8MILmS(F`LAnXrX zKoq2V3@8XHbP0wrV^*7 zJIKqfEnJ!SD!Esh-+tQU+`D4S_RBRxwP?^=suVeV`aNA!EMaGBI%hXd{;li%YH^B#*U2UC#X&>x%th0Ts@U{*5L5{p-YxEp*}7*e||4;ahq=f zo7sv04h;sa81;A^?VO!#-Xx`nYz*a^Tx`8t1<4p{1r{?Is|YH`@w^(DO|>P6D4fVFdS}X)$ab+d0C^$``cN!KW3lHpaTfsjCCPQ(Qx)7OQzr@z z{w~-HlqmiYE6cJ3k*bjv#{&}u_vOE$mD3Y@Bj~5>!hf>0A5j2Ie%&H!@<0K!)u7dd z;QWS>0f?tIlTei@acs5q#SSqO)%!$DsXzTL<_y|MM=!|leFC{Bc>G~deP6Ry{-GR@ zktzB);VN=y&c51G?}xr^iI=eEN??)PSB=^XP$^nEsSvF`y8r{BoufpCb;NFp|4}A8 z59^JAxGQ`4Bdb~Qpjb5%x%8Dp2u&zC_qcC%%$kRW#$JcB16VO>I#yV`vkmyYE;J)I z4PlbhfLrO;A=i*SK&1j0|He*>+MgYj=>ddh=;Z|F7dle3I{yhY`B%ojI1Zl6P3NSY zBz4-_4L56n4>4)_EiN1+vIIrl0`X`8Ej98LEN__1YJgR8ui4iN!CY*X3zp{*|K>-?x zYo5-0I@s#H^8p_^8_hp%#0@h_=q^Z8J><}{LoANmPs!T@zg%-7rWE1C048mx_OZ}l zk(8D~{YORzfqlB~Y@CYAx>i>LI6r?IJ}-QLsVv`5k+G1Y0+2oO2FTM?e?e7+u&1t# z4?~Z13HIiqrGjOTuwrD088&^+vKo1}bmaE9F;r+XEmScXwXHyw#7*p_g$7*y4GU=N z_9lcw?@EGxlobIkxtg~SXIn#qPi#AL21npSc{Wf^JnRcjXW$uW;jo)aNqxyW@8dD@ zjw1rrick*57@w13L1(f(|q8O zQHyqj)G;^jno!uZ=ZbcmU1G!-6oAgwXIpZbk%q$&xG*OB@ur6or_rI0JPf2RFlT(s z&;f&><2#K?CQZOI=xYE@7z+)xaitl^kY7MTz>r{C;OQ12PqD$5T1nXCdS^BVYj*eq6`~9@2}I<%ehIeK_b7I zfim8CHhWMGt_9tmkZ!tKR&M;#ugJ9(npw@0o=rY^?5SZYtZSoSK8z$Evq#>TAh2uUx|p6^l?Qh`=m_7UAg*_xwqCuZ=mV^=|*ZisZg; zA-oJ0l@?%jr?zW1%hwiWef4S68+YDxNB+vt6qP1XZ!1P;7A5YE&Xjf9Hx(>e8A%k{ z1jH7q?O0i5c*5b2)TwCnJXe@YNS41|?^q}&Bo8X)gVVq~$DNLiqNloUqrF9rT`p>I1uOlp3O*-{EAX zBV+fQvt}GsboIH8KTjpE7)S4m(`ID$*p;u)UMyC=*t(pm<&aGttHV81<}6Jl-FVyP zdA^&RTvPPxkIR;m3v92Jwg!`&qR1}mtAnNEr}>m=e%5B4nZdl`vZ&E{IGQ>a3(YTB zI5cAFW$iVZ)PuAZn`f5uvo9Araah<)SF0R4eZE&rMn(sN*56#ZyaU2*>EIeqyifSY zKC<^UyAGSDl0vxeSPAHaD##MBo9Tn{!*O24_b^wxqjcM@;F-OBPJ~s2VF+CH3$hNt zDnp@ow=-Foc&w~{>Z~7Q0<)2Pehq?WuKJ==M}$7(Wir`5#$8W&t-dN8z{d;pkW(i> zOOT)fcYLQS8oJ%@$*QazGjOIJMZ>l(r~Y$pE8IkGB<)`5bHoeQUrLwZK;N_C_5@9! zx>Fj`tcuV_-qt;8($EaF{=Br6Yi>F0m!myHntGXZEMif<-Sl{GZ1cI}bYklg+awZX zHG<(;H4({dT0dWci5J^cRus5W9d~yHYhb4P%gvZCWf_^Jjse1u#Ze__bv#2ZA~Ef} z9~Zlt>C6O!gw703^xmKQ8t{=t10X&-w)WVkjf( zfl5$J5Ro|Pv$C%J!OBC^ zyqo&xV6f18u=_+Im6K7~cD))NRJAJ5o=qFF18yO=qD@;oL-dWgP4JtTL~ojq)E-u~ z(}qcMy0{!Xe=gS+VS{S*uANUVb_YO5f)Ka&vj>V;n}A!&{2jaMOD*AI}g(gX5Jbrq+ zVkgI-aZO|uNOg0fDEXK*yj$fX0~K#Lm*^{W zJun^h@CeBa&Q@@59G0*4_Y6WdDhT}4DGNX93lcmo^Ln~BeFQ6r9dqTnCwN*J=|?O4 zg+owR*+Jm+_g$_GVk@rJP@se4f4i1em*vTM<76GpMAkh_=PsZ3k6DApGdCUQ+)NU( zT)bbYpketnKcN*BVp@z@hBX(qPnMVm8zJh$f9F+3I8<)~HmCc>jYUI=E8_{}yfKGr zzPo|oY{fnQR}nD#!G>TX!CFn|e)a-KFb#@?;hmEJWSjG@uEE^Fb?4Na)lMPHdU6dk zc9R7sOLcO07zm0Jf%-1*4fa?o|KTQ#-qSdV_Zgt~FK`txb|UBmIGfVO6RGx#G&>J* zo_BBSmz5ES4O63OP^CJ^(mI47${tjs?zO%}TW}`Kp>9vaEySeNm73xaC1wx}?&^wI}me82SGp*3>3%{YO zUl8e7->$A7jBQ!>Qx|PYf2mWuFX2V5njIi8YlCL{-Qa6p&p6MIQv#n-fWkI-#$Y-# zd+EmS!9xV%qq?P`TJ^(G_26Ff2r@SnPEmEFP-8|a#d~*QF!lPy+;v+z(uUS06wv!7 zta47NZT5ORrDf%wmuywvEKTG@rxTn)gekpIwGE@MK^=%JL1u3%wvr*vZ@DSD=ERS)robna-@JR926)lPX~c1onJr9+e4helaJ zbfTkCqGup`Lo2*wIgTlec^Ev9N{WeT2^Lxfm|`}oRy~o29 z=1vfkJBO~v3%JuTF0=0-p80yx!2!5MR{Cc=Wd12JzZ9E~mH%rk`Xd+#;}*Nn6~Af^ zf9(XHEPPO(Q#}X{zz*}f`0nl6et`a(-xZ5|AHcD_ICt-z!%xgf)dn`MJ;ePYxo;?x za6x3YkYW@Mv2A1Uqbf7)v05JH$bj?mT>5!wiJjYqFC{3G5%{({1O2%t{jZw=SOZ-v z26o!Mm`i#eH4PFJ=^6T8)0FZhOAiYa%2~C|;^`F=hneuZ0V|qul$QH9Hm-?ljPOp& zn0}@fktW``TH2OG6K5yw33VOT={l72I#K0_e@=SqQ=a`u_11ut2k-86UFLO;>OMmy zbdWQc!Xj;Ul{}JiwPC4Y+Ylr0Id5s;r=`ri)fO2VNxNFaGoD!{5cJq#rBy>RHL08+ z{((0#-NR8Anqx(IFAluPzr_xd2+EQsi)`|+N9k#v;^ie3>kw}_4tL6 pLi?Wh`AR;{p5OY%-<(DE3hGe2xtZ6Z_{m2N&3(69EqvhQzX6f%4vqi- diff --git a/tests/images/test_400,300_cryptocom CRO 5m defaults.png b/tests/images/test_400,300_cryptocom CRO 5m defaults.png index fa444a19425183537e31c61285f0afa483b8c778..7bdeedb2963a321f6a5b733b6e50223e36337610 100644 GIT binary patch delta 1780 zcmY*Zc{JPk7DqHd?W_n+@Q_nv$2=X~zx-Wn6d zzB(ra!wT=`b1AcYzM_a%ZNG1in@aW4CC;tQFUT7g+PL6`{156UrchK~iP6a1v%=s_ zt&MWWA{o;B7)U`Mt@i2Er`6 z>1)8fDPk;kg1e5O5V{(xW#pBl$jN8Q@BGQz+E*U)V+~P0s6%BL!o zQY28C&V2^)<^`>eu&YU`HdJ~eA1J!5yHS?>cLj5=teqa+`1})mNifpi*a3w`fKiry z1~60IU8u)*N{uRnqHdPNFXjSp%{4V5Ddn&Z8S=~#l1nx@sIP^oN9%XY>n}o!S93L-?FZ`H1FmCEFUKp zSk8ch@H-_hlS|t=ukN4>mORf^*=5g0zAIh2LWG$&?PIc?QYg3k$^SH?4RDLKAd%RF zm@(qb47tI^$xRyQ7XmjLvT}kJKNbHx%&4`V`AkdA+|^~qw@HARv*SurXvO1}I2Hrh z2a-|7p{9*+S^W9RyVB1dEl@uKZ#~(3pat3AqZK}pbu5f?Wdq?*QzokA2Nfgv7mD&U zl#~ygAn5D%p;NyahX%>CGi_n_LB;eo8hnkG7j5w^;Y(i6wjChPpWyZ8m#BwSIG(~( z@%KYtAJGKyp3(tls8DrbZetKsu&EVAx+y;5u1^BYoZV$c`j9Aamh{%!S^)wL_eb1e z!A$z`+M^#v$PptBhW7wbN{^+g&cv6M28Fx!kb1 zXH`(vT&He(hR*+#16cL6um_W`qd%ynUGFQ^Z#dXf4~j`qP2Y-4nh{*DaFc57WE4k( z-?V*aL6wk-w({1ns}uCDv5@G)HwqFK-3m^&1jzB9KCXY5?kMWba2~*#+#d~gFdA-d z-@0Z4h^ZGp7xXr;qg8?NU-~8}lIJ z)Pi#*Te4TI{Q+wVMl`-$kBfbYcd1^F^y`Mx)0870TN^ETjk3y*pswn{%%vqVdZg@o zN;Y~~O+z)0eRc@d;eYN2bC@CDEmQ0YcGRMY2VrJPtq$s8fRH`*)LMbw-4v#N3pFip zFKk(JY!?K4@!qa!jS*G7cvE5=Vp;&eu6w{Jk%hqboQquf1Q;og24$Nr;Amx(50g2NIBM`#hjG&}y>-J*ebJ-PvJ7^_HQ~zL&)W*4T>~y@%-U z5kkEaGO$LERvi$vhO=aH&##G(I!u+K zJA&=sy+jECb~camR=?Qj@M=GZCGm=EkBJi666RJsC*ps>fkQe+HwOAx%E4UsEvJj? zSWMbrRsUpKU@Dd@xV3+N#cG!1TYl(}WUFVuVrVkhwc delta 1778 zcmZWqX;72b8irEvg9rpdB&gx$Ll$Xd)uISg_%2HbA|rZ1AS}gD)QHF;gvErwhb$UM z373G1<^}bY}q8J5kYc8^~asLXXea1=R9-fdCxh|`@FL{ z<>)#yC3>j4v(s5>@$yeu1!XuLWh0qv?D}!VFs;+cGt8>nPiDT-gqW1JsM`vkN1UXs zU6GZ_8auWyNLB>XqDo4RWH}1d4WX$8lM7A)>b>*-PLd%8P5^p22vi1AdCFeB9}iDu z1!!|t56W<4%aM)747`_-4ClNX&Sa<}t%A7ilZyH$*&(WWY%>+Kd}`8f6(DI@S1bW7 zB`{Q&w7D)-b0TniT!e`tnV%};+UQFV*b)V!+eBIyvc-Rd7YMl5qsC1%Ks_I*=jAc| zE4q+3FMa=V2uyB*g?7gS8?+^dQy+2Jd3+1It6A*0j%wcMJp;oESKHndKo&l`F8=L6QFB zrOty$<25T!W@%sTo(6A&0pGYcPvF*LPj$zC2o!8fj

E3O)^+bSFf$ofQxfdnaqs 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 OpZ(UI*7upL=>G!fX$9v1 delta 4734 zcmZ`+c|278_wQbJa>v#kWK3CRkfm&`lx=3LAtXe^RJMA=q(o)RZEQtFAxngw(ymDh zvR#x!F{MS1ZAw|nGD>)CeXn|6zvuh?<2QeOKIfdzd7tw>XWsLg9{o52zMdGsyr(bL z25_UrzP2e|e7fHRD zR&%lzGVR`cdZ@JOM-2aOnQ%@l3d84uKpVwaR1|jxvT8Qsp#pg*uIQ7zXgWj^b1xt^ig&Pl|m5JkX`H+S6N;5@Wj52!aeP6^g2c%uMvtJ8A9?)w?G zSW0}5o1s)8*e$^xla~c*o5g_4ds^l|-i!Q7RRriEg3N8Mgi7-#m8MHYE(E}D!EljS z7K^54XaFgtBxEd7^bgRi&&v(wTssy7WcFT|BC+-Hj0+wH)QO|u zc>ka**qnMG&JwVN04^3yK1hEW!bvl7oj)oDI8

~lZ6$r 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 diff --git a/tests/images/test_640,448_GBPJPY 3mo defaults with entry.png b/tests/images/test_640,448_GBPJPY 3mo defaults with entry.png index af3c04ff72848ed54871228a7e2b7e44577cc156..5aee934d3da234b2567961b46c0ffbe2d63574fd 100644 GIT binary patch literal 3857 zcmeHKc~}$I7M~dgOv2KHMJdW6JF*32m0$psMU+@7i-HnFQW0bkP!NFuMam+92MB^d zTLVaCv&g;;wKcVDK4N7lHc>WNgn-b1fN8LcwXgl&^6%?>-`qL(ch32pbI<)|?wO=R zPIlrrIUE20;tuwEodEzs002ZWLIOnirWQv4tRFgXcpsn77a$w=-`C$2_&=+F3-!yJ z03h1yu-E!<#ElnEQqB(TlD7Kb5ug7&s)MtsPDbb-X{dj<5ppR*=Ug1|OoJ!D>15qjL)zYlB(3KY%G-rV^2JB^j@8OWnRl%>R;{VMYjED$gjv4<*C5-w<;`R zRv3-p-7lWk^(bPAJn5G8ue95Xwp+!YX%*iYJ-3qA>(L)nUmoON=(78hrP}eJHWI%! z{V4^n6!y$(5jHagCHEtjC6zvf?KMG@99micdEv=Yc-rvL1arY0G|@o+d=R;=5v+Q9 z?V1};hBJu`Rzj7aZ5ZOmz$Qpc8I1!jVK$&?fY%qHkFFhuNS2@kEV~yG0!0WME5sT$ z!&C7akZRGr`ML3+$W}|msHorjzDqab8?IWUQvY)5`3HZbNoNV?-VaG+tJYlM6d zxjdzbuHMoT_fpKnb12gqXjBNR{}Ij8CR~atXB$ltOS8st>%*lu(T|Ksyb`-~Xf33- zqWA&pyqvJv8i8|U8;;9n{CHRaRIdViKkWzfAyQ%>bW!Yji+Jb``BstP?P!s@)n@^9 zkG+v4uV~3<9*~$^&d`q@)5$<=_FpHQx9jzLUQNoV*Y-az2ufcv%9&I7>xWaz!!&^W znB}=^J9_Oxo}≷7kdf{Av@}))bpwIJ;Ol-k0P9z90`^xiXgB#Zpi}S!rXK4WcU` zcEVH_3-nm9?$I9!E(0D@etHE163-()h23ohlmcYvh9gBPfP&~^gMDQlj!)olTwf;n zt_LCt>Fhz6m}*H-K?U6pFV}Z}4!d6g+*}=%QNuL8<1tXr6jO}>6+#0F;AO)%R%z=& z72OG~(Ki_|TfpcaD-P~!X3{^jdgnFOmtuQ9b0Sm5;6oGk?AKC%(=>>0O4N^!*6NO4Wnr$>sjUP^Z*U&e5AFM#Jp z3>sIZKg_T9h9kPL(6AaR@k_emeoq%7hGP6eFFYOM>ral?@@1|&Oys*QXfL;@Tl{c? z>R~~*fC8E#)!O63`x&~F4*3Z0fk-Yx_x--|G% zv0TUXiwK*GR<}ES4@aZ}bOKeaNTk7|7>K>kW-fGCEEgQrfDtG#qpp9HhT&$e)5VohF)-!}{vB&L_n&&`9-%YrTR?j@@Y1z;PGS)R$1esU`JqFUrH59K zj!t`OzGzM477SMi8dkCTeIjpDdMiDSMl7VFnsm@0HMCzulIjh0iJe`3PNyu= zH~w8pP&oy;ZVkH^0Xr{Ys&|7l5dt+@V5yA8_pNn>G2V!0@9$|YY&16Wl%~?~;O0yP z?GTI15+&i>_xB>g#ms)A!X2h8=hLNnUv`c?8tOt5 zQ2oVDFi^rvAKi0Ll$!+bu+?#<&@j7-X)H};!?}Yl8x%FSfoUl!%?*64fp%5CS=zCD zkqBp~Yi0*32=rH0&0B>B;(_y~xN2c=Hc*->3JpKeL^s0?%^x7TH}uf_i9u0fDiD+- zEV~b>?}Snp0+H|C^bKx)2@jZpKj?`PlLbnDxPg6?J}v#Ti8A`VFKDYJN2UL2^R2ni zMRk-2wMbHB!Q)r~VHGTEi?~5zDyTMig}})M?qRt55y5+;h7!q&ob4N$+dDvs`jChb z2P}6g0Z5z<`r(_$_Z7VwdIfV9P|s_BVmsgX`W?b0X!Jd(<-!u-0P-~^c=1ch9Z1I( zQ2}l7oadJSp6S9SFb$Tq79g(1<)fCxWtxJyJIk`=Y47^z{tY;*Bzqfl01~A8`K@Ll+#tX$oCu+cmZLVxo)oedo4&pUe1YvAw@bzLPaqefn$nZ_m5ep3oVyC_nnH z`Tul^np|OjagHC&V^y_oQ93w$Z|mz}N+oPB>i5bra}VNx7-iE+{cz66-3*!r#Ar0) z=e3A1?#w5qrzqN-ntdI2iQX%}Xd+gC|G7z$oMInaB$;WA5#BaV?;iZWwo|{Mx7vjQ za&Bd``7l0%PcaTbM$Vd`oK_ZaReC>Si&L{wNqDu%ZXXi|ph={dJ5y_03Me_WeoZ6i zqp4ZWWgdKghU3)?SHy6Eoj$aF<)aa-9>KOM;HJ&_oG@#lS8Hr%wYv_`i#7D~y zWP8J<#e+wxUW_@9#GDQo>B*BHh`7^ZKa!B;+~KnALrQNBjgq%7)zQTgy}P?CjBH%@ z&53!UyD@6S-qraT70D^^*&)lh`C{E?$BMnh){s}PQb4_;$~H4}Y-jKa@X>pA*+K_8 zce>1#mRwWRGn5}6Nt!n#>yrBdE}sRRRF3JT*jIwPi1O}TC7J-f>Wi~p0~mF3NR@a0K|JOxsm!iL&mpVQt-8*2Pd^M@S6 literal 3896 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 L?>8zmq+I$ZFoOi7 diff --git a/tests/images/test_640,448_bitmex BTC 1h defaults.png b/tests/images/test_640,448_bitmex BTC 1h defaults.png index c31bc60cbefb0e90ed0ee5730ea3b63bd88156af..87aa835762dba7b8023d372077dc04b388e11694 100644 GIT binary patch literal 4036 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 L%SL*s6Epd5F~M!O literal 4071 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 HVC4K4@=nk< delta 2701 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 diff --git a/tests/images/test_640,448_bitmex ETH 1d defaults.png b/tests/images/test_640,448_bitmex ETH 1d defaults.png index a561adccccd248822751f63bd4facaa780acd791..cfc029e1a296dcf410f2c3c7906377e175f33326 100644 GIT binary patch literal 4130 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 diff --git a/tests/images/test_640,448_bitmex ETH 1h defaults.png b/tests/images/test_640,448_bitmex ETH 1h defaults.png index ca0b9aa243d34c3e53198d665c5d5e8cbdda628a..81861c92f27736e093c51f1cec27232177363658 100644 GIT binary patch literal 3819 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 diff --git a/tests/images/test_640,448_bitmex ETH 5m defaults.png b/tests/images/test_640,448_bitmex ETH 5m defaults.png index 51287472f0251fcc86842acebef3c59f28189715..9fd8a40940f3c3ace75a05fd597c4c09d6097357 100644 GIT binary patch literal 3739 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 Ze*xc7?_#>pSXeCUcXn{Izh_5D`W?;g63_qu literal 3769 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 diff --git a/tests/images/test_640,448_cryptocom CRO 1d defaults.png b/tests/images/test_640,448_cryptocom CRO 1d defaults.png index 942a7544888479c3b80b0fe036499c86f3a23602..82b0181af81251e0f230d51e6ceb64eded34bf50 100644 GIT binary patch delta 2673 zcmYjSdpwj`AAinxm>E;dkZXe($<*eSN^+g07BAA)D|XRL8}UYxTqd`9whXaiYTBgI zSlVb6MIpj$wj{S?Evqz7J5uB_Lm0We&-B*5`^WD*=kq<^@9&)7@A;kcJ4ZW3yJfD# zedMwI%YSn&j}4r@SX83@)&A@Ajc<=7XlN1i3m-SXyfK@%bA*wZ+T-C{dniyFg4$G< zXKNSY>$xTk58rjBd{fuHbUWF|&5hrv^T4UY$>s%}Nf-k+bLXOqhktYyG@qG>%^8{6 zI~@9?h#N^_5Xig5I5Xavq4(yZ-3Q<8d&2!yAl{ClvaJ;1^>e~gz18E&^2PNR7EGB4 zc|OV5;lue?QvsP%x%(%NxMW*D>FyLRwaz^t;^3=GzvGd66xvlx4HMSmQdfZ|Jom-J z55Aul-gN#&o3JYzqVGWX#!UB*BxASMeaGfm-6i6g-lE!ch)3WL@QfS~`3iGC*waM-;pOXuot^jG%KBvUbDT?V*bvbwWCP?cQ#umftVi=MI?&X&pjqK$?hokB&;INa=W9iJ*FUm-u zAB_t-3(YxOt!y1DBp0lV)cMF+r{L^Ra4b}T+F$jA;hqj`9o4Pc)BT$trTPaKM8XjY zH`HE4T_f^f+pM=Q+%@xW@FBOaZM{uF;iX=U)c60n0CjovmH#!dgFsHcQOdu+!WGfw z{p}Xp`fI{dmFmz|6Tu1bbS zJ2|X@_AS+^_u5ZMEMhS>wLiru?ctk0t%*^=^T#)G#WG&6aLh@^z|R%7t=h~?XKXML z-R8Z`gq&?mMa64D8V}0ZN*6IwN1wSOctAlpRlTgLc%4RIxKw8b)LMsPLe*~#bUHuY zMv_86?FU79Psp`0zmFwIlej%@9|Yk*KcFtFy{J)(J=u5uFza|c0oPW%Ftt(r33sSV z6HRC{6^g#IQP0PunV9_&gm`|?as)F6r=Al3@c?{&42B3+dOXO@1%cO1V`bs+^+{lw z?u8`eDEoWpqZ&rmV8)MQThcdz&Y5wG)qu?b>C2R1!gMKU_%1cGPJ{FPC zxJ=DYUX`=Cj6yY#-O~1x=BK9xyOA#kMznDzqPlRrx4RqjUWS)gc zZh(uZ=rP{}*Zh|5fwWiG@*tvgd~Y=w&0!SSzL5D7qRe19iU9>ZP&MlcC+J}1Eeg8= zf_23ya)>KVuV-EB*0m9J4~;JwQb634)0*~LemSjapfW@Qow^Lm8!E-=;*nq;EO!V6 z4NGM7^;q4M9^2nbr6#zY%ud)~4=iBL(fRQ*WnG_5c@?9V_|v70@(^9zea?Am=guyIAsbVHJP9(0K=B7hk;gn}FO(PYmi z4vp3na`9_K`_Zn5uLWE~?cvNk*l|_H4chlQ5^32eJm-Nl)~-fF zvtUk5e~wWh_O|(<7T1-?A{V@T|J7-WfP^xG;vuJ)C1Bg zzfMNI;XY?kggY*V!tRS(tSz&9Y)QD4ell_H{Xs3^TPhl!{;ssn(@CIG-uY71${xmL z)exk4l_3XRZ{wCgBX?t)s zG%;}kx=V->>j70SBlew5xK%V!awu$j_97$*G5&^mXLCG4D!*Q`NJWkPE3bjQ%Md=H zMuQy>ztsU%16%uPpPKaUG9@oE%Kv{$|6gz8Ut}<|4i)5v6QjOT^!ndy6^v6Ef_yc- zKtpXI<7!Wf>i6FU9Nq8i$5d^^%E1BS%M$_ZFE z#3bQ@lZNH+WBD@~kuUpMqDhl@HZz!yauWZrL=QiIXBlM3 zZdB$t_l2Z)S&E*?N9JY?SQ`?`G8#tSIxG(!=O!+V#Y1!Q`UxaQR`h27#4{+-dHMV! zO9%3M!^Ss$w4Y_Jli!H{sI!k?DO=8Ke&I5=HuDjluYP|py^EVPy^xsgd|v*FwWZ7v2%Nw3;V=>0UOq$hX4Qo delta 2676 zcmZ8j2~-p37M>Y~EFc&b*@Tb;5EKv;*#tvmc|Zw8dlAicmm7d6oi^rEIcW5+DgLSbN?w=X`U{-1FUg|9k)Y|KH?LiYPpD zIpn#g>rub>ujhx;5-ay<{w;V$a_a3?ucsd+B8R4*R6jDseEy@a;hi(TGLu*u0MMP zNujHdQ@WPc%^$CKS+3hs-L)rYrhK+0lV8IibR3zL!+s->j>Ck#P=-3_oC{1ke=DWG z#v}zV^-n0mChlk%^d>W8RC|EH)RfNNgVQ!a|bYUhaI(NkTK&P(?1^nPWa_60h4{WI< z3g-FuD*L;E$4yHUS3)R^pSxH6l0sKzs#OFN{nwR9o_#3$iv)J97 zD4Z=P1*hO0Isyz@y@+b)9*OZL&z_M>&TfoqU_yQbFAYj~*PA%Pa$cYu>n>m)7|eIc ziDZ%mDay%gg%cY!+Y zs6pZpLykScC_uXqaB9q5jBgk(0V1zaFdj+3_g~iQjb)<6>g_}-7FsRJ4|mvuDZb1$ zPSDN*I5lGqFZB>$t$gvR8Fub@d^@3#^tdE(YeK-$!^C_MNfO2lZO}-uiYVm9a|bBjfvjK`yjMX+pYJ(`Abb zQ?BwtuiA6>gCGCSZkYv!s0Dhwj=_VZ-_QOr^uwx(<%r|!pfJHwX0O{sLOEWnB9ucHdLyO6fBOwRi z*SAUU4zt9#c+uir*v_o9zw8JW>$F9gGQ;F#-;g2WR>ydN3GO8oTa}#9pYf@ck2pJj z(567@k9JNqoZWny?LuPHCo2jPj@cju<-lNw%{r`6pD_K`d7p<^&+Dd%JloRj4^h~} z?f+oyj&{l>R&_hmDLK~ImpVHv?L(n~Bs1)T=RmQjkjU$J@LhUtjdFSK%I<#Bg3;-XQ0cGBsQn!{52|OL}x;0+yBEu9Kpx0^ZBx? zgo@#}9cyq+l9fku2TL>a0FFEb6GD3x71} zjCT3vgzkD-?LV`UiNKC=id$bOJlcJ0L?$4Ss{09j6TD+Q!Sp|~w5Ou+_h%>Fhmfne(iLfxhe1F=p^cDxI zvO7b--z$`fg@Bh1p1a5eoNTF>7FZ4+TP{%mM_f^fTz8fsLlew8H&{1!J6(JcNV1DB z@>%p>PU`{NW1HGrS|_Z|EN#500qR{SSk5J&!anFzn@6)BBj{wxr0t#w8aBN*K4DU; zp_-E}PCy5H2s|Snuzi%m@Y*-{#19RoGOQfsMbd?kRvJT&1#{b^UnTF2zfkC;^h4VV zJM2|6VQDv{s|m_ZU3Rw$JJqh^b8QMOMy7n4@b_-$W)I;QdjqH}Q@IX+3l0X@l>wM* zrUnMyxY;bniuZP#p8_=Rmsl(DHt=?R5B~|Y8ZbHty!rNLxWClqf*$)KknQ?E+AS0K z0Y~t(pIjTu3$=PD>Q9btGnkh-Y06rxWuC~9TJxblVc^$X#mxj~8l2;P&KORpsGLjV z?1I7{B(4uMkD*pGw^|6KvYPLvH-r+tfw3vvV;J7WB9Kl#-cp>Mye6X#{`I?Xt3&+A zo8eQ0=Uh=X;FKwA%Akx41fsKc+Q`LaV&U@5aW%@g7vGriq&VLPy=0N4A0dGGpA=?zgA4YvzU}BS`m49)V36iMoSZKu3Ic8?5xmBX%*>q zh~g^wqB-pLvO~`)3&WbsLdoQ!s^D(f>F6WOIy&lY5t9#O*%!Z!UAZMn6GjR)9@&Y?E^`R!ahz<<*rVqsu?tm@1jB&hJ_E zDHk?Qji%xY3r06Vk(N^;d2PQEPq-R+M*P6|;>fsAtnlrjR1f;>&_-1De6=79aW?62 zeI^1{(rCqE%Z&nAxZY*HDzXufS9fSrbOE*#iW0|q*JtIqDalt3=xJG&Z-J&$J|)qr RwatL+@pSvpwbq$^@!w#jz%Bp) diff --git a/tests/images/test_640,448_cryptocom CRO 1h defaults.png b/tests/images/test_640,448_cryptocom CRO 1h defaults.png index 82ca17c3b3394548628be6a1a006912f45841910..481cc7d9c19efb76a36ef08b7ce3957e184d1b84 100644 GIT binary patch literal 3930 zcmeHKi$7HR7T(6UIVI&aGy9}N9VO>TMky8P zmN4ZlkF7q1DAgp&Yn(x(7{rW>nY$_X)H&V1;GX^Y?EP8$yS{7v)>@zS*=y}nZZ3{Q z!ZHE?07R!v8{Gi_f&lFp4DTIktEw5FY^_-19d?EroayTS9l)$LrP+*svM_yr0nkERKjNw3knTAEuV-tAPjQ1n8Z5Tg zFdF5_8q*zz&gvowI28P^UbA8!c~orq@85OmH<}wD`rjzs`oZ&k6QOWc1UVhJsQKC7 z7gL%F=Pk8{$lBLggk$0Vbm#`w$VLJXKkpp9qDxri0|<6}H#PrF36f zbjizzXDx9lN9TeJx!=-Pl14YHEjIRbc^4C=%5klYxR=5(M})P){nbO%&0e}+0)A;) z!#B_>JWKlw;i$M{;cGe%pYO~(-CH7#(id&oM!4H=%X#o z{OkPtj!Z-n(#!4umK|{wugb9T*oMY|rV?`LJEOJ>cpiIZT$*LocsQTEAiYjrQxCJr5LDOwwBK7DjiYzsM|_q$!HZ+agUN*- z0wppT)xZp|%K3(Y7TXbYZ(-8qG$YSE*jv(EuL0%A&y`oP=hFHayona_hHlpN>>gck z$5iyV4ihCCI|^bOR%M0t3Im`%O=v5QWd`bFye|TZ&~0ZJ55CezP5{A*6g#+N-WWv*E=N&NZPcY`Qn8 ze;2m>P9+$&yTB8sIR)-mi%cKR=Z2rsLwkZ{ya!C4NaT#Aak-8K8a2hdvOQBlX2=`y z3X#V)kgRb8E12|y*8kL5znUSTDh2*9+IkS44xSS3uiJhKYJMN_M`65!vlGLvU_zOAAIogBj;0-`1h}CE$;89KL}LB7x`4q`p?+d=duB zUje)lZ#%$^kD_ZAjg>eMr`O1He#QvaDS?u5oM8_#hB>V@q!EDUg--+HHcZh}LzY?C z63XFIfH~IN3=4|XIIN+oMOTPm4c$OiOR_vEfd$UrJ5(&Lu zi|}uhLBdBgsJZ%8GzGRl8VEHz732mGy<}N^!Xj`$LV_%`mh`&lXI$ zCC@p$m(~!cuY#kxz|%c-&1Y+qfVZoZIpgaTDKU+Yu`6TItf2MpyvDtzZY|{qte){c zaUI}Lte~hpwEuYjj}xHCN+^gWaL0==?e1`+VbmGmhg*DaNebfL(>mp!MyRe@%Hj2HGbro~Y9eeLs|R3jd#eH& zX(L6DQB{s4NZ_$nmkKODR$9M01nQSfTT6s^ruI9VVVD_D>j&&4RPWmKD^bb|C7J`Z zkw9N-B&};lvMv&cXSu^ocQJx3aK5DS?8jmSuvCRZDqi0!B(Xi=jIOY2{dj4f3U4_4S{@o$%z~eJk*A${pK($j+2rf&4Y#pdPhg|0eVwCr!w;pN`gmn9 zVs#Pi1(g+!wMAU;OMT>_>;1cG^%4Ci=Nse13HS1b11>wgI1NaU(u36!@{HOl>&E>X z@FtxeJuiEs(1BqlM+wfY@7l7et@3AJ_ZnYfx=%r5{AO?q?)hP&*4k)faeR|U!NT04;p<(%P6OoH0|L(oGD6K-v_HRG z!U`1BDbGhg=^)Nh47xsY2~$4AX=(Xg$9Tj5>un2Plo1KH!d7@HyDlpWPc=Xf6~yhG zB3=Q|RGg)J6pTZ=hskHmTsc*`oQSGW>W z9(=pFd^?Ye0+uE87djDAik^5ish%H3Cub@u#f3!P+cl5`sEm2*hGml4T1PiK8ABoV zmFs-?!4Io(EFycY*qapbMnO|a&(*F|!o8!T$pp$#TJS!rYwqEQi6YLX@!hA?cg)S! z7#VaznSEz*h`b0KOkJ3z3l6@+`?9rt*){$`=sQvrY1iFtxD(C{MOTB6x|~yh<<3f< zVJ>?lJ@~qO6LuG46f@(0E6L1g$pKoyE|P7~ru1N1w=^Lo=7oV)JaBV((zLmlk_H_7 zWg(cZRc(*g8lL@XDg2u_xf~g^IKzk^!yXVm``-`76^}ETAW(j<)qLtnbw_w2*QVRq zC`#0#c+;9*JO|cvgfqCVqbpRb#cxl&RIkNz-=D2dTuo#5tf_bDZfA)E2jLA9t}ZzP z0uqy-URC|>J*nG8H7>LEA!BkZUAAt|gsT|x$Yhk~)YiW(35WabDIb6bkIrT>iqk{` zeDRGQfcu6IPd@UOWr>70_)7U?dU*h2;$rq6=Dp!P@vX}kODWHUsaJ=e+O%`kXc`PK wb@U|UmvGZswD*r~Tx0))n`H8Le|vZ%40x%7rHyCwt2w=sgUiMOJIe9@0Qtm=82|tP literal 3999 zcmeHKdpwlc8$a*sRqwcDhO`>DF^ZJSY=x4`RIb&cHeIkx>y~VYG&JH3rBoDlhY%%F zaw%yNn%VkEn`?!sgt6A8Q0|6d{ARlD{h_ukD1aAK*UU^<@IeO!?>W866tkUs>6S+Ig+%e8pY=!$2P_R4J+&{nQAN2k2-o9 zJ!P>Eo81WRjUEfmw8F>;fBjdBs;UM2$-(dSz1YD4$&6lM6gZ_xJ@xfsvqRTD#~bg$ z*+NFI`LVCdyzg92-X?uxGyBP<#w{r&@ zG^yu~!ZY;YZj%LEON`uwtYPP;Jt+Tmd^yh1GX?kv@D;9H)BTe2S&x=M^-0o!=UW6D z;U=OMXM6-f72iS{h6ePQXKc1M+_cGMniJslP21JS8qjug81C0aidkx;D)H` zSN8{|?TXV*-iihV+-8=E6~O_dzTmR)l%l_zin(k zxF+W%A*;DFdEeyZsk05f64~8nf+JJRR z*(1;OOI-UcvAj)A(91Rr&bN5dB}0V7bqZn)E9}JO$Fq(R?raOfSFNN#}tA zo~G?RiLYqK^*HOC1fBck?v6&>tpsh|xZ7UVpI)9=kLiw6hPA^EI@ zB5KNpg#2g5Y!75jjJw1^7Xqp9E`eu9)OIm#Frycv-wxr2_(oFQED}YbuZ-u z^)_)`2DBshqQwV3z)`?MV2xSfX+L$K#V2&3`c|fNO{qLDqu@MKlf(GHIxn2l=>MK; zVc;%2GrpVRtNb&-HC_lc=e#gS8W{2Yayzn_f?3v{2&Vw7D)U-zGTpm1S|56d&l(QL z{H!xUuZ|%numNrCTg{0L*kuuQgs=hY<*IZn=`D)Bs)!3LS9g6YiyIm^-<5`^>1RlW z`h>%-ge)7eWAbpVl?soUmIPSeotL2uA7h-F#D?o`5|F*^$Wo3gT3iN_=-$boW|;!b z^D&Yl3&rDU;rU4`7@_nzDkhp$9du} z^tKq15(QXh8dN=ai_}nSYcs-^hG+Ds^f0)>KLu!RG$ry5roSjEKk{8aWUcO!Yb0@N zUGQ2e%L7T-`iD`&;;b@fI2;d65NTufX&}-DLzY>6CJRLA^ajirPl7f%De{7CYGoG} z90lXzsQ5%uh|&ehPQPjyxj_fCQIpd&j2pUL2%lCX6J~5QTdIo z$k2r1f#FVHL&!*;x8nJ=i-0*^mOE<@4P4O1GxCu~%$*kVZkk@~r|c9&w zLcY52bv!qlMbl}J>|4;20_`*0(f+$NcJ5?^pS?0|EVcs4qZ@KUwUA{k`!Q`70__;; zs76a^`E9Z2C+le=r1f^UCR$tt);;a1xD=b44>VoIbLzqfG~<`)JFh?y$|ZFY<1C|I zE3B=L<|aE&X-;w>Jb*$*S=_KnCnAk+y%L&;1Ims4742v-R9WAD=KYT;e0@jJ=*Syc z%G5}uTAo{PH-T1qID^Sl$+CEN#V>w(8n2?>_ZTnxI>b#4+L6x<3qy7ld=|68n%{hG zP(+l3?W>@OF%yFXkl);2@liQi>|9x2BfZK_kgyloMHQL*fM{~|jhh&}bHnI`FXCpn zn(!@=;SUPWrym15yj!I^f2Y)z1Uib zgWt;268CsJU?D{B31rt5E{l13(9!3o6LNb+7;P>Hfvy zN4KXJWtrGNRHuc*p5d?g$RqyKVcgl_oGt}Y*XC+%>O*F{19sX#bx!i~a>5ePW5b$0 z{p-CO4uU#k;bmf^V72z(j2Daj^7VXywZ))uD?cJVs;j8;>cgEKLZ{-)cjXbOv#~;N zRfZ8Ocxrgk*Y6=q{km(!4DpV`SgCr^KJ(x8x_Frvy%`SM17|`koB6`%pA|=$(iTtX ziO8L|wy%flR1<=P!W)P3z$6p&fPu-m7jm5N36;E8{9b5LCR_bV-%M5QsNAH=<)$QF zVBXWNSV*cj@_E|I(QjPLpU{IEj>ZIROjctjP8F4JjR^m552nB|byE-9=e|vLWU;87 MmAz%*23pj=0ow*u+yDRo diff --git a/tests/images/test_640,448_cryptocom CRO 5m defaults.png b/tests/images/test_640,448_cryptocom CRO 5m defaults.png index 4cbbd0a55db9fd310026b7778251855b17e5ff5a..74569bcd39d30acfe53f2051ef4e8eb1f5e98da3 100644 GIT binary patch literal 3702 zcmeHKc~leE9-bKzldy04pcLYUs8B$G1PBrYm9>a~fGtQ|02RWj5){cOEj+6%RS?Un z1+26Pv{({A$fy;SEk&vwg!gR{F8w^Y=f1)PZDz3X1FOjs|IBWy4Se3YD+vVZ zedhXyME&APGx3L6RMx}prk`Sd@|u!KYx=(+_9|Pcf>%b@{LIku$|+Fa+dtnU3o<6Q z9O!XU` zVuD1AFNrN|2tu11!KBB1uNJtBnKYEP0oksn2~IU{fsEQ;zIkJa)ZJF8*wh@`8ps^4 zY@EDpB*ZVN(Z2S=Fl2}I>lHU3=PVsyrW$QMC~ukxV6VHt)3N;Zy9rZNCNux>2s2kS z=qmYGXdgF*aoP%Aae<4}*Op-L$Cq2TD6^L;zNr^4thIYqI%yn9CvSUvN|eKjg>2rm z@L24#rINI3wTd?R4*l#pjX$P&G>t=0Tbn`<{Y*}kX`t!e$-Eq%FhjhgMyl^tJc#$m zj&~1$c{-wN<7bhA7BBv(711U3aGEie8%IVivoZ$lFizhFgJ*6zDS=nU3&92@(9>ag z#PrOl*!xke`(&u7L}2@@oS1aS5PatUm2x?=@$SQuXh?AEzzrPQ>H(XR1QBdob&fW_ z8%hKY>>ChkfVP|qKs8xl@)45J%l{tNE-+~yu1ExWw?&_N0QBk#olnEh`^V$mt2x=a zK0&>XAtrYDlIf>HAMBIL)OZ!P_|a*}XEQU|A2TCBS-2fEA@o4GvsS;bv2V^PTZDrN1&JvO zbvYZ5MP(A&(iv37bQVP6pb0Kp4tyQba~@bQo3evt+Ocbq#mf{`8nZzcUqSsZXvh$m z_D%n10gJY!XkO_(cIEh?p}g!AG?z}0b#7nL>8)*OEs~lLC|7y%(EA3;3R^cr?o*JD z%mZ{bi~V2~f@nHeMi6ZS6Apfr|2icn5n#PHh}r2Q;~Isd|Fdzwrvgol-%GI)$3cpE z*kc~_>!GM3%@(L4!yll7iBUp@t6qf)=f5mm+5J%POtnZCQbb_@MGO#BMS>|xe+wmQ z(YCZNN^Y^l{+tY;f89!VB=3$9NZNqVg{zKLtyVmq15iwh=zDQ&%d9RRG~$7aHrBlP zYQGRC-U-NmE;!Dwi*|`XKWmM2ZGlP;+w(A;=LvKTzJdR&YJAQ!>3%tl?$>Pq*LoC{ zz3CwQ~jQ6VYb=II-W1;wfi;p{w z6GYBX{DA`>*5cwn2Lef{j<8UbW;Tp|ge})yl|a%FV+%}YGdH@b^nLhp^)D;nU?z|i z`1K=+H4sy>O(C*s9YX%fwRmW6w(aU09W^9vm*Ny4`PAs{7@FY;tIf1r4_TF zT&6y_3M$>W+%XoDs7~96xa2{luCDMsclb-7Rs#j5Fj|C)+Hrt7n=+e9sGxv*pou?q z2EjR;!v=PrsQylG1jq$jd^ox-zDKvd&9HJ`_`=9^NDv`CSg*c=H<6L4ppYI*h+K~- za#vY~PJIp#7r9yfwf8)eXCLg~8?i%}Cp_RV1{n$Zq49|pMp2-cqyky`Odf!UDk%J<6)MeXZWW<-G^#`t8^S&^a#9GTe#f~D{tCCfbI$R z!V6JSplO0(qse#o#`(p}9ZCkvBnF7gG65bGm_)h4wNY0YAlDXPGCWOQqYp0A=m3j{AH&GPMIQ z>iM(3xWE%%{A$-W+Dn0cup4R{o4|t!Kb@BDUO|7Sg^ zk4Mf!M|WQZ9(M%ZYS{^wPTQNmHM_0)$V^~L2)Re@H%I-G1^()@e}R%B+FbuI)+jKtZYW!*_XT%7TsymyI?|b<yLdORF2cH1QQyEsn<^ zcO?(a-97jXrDv6B6U-{_19P{>=HtM!7Av>GU0|yor_0k51|H}L%>38j_zZ+{8=#6(<@dC-j)T)}d`^KSQD JW%jfS{{m!bIivsp literal 3539 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 Date: Mon, 9 May 2022 23:31:35 +0100 Subject: [PATCH 44/66] test for changes --- .../test_400,300_APPLE 1mo defaults.png | Bin 2701 -> 2643 bytes .../test_400,300_APPLE 3mo defaults.png | Bin 2561 -> 2631 bytes tests/images/test_400,300_BTC EXPANDED.png | Bin 2833 -> 2845 bytes tests/images/test_400,300_BTC HOLDINGS.png | Bin 3090 -> 2940 bytes tests/images/test_400,300_BTC OVERLAY2.png | Bin 2910 -> 2990 bytes .../test_400,300_BTC VOLUME EXPANDED.png | Bin 3878 -> 3961 bytes .../test_400,300_BTC VOLUME OVERLAY2.png | Bin 3089 -> 3170 bytes tests/images/test_400,300_BTC VOLUME.png | Bin 3025 -> 3115 bytes ...400,300_GBPJPY 3mo defaults with entry.png | Bin 2704 -> 2816 bytes .../test_400,300_bitmex BTC 1d defaults.png | Bin 3057 -> 2911 bytes .../test_400,300_bitmex BTC 1h defaults.png | Bin 2852 -> 2930 bytes .../test_400,300_bitmex BTC 5m defaults.png | Bin 2791 -> 2891 bytes .../test_400,300_bitmex ETH 1d defaults.png | Bin 3077 -> 2919 bytes .../test_400,300_bitmex ETH 1h defaults.png | Bin 2811 -> 2892 bytes .../test_400,300_bitmex ETH 5m defaults.png | Bin 2797 -> 2869 bytes ...test_400,300_cryptocom CRO 1d defaults.png | Bin 3053 -> 2919 bytes ...test_400,300_cryptocom CRO 1h defaults.png | Bin 2903 -> 2960 bytes ...test_400,300_cryptocom CRO 5m defaults.png | Bin 2660 -> 2780 bytes tests/test_chart_rendering.py | 4 ++-- 19 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/images/test_400,300_APPLE 1mo defaults.png b/tests/images/test_400,300_APPLE 1mo defaults.png index 828bd0c57eefbbb5516406f802de47e8e6296ad2..3ed5546a58b0e14b25f013f5d4a02a8072a5c6d1 100644 GIT binary patch literal 2643 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 diff --git a/tests/images/test_400,300_APPLE 3mo defaults.png b/tests/images/test_400,300_APPLE 3mo defaults.png index 9806bb23dc1ad7fe0c0fd6459da8acb0d49c0705..a4e82238f76a1710c628af49c5b70d0c27eeef1f 100644 GIT binary patch literal 2631 zcmeHJiB}U>9}ThyL3AJj5<|==2nw`CX%QmZ7?iyTp)6r5Bt=XCAy^P_0VWU#$dpYZ z-~xdN7}0}eQHfduMzm5ysIoSQ1Q4v?X{r@T2R=P~_Vhn!-#Ks2nLG1)_r807@66%!+s39#m(ALV+TS^S|+*1OGAy{K9{% z!eCaax>B5|$>lQ@+|nu%pvq7vs*)NzT+B#7x>>DlRL4$!^tFwr^1d!r#fak-90z@- zc3dPaOt?NZmdO|(H;;^*sNJzf1@xINi?r^IosMU9wdV>ON95eehPVMXH!akpts~Qk zvrdG(6besDzdFM8rjxI{b~txyd?%^>&!&PetCYcnX=T@7$sv|I{5T*Q{N?)@N9(y` z3j)so_|ZcTiJYuBd*rJYAoPK|L=O5 z&~9nphHJ^`Nc@G(gQDc_V0Cdol4f&C{E!^rTq2Tz${&M{Mr8^0)eSNS^efg(0rb?! z0mT*l&VBRJ%6Bbf%7aFm+2^AZ>3}7$vEz)jb+)sM#WWZ}qU6;G+GK^l{NU-Z;Q46^ ziLwgjEWM-#i6_j(CIY_)jR)J#XDrsCkRxZEx^`6=QXa)}3+SJU4q8T)!3dWM`M3j- zThwze#;Vp3a=X+GB&4Z;Y!aUU7av0&Kh1z*>x{zonBK(N2d8t9g(bS#a8OQLEu(pg zl)KAsyJp-~T%2)oQ7X`jI6B&VTID@yqz)*}{Bz;04Jvu1CJ(nPb4e4*jy|BVTP!MR zC(fNk#=Sr$f2Oef-DU{evX?_!4H2Nu=*}hmYfPqpkgIIS(dCN@c*k*& zXQel1e~RVZRa1i8e)EZ-t@X;lu8kxkPZ3h)=z@ni-C-_ewH<@?JHN>Z$|<;dsvyZ)78)j{;fVDVow=Q~FJl7iutxzx@Ps zCHHKx`}&WO#9XziOqEg1mE88d(nvYmF4ty+6@8c zT?tR<$2Knm{)ohF*+f}&5PYzqDRllkptR$>yL31wzQ2C;hdksw;TaQp;);Cq7%Xl4 zZ&EQLC0P9!V3D^1&Xb+}HP9ZY?3jm$ADU<>u>UpNI1nMb21yQlB>(+t7G6c{0{3T3 z;?}VUxqLxm=pX8r>mspWT0fZpbH3M^<2OtYYC?m7ZR?spJ#A+;nFbNzs6!aHYQa1KP%9rMJEPci~kP`vN6(4i9=yiv?V2niOh7$r*2p>9pN;6C=P?BGuqa|Q4MjD)F-rrD6mfMq zT|a3jV8Dn(?ZOEnxH1SVUT0!9ncRXg zU1y%8Y%BhzDN7Yh$g6mQ_d4M1pV<={_ZLPT9_=Gd*Gb=neO^~_ z59@ne*!t=SFGiA+(BIR>@FJOw;r7SPgmforkFzXK8MJ&m@jQ6?1;cmCkfKq8dJ8wo z@WVf2-La9`CFzd68h!cOA?3ZXTSqkF)7vdeh|v959}DrDf|MWb<8<7O8&zntqqTJL zlG+puWm;yWJr}J=@iBqr_CnDXvosbhC)@oKwmb9PneTjaf9L$p@7(z~e!kQh z`gnZ=0x`pbMxi4RlVIJlMNQTrZQ&+;2!!5IEz;A6y4d@ntcFQB}XC@m$iFqd&4O=xOCe*wx(9B^1WhZmtTYHoR|(QJ(+QjRb!_TpkfItUkpR<8Hz1 zYFDj{WD9wQlfvq}yM$dPsx0)|{jLG|{KopdL)F35i$R&vLvSw;Q_*c-0iv*zK_$w} zg%~zVrTN>H2?Eb#$;<7NoEx3nQ-Qe}ewuuNZnLmGv1uhGdC=?6PHGTLRW6zNR^9>9 zRX&^$9MyouJ_tB`x+Wyxz~VnrMmIb&O{do;am28uE<-R4YH()H8f6M4QZgPu`|0_f z)m0J3fq(__>rt#xPE3?1npwc}!F)xDl@`?!O!(x9W@OyUCAgpAdST2q?a4|IeIDhgSioUa6H*bk zVVHN~@Eu6=;K^;70m@X;+4|us{znX^6;O1v|C9~XLGAHzVzYz?kg*1&*90i7y=H&; zUh;}B>M?S3Iw%?I`Af|SnL)G&3_zs|8|OX=k}&-j78tP3m)F8gUsE+MMS_PS>gKbi zPaBQeIQS)GQpFS7{lPX#+vuSAm8!wj=kXIv|J=s}&WyRNzR2EPfQ7qvV}!Z1oEWz7 ztjUX1_}S%=7!|qP9}FnRWWS8qn13CD+WXchce{J|UQevtZ3@cCHIFX~!(y~PrJLt~ zH#cP7-t_ai1@nfpP)yT~UkG3{H>E*?$FaCAltxGw1(isGHQdg#3oBbfxq~$_3`eHH zWTKVtOz`2>+7Wf!3)TKW0M~CPXB8*IPY2AvwRp7prsS*{E7*lS>oIFZojgtVBUrfG zfoJojj`C-@=0kSFF0>C_49nhQmfd<#!(SFwjw>MhFf_;7dgbfQ3T8Xc&x@uuuf~Q7 zNkzVTs3D?NLQctKNC6323~%jp$p>~Ad^7)2z;}3-cQES0;w#K!6@CkGW3$73cq7IC z$LN2jW878zz0THsi_i8(T*E_r(X(kRwnOE`#qC?n1xRX8$#|J7@#55_g@BS&bmX*+ zf4*1oj-ux!M6Rclb~n()I!} z!~vT)Jet92CglkA9ymoNjdWHUqNBx0H1yPm9S+4S_=Wk!h z7e4K#Cle0W1+=&_i`#6Fi})15bXVkG;{i>bZN{4FJvXam{ZGmPoY o`z-ybkkUTZ<6)oBqHRBhaI;hnp{@4BC9?ADuw`p#T5? diff --git a/tests/images/test_400,300_BTC EXPANDED.png b/tests/images/test_400,300_BTC EXPANDED.png index f7c498151a58889a92c2a357c597f04f6da0d77d..7b8bf613c357006e14498ac68709ffa77974b927 100644 GIT binary patch literal 2845 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 diff --git a/tests/images/test_400,300_BTC HOLDINGS.png b/tests/images/test_400,300_BTC HOLDINGS.png index 1ce577aa2b127f325ebe3f59f4b7767427aea132..916ad620454c73692398c71bd6b7c163a1adb172 100644 GIT binary patch literal 2940 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 delta 2071 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 FzXSQ1r#}Dy diff --git a/tests/images/test_400,300_BTC VOLUME EXPANDED.png b/tests/images/test_400,300_BTC VOLUME EXPANDED.png index 9f6c3688f784ff0f5ace04fd54d8a7b98aad9d4f..2caf5b7b2dadb860095ffba79787b5b1cc9735c5 100644 GIT binary patch literal 3961 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 delta 2177 zcmYjRc{r47A12#OBfZuU9ph!}%SbClyvRtX5k48qVakUZ8v8n>chF}W%gJ7Sr;(HF zjy1cnw4g``V`(Hckw^v|XZZTA>pcHF&-45JuKRkf`+n~GvFs~!g^mC<)ymxTVp#s? z0{$#NJ>X2?_O|7cfs1$?z8AKejAZ%MG0(lwsVokWz_5D{zKnF0?<`Ivh(~=*M! zS!Jj!t>vgJ2XcXbH8FKH)L=Zm*%4pXR6EQnThUN77Zm}gkq~n|X<~A} zY&$HA5ElSFPoTyO={7?nfo5@mfzcy#3V@O@#576R=~6+@dgK@`oct^XOufTJ|H;FE z6K(>Bc4q>%5us18zjpn#n%nT{*ym4_)4PEGo1yPhKT!4l zHHALJK~=hkCHE=lkhm7CZ+72f`a)gs#N~YY@U*|168lIEbjQ-(8N6OxOP|}`vJ0h4 zeiZ_6^Ht7D@al2SLhF~Wh*NXgRad96kb*U#_YHtXGf_Z%*n;-+OlvlF$h zZ#Wp}%vqriYNP~jAL02!<{4qDn%Zph77=?bh9Hzr4J)B{<+NjFE1{^)g=rNM2EKS} zhyCs@XyW6#92jka*IDzW*(x&b^gk&^K)$BCx`Cd%B3v&8dRD3tK3?I@SuSl;?=(So zfFQWjOzNMn5JhOj{#0^D?S_K6Tt#-sqEyGzu6=+~rstjaxzxutlrh?#$y}wvh7Z0O z=Ryii>K@{K%8cSKS8EA199K`CgCj9?sd2kTg(09-m4gO9%rAZR4m#9jLryqD_IV_Vtw(uAgF17NYWLB1- zLqbAtN7Yjr=-oE>+}7qUND-cpa!aF7Exqs|OwE_jH7p%uD`+`f}IhB4c-OnOjN z7(^^si-0s3F*bJthz$8of?y6M57>-KKaRYu6Ga<+fpF$w|KP^kz5k8w)$XoNx*ALO z>)n1x=Fu%zOk>;D)m=H$n=T1O9rmWZ9zFoFa_mqCQu}z5)S^dbS72?PsKwB1J8|P` z8}Ye^F?RjHqNK!wT4ea>W!1}fl}LXX_D?M>ni-s*vxb=+%FLRDG%>a@*~)1j$Y|i5 z6-lP|G%*V%kLehm;dx&}8eIFZ7px0zi+Lg8SS?QR5do_BetsIByYH$pe_TQx1(c|9 zjr1BmIB4;Pbd@hXJeh9$i%IXE-2@<`3EFxP`D6R5L|0(&0KBzA1W#LB3NIM`@hWsn zcWMAH0w+||&(9(tGJD!a5BEM8>dy0sE0>8ZUW{>5$1>zI-b@Itc)F>P{>3Q=es9}S zw{>){ClNCS5Xw}5U@g0lFAUZYwU{dV zpo1Q$M?ycD14IjkKn5&5=qw7IRb&T6^f=_)qz^5KdwPWn`rxX>j{~b{VZ69;PPc~3j=tX_DT&k88=*aD%!LHjYNXI!I0k!QBQAs zpmI9UFq7bhWqYink;p3!fPUADlHV;krsS;4;}|KzrMzy>Xs;`dm4}L4SBUkuAda6n z=p^=02&`==U|HeI+KwYNx(qs~eUPTeH^PkFUXA8z>*iJh{(bYsPvuzl^nKnGdG2iU zk|MU0QV4819>b;Xt(4k3;+!x^INOZVp>|j{p|@vr*lM&N7oA=<^_5&!|ms2G)` zkvgrAk8E0%*^JBuoI*JAQR#i@3xANj!9q8pIx|xAQK<*nVGR{Z9lq~YU|hWw4lY_c z*GRvXBFKjfvzo|&e!I+|BJ-;UDCdQMm?>5LVjoY&_kD)$%a@Y*`1syhQ5i>1&z(Ot zAJDSgv04`!-8etM8IbiZI`|*7@JK+*q&ylG@@#A|*kdhgBz|<9oB3`=xF^617+CD{ zT^cm<&!>qlLPYO(HqaIe$BMG+FS1{Cu}={?IMK=Nl1D2{@Bk?oIY;|`!64D&$?e9= z6C&Nd#7w=VQXFndBpw=_)P0R diff --git a/tests/images/test_400,300_GBPJPY 3mo defaults with entry.png b/tests/images/test_400,300_GBPJPY 3mo defaults with entry.png index 8978d3007f0aa3e231d22125a8e6c659580f0ba6..3a67dfe808cb39a798a3c57b560a8a8a6e8e7f9c 100644 GIT binary patch literal 2816 zcmeHJ`#V(Y9-my7OJj{oa*0`EoVHtXNfI*4U`Q@QY`VC1aAuE~o!m-{CDViU3ZWX= zHnwU%DVIVR8FL0rH@7wt(I`%0Zy^-Uu${;5r~L<wUiKUGMw-e7>LW=UEp# z+?=+`s>@<9n61tfG8Kc_f{KPAATEjwM5z3R!H6w;xOzLRuC9tAYvb?hZwCI)7&sir zEx}-%C4hUyE<4Q@)*~wvm@_D zvW?#e_`0pPIg=)^f7ngk5$ni|dz`Yd?Q+SW9=GR}`5{YJo1vu1t0Da!Zgsgdhno${ z?-#Fb6N7^5+zhl?F2`~XG?pEkexyCD%GqhO8F$B*`K{Ww2UEXS< zAd%CQiIQOEIW$qw{{m;~$chnT%m4BXvDCY2_E9v=X5e9J?~Ba9$R<3J$(1rgZpc(# zeTQl*kCp>!`n=w$kHZ$C4D_I1?Xsu`Tg)V7FIO)hz+jcs28_%ygx4Idm4AMDC|(RFL5n#L zif%DMlRU*Lv9)hnD=*(m!k4NctQ61$BuH(dKDDiC7_)L+Hq(Ti#eprvlO9NtDQ3sg zzWv0*sJg!HRIiS1gJ=yWsc)RI)zKN~CvCVQsvH#T6I$0!LBKxuAMp=pD_usjQ$~4$ zA;BpXss!{T7b(ED87sg8ES1?;dITxkjv)Q(N(`sxlJ%Y>d3a!xa#2B2KpE!rDBy|N zDA0O_d>DQKW{Gk&MHqW^LVCiK?A%rQn@(>IJRj8A(r%H82EmiI!zh$DAqfEy($F4A995ioE?t$NemsEkFKOuT%v|lP zs{=*3){xjF%mYoYR>Mr4X%(pR8kimA2o0asg~2W?%zLgv(3p5EV)^HbXfhnq?Fx2jBdkt5aeTJ}^zPhs2LK+ZKS-%pM7%q3*$srJ z>2kMj=NXt>LmAKT!lbVRV@)7pr{6oaUz$L8^l%kl853EJT@q?1TnNG~^GgA(UXO?T zk<6fT9uH|P2_!%*EynBfeI{yG3(r&5-b}JDv!vAJ81)0;qMg+Yl?XA!9cglU}8<{JB^hb)i@r`t?5tG@qEBT!?`p zE*&u=0kBY{sRR0C)eVL7H_Y0 z(JU-&P!`TjivyWx^rouL=b~bOABlCPjl>heuD{EblG^F`P#iSS=+#G+!E&!;cfqbp z9Yx;l{}^4aeX?Sf3VPZ2J=5bY84kgdOt?#he&291aXLIHDj9e$+dmH?@;eoS^R3fM z4F$&dLxH^1qhB*mYBHw?kCb0vIh98>9s7s=9=A4O9MjmPiZ z8Ocs}TjU|Jz9|2*HB#2xBw*)rG*pAJi+3#T|(q^t$b}O8{+u8JxBp3=g zIQXujD-X}DG@IA(r*#N*>PC#FnhoiF?#odH!lAdsHh(0}JUwDMJ(3sGAE;RNQI8u` zr0`Zdl?TsTuH0^+f4K~P9?z)py@rI^y7Ac)>29G`I^mS(d^6m<3XN`W(LlXcAt_yw zXK@DNX@%|lT&(07>)6nt3t61mGyYTxDzh*LqOk&ccz-LC5}{!$J?>bszohlwsqmfX&9KwxHL|zvbr7Zw_a^dFyO4nV12t85D_xm#K$dS)W q2~Ks2?oh^wVj9m5_|soXvf?U+M$^4RRX* literal 2704 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 literal 3057 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 F?srV-*1iA$ literal 2852 zcmeHJ`Bzid7LE)O60G+k7~nz8jR-{+xqD+b?VGv%di$TjQ$f(@tmEm#0 z3Me40gn}A^q6mt@lLC##VicxA$J_oNw>_ zopZ|D(`^k&heRL{*0?iWdz$8J}dOeRM@?7!Au4E&!l z;J3f6l0Z-yaCdRqom4hjo>Npwg_JkRWDipk6{gf(4-H0Kx_{VU6}Ld=Aycqp9YOHR za!p0mrWV=j*H#WiX5F181A9DT9v=*s&hBv_fc6?&WIUTuJ@VE!$hbH$Ip}qLy-D7= z5=%|w$CCV^dx6Zpm|9cMlf2PKqm234ggb-l&vEs#pjBlVQZVwo*^=FGvbw%|dMXke zJz<=tH;8NMEMBcinvW4{1I7jD;AXDzI0Xm|MaYO|VX-r2vvTQ?b-pA=jQ*Xo5&FfuHtKe9v=PLpo^5Rb%ehv+#z%6kBwpJwUKK>Lgw+ zCC&4SoH1<^Bm|1JO#{QHt$=A*5Yr}pR5Q#zl!N~h1W=T#otVj9m(GM7$Fsfx+o4$V zd`LZu#xB9<4Stq-fUcBX7OZKVURBlnF$(9p!}hI#Sa%s!R0CC{Bnn7iHvQYFi&AoU z%vn4_B6ASb4qKR~g;;$mZx>kR17~MEXI^@VS^slg0Ac~d#Sm2K>aD+^6mgL~qw9Gsl z1^b{!9ciG2%2r(I8;I8VWSY8(*!N2)5Vmr6`U`INJZ_arYTjh?SO&*=c&ck?z0`a+ zyPpA{Hxvz$6J0p(G&vXXD{?U2N6~HLmiDTQA9@Uz+b($dAgBEcwnd|X|1P-9oA7B7 zmk;5oUSsRql>C%Idr}VG-K!<6S~LMsm$Y?|{J00z!WWYkAMCui-fAIh((j`^XUEhI zsXF%^{K%RJV|b?%=7|2|GoVD{#y~U($;*O{5yQ(C%#KXI+x$c=?@s~gdztCuZ?lPM zqFskxqgtV6Tpo-xUs>ntNqS}OuB(LFD4`fpya9B`XK#*tRTIS{x(^_O&(fd3S$Kp8 zS`xO2o6wMjmzQb!-Vfa<(jOfYr>F!A$38b?d(vxViL>PJJLX?vswo_FsqU3_9r>bi zUnZU`E3T`L@TurX-4aaGx70y4o-H;AMB1w@zn((4G`>~pHC&}Y)#z4(>EFDB9%7=+ z&Rc}|6n9oDu8YQ-TlMeM%dv-JRqp;c46BdtTpBD@y*FJeq}qoF-dylP)j9$Md)zjD zsG5)2dl!Ls*Wt5f9hMyF)4d`ZySxaOG7@ZB8#`%@>am_`0E(5%LuH7dTHv6y7Lib0 za(zHog_{%Bx190jJzUtceqb7oHM;}a9!NMNmzRf7u3lqVhA9J(0<0+A>cpF;f{|Jq z>9qpbHxr`AbEI;*V%VsLojiL9`Q>@ScbC)+h?#pUUuN3f!=S#nWI! zNI5m3fz6f*=f3X{VXfIcQ!1Jj%gT-bL#MRHEbjtNEAUDLg>Qc7m$O%*g(U%O6++eAyatS1V2Y%P)KdATr25UHbw_IpBU7BMt(L3yn?M)-Xm)9a;Gl&b% z9>t!_9qYaVs}Ts%3bMxB{(!C)(jm#U!y!vY7@lKw^qC{8O;U4u_@wFa&DN}ngoVXK z{tlbltxv6G4NjB!=|e^;!==WO(zeE|XANfJl+&|)VJ2(_C5-jTxP6S$Sv0ZD^B(S9 zHNuNw)S9VHd^yuG&SXSXSj-cLFMZ=|q4U(L;`r#WxiBQMK2puUYNYPI&ER|99Ob{h bF-PZBS|ppIGr--GA3W}^o-TZ_|M-6ZqeG^K diff --git a/tests/images/test_400,300_bitmex BTC 5m defaults.png b/tests/images/test_400,300_bitmex BTC 5m defaults.png index 2ab56b75476a3f8bb1480d8404514b5a864b5205..1ddb281fd8099182d1ebbf5a0ca5c9a2a70cfc4d 100644 GIT binary patch literal 2891 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 Hko4aG{o-&K diff --git a/tests/images/test_400,300_bitmex ETH 1d defaults.png b/tests/images/test_400,300_bitmex ETH 1d defaults.png index 6fe98a3eb60e0a5d8a8084bd7e1c8497179cdd32..e4b3bc618f75d0ae4d17fc1dcba22b9b4a520f39 100644 GIT binary patch literal 2919 zcmeHJdsGu=77r+r0G0$6K@`atKoMgQ112&2rLMM7#?9G#oFD!_rL9&^Ue3V^Sj^u-S6JH zTpw@Rb}eHq6biN79isZ7P-=*(9Yk+YtqjK-%%M=~Yd)R} z-sP?fmI>WM8C>h(@T~Tv{wKKu4{~x^vqokLk8_M7-}wQo#Lj&@gJQ82Mr>k8PM-zv zR9;(>SVDJYai8N@Ar9?Fduz)i{EA^y4Y21$CBJ{rKT}>i<$NTj$dNsAa`{31nJ$Iu zqtpGtsXy4H)D2`Q_pc9;5pS+;>e>&ZLtDb(Y&V4vt)>a~sC1%nTYxB)_%3aR-csLF z`4H8`k-r1R*Bfr`=)j`!iu!=pmq*t`GW($8(6w}O+S$)`V9O?7mNIJ#HQ;Erobdcj zgc@+^zeG|<(eI!U529>5QHx2QH-dNbXd-v)-ff$juXRdo!36dSG)LJ$UGv*Seemrj zDk)|Y)gv%=P09EucELUO9AX}s>v?uIM;egiW$}pCk^-dcgdZF5Gsvk}n?TOU(emU0 zP{ags>+YNPYEOQNyx$Iv9=4z}(A+y0JN##tkG@?|*)KGlPd1Ir#~xlyzgG(E7{KqB zv#jq5-;Hqetrk5j99{_t-Ohy)OD6F|CL!voW%h2AP(?Rie1u zh7!a$N)63z6CkNnFA=fUagpjOx{Lw0HR}SJc&ZM}Q7MVVSXMhwL_f;_DGKIXA@ocX zA}x4n-jr!}(4XPm*4|J?y9uDtlruN+#-u14n?^+2V?Ozbr|0MJ*lV6565yp~zxw9` z@CK$31{yAK4*LuMjymPS_O7Zbm8-Tz~cUFNeYI?G<9UB*%7>4XEq~NM$@l z6j#7*JAHo#tkb)4Q9d);2v>=H!bBtnQ0T%NJJhrE>S7DFt2)am=DtffGA9;leXYb7 zNN<+rkKHarbZ#K54?SmMV%DZr@ixgE2Nr$_7qRAT`+YRS<`G))`QIp0;QhH2;y3`_M5&#b|45tW0xhrHjf1B61~4DXq{7tVy@ zSAAET_4U^OQliK2b%mS~_}CTwFJPl1?I$23dI=kdREq*8>_;!-z|mW!!aqR{8u)r{ z86s07L|exIO=A-#sfW#hNngaajsRSx`P?nPhyKw(@{)}=Bi4Iqf@M1l0ADMRxqb!t ze83j$r=xHMh}GR%WO%7i;6#TW@RDXU6Db^LLdZ&2a4{IXkSc{BW*p4y2nEbu|5FDA z@>BwrX!j>kaz?mqAK1ObN9rbKcFIg<%h@G}a$^8;oa;KrU;3e2PCZTU2zmQG(mJ>% z;|7*eA@TBC{qOeNIMCBpPVcJY6MAZV2ZON#n0I(Y+p)CTIOnzo zB<0N#?5U#xMBOS1%_T%Tq^N>jO8|CT5>vt{&=EAQt^%1WYV?kG#%)9DW zI|~A#cyT=adTQH-Y7Y^vTDcL>kZ z3833I%(C{aj%-*b7L${@VBkMwR-P<;rOa;e|6<#QiKcziP7m`jza*Vc|B#Pa#qB`7 zaIeJn(4q352PFXY;2yB&H{GZ%)6KL?RV@&uoq1iMx=D((ucnVV9L@IkQSRD1An!c- zXlm8VEm=CBb@mX(rBX6~*L^(ZWr(CPpZzFN)J*p9S&88)6`o*N?NqT)cpXmV#hrii zcG$9J>UPf*9Uskg4Z3#gj6Hd}0S=W2ycl;gx@MTI>0d2_)4DH`b$o;FA%~&W{e?tsI#Kz0#43#bbo`7akZ^i5_L=r|($?QpL&r;VU#(j4`&o^u QQW}MFclD+=fe{7&26rUA82|tP literal 3077 zcmeHJi#L>88y^xgrg*18RN~F;xC|jW8pLZbB1JcHzjZ+=Ij)iFos5*3>Kvlv6eXGC z8bz2sCPTzWVi=hdBQY*BIquAyQEQ!b);eo_|G;-uK?9~Yy=re&}!0DPM%1D~CzTg#pVx_wxGZ`>$IBVLZ zdcDEW*9#6g&-30ILzI1Gbxf%DKvT1#qGoe~-O;4jx6{Hym5$d8E;;5NVEYwXwXrhV z41egbBK?>}6J;=wP8)3npT>Lil0H{Os(oBHc9+lZv6{fCF2o!AfK}T-`q8Q3BaqNO z>P4$xw3px}X#g{Q$GwfYBN}kv=MNbdh!Zj4D4vSNxDm3HJ`0C zyG5y@y|Id|SCLnYG=FUg?2v{SHe_YwE#~BH@7=xKQ;x+Q57)z*q4OHOqyLqJHdQX) z;$1i;0jBn^HqTl-Po@$klekOUj@u9)MemJFl*0}9lFyS{FKEq9hV6M-AEE*)^lNa{ zk(hO0pcp9_d5AM&28D($6VKUxGg)=VscX8uQmalXR03{4{YdeqA4Vgc);#+?dw`Sr z?lSY){$&tyVIa``9+r|q8x@6!96R+lYU-r&HjeL16P{yR6Q>c-D?H~e@Jd5L|K1EfJRNEam z4AZjIgZWEGT_O*z2Xvw)9@EqojbH3-u$NAp%{7Sx4*(fzP!d0F&SdBsr;%u_P1rz3~9gx4QVRx zRehKdgG?=$T=C_hEiyjg;Fr=T_Ol8@c+FMp|JZ@g@bezc{CmIgzGx9v<0ou%XdDTM>2I$^;eYbh;S!aO4ew`XnFSQ2#~}MYSwrI{_CyJI8{r6% zhZ<*FC(Pnwy(sjmT7S1ZBpL%T$LcJ^&m z&Z7?4UNKnYw)=#NCB0}1S;#~^ST+PaGsZ(XF>mG3sa4L}=N&A-q!kaMp|7&z&-1dF z4__~Wwo&^*uW_VG+CA>{c-T$q?5e6-w$*)O+)pKXj=N* zaG{Pa3WeVSZjLyHMCtlS*bsx_0&psz;K+nEujq*Z!>9wTi{m_SU?CuNtM|%5t(}oxC0}?CB`$a9o)91act4qLcRR+IJ%sCjjC8B=QtW#IvEv; zy9J1jb-ciIO-t=$>XX8A;w)E8N$|Yn4Q%-!o4rlg2Ms)oBLfw}FgcMcID&18w$zEI z=T{d|Kg*x`xZzn`t!p#qv)g@JGfF1Plc^7rk-8nfX1^0dzdH26&p3E7br$s=BPLcf zm|@)+f9?SIv3L@dr7R0EJn+%0snjvnr$VY!%PH zB~v#F#cPa&qqKE`d0Bsy&@hpheBBT@;W-itdn%{oGG17vR9LW>!dV+M(o@1JtESn^|p5y6MbFdm$06Wz#OgWhp zC2qY+Ql3vKlMe^wCZT;JV@*x5`1Fv@+)~qw87N+7*9o(7bwc_;y?+MKdbd*dk#=xf zC|sy$f`rMl$sT*K08gSUN?W~WUEr9D4NZp8m6hxvPkwAFQMMg$J}DV!rJm6)#fY~t z$U*&2gLVJ7ucrT=2JfNMczQ1~D>*D#%oqmrvM*j+Kz$PhXWiv1Vxyl7xv~Qq(hf5m+qbp%)N}NmdUFh`ToaNVlw3qB{ z8cP!4o3lvmHwD&hp2P*E*1#ljVI%pR(Y8bp6PD^avVq$;Q zySb>ObQXOPYE=Q89b&0Kc`Wi#N=@r=M>2} zi8^AMTBT#{;9|~=7_BEW%=~%$VM?zm{IoN!=*YB9BKY^O+VvHgW|l#a(I|V@n%K$S Kl~4@%U-=V`s4*)5 diff --git a/tests/images/test_400,300_bitmex ETH 1h defaults.png b/tests/images/test_400,300_bitmex ETH 1h defaults.png index b524110542fafba1569fb46daceafa62066fa1f3..03078051835c35c877cce1f44edaaf68cc41d3ff 100644 GIT binary patch delta 2051 zcmY*aeK?bCA6EI8cyiB2=;+DrMN60vB?|Y53Y8v|e3Yj0-GNAA&%-?yrTb-t@=+0$ z@EDO1Z#8UIs`(hvdd4b?A&i*uF1<&``(FQC$8}!6>-_zW>pFkuCDD4d{%_+oB-Gmd zjt+lZ%oi1`x><|?6b$C z7^7bhUdjt14FuiDoZkgt+v@SX*Yz6rXFax5j z%IV}55*p5T&85v2eWaXNuht-v^7NgmwGiX5 zX4Z0dkzZDTcpsC65nz(z!xTUzGhdgb+2;wtNk_r{e~e3PADAwy5o?hi>Kw7t2D196 zKS-gGiuzV4#b4LrT>6{@joIAoYGmIkeK}3g*EKCUPkyE5TvofEV^q@H(}1$xb>A&( z&anN>0a8*+!pYVi$B5s%3G`Z9+b8T0EgGI{#1PP0?;{zIOGRx9Vg+~@UPDe_`E3j* zxZ}PY3wTQUo-$XKNj;hXDsnjO{lh*$-0R9(3S5!6xNE=swKL-lWA z@Mf_@9130R=^|3lhw>jPR|kfeVnn1Rl#ux0PEG0~q-l`;9L;Gp1;s|Iz_i1WBfhGT z`_MUXR2rL%JcCO0BqDjR0_wmJaV>Cnl{~z0HN<$ZQwK_&YBsg2%~sUm19if>WBQ*q{T!FFfmd2w$C9eey;yfT;>rs+e&Z!kZI5(d>E9%lwl zSsYbh;Y_{{N0TpmfhF47;GqM-8XD@QG0bBNM)b$0GrJB~BK@-u9Q@pvYU6nQbbAV_ zJ>$G07}#`XA9r|bC5{-Quuis=WzP;!+(g=YZpX_MGPNt!dD>*Y1>h+8np~el1A3TXvM0|{+1OZX170}Qy?ODAp+Cz|o)bgi9C~H^>UCz7; z5Xu1wtBCtAbYLHzF~>xib?<%Qmt)T~#5i942z@o!Ba0!eff(l^RpI;>V)CG%W`?;7 zjP7;^k1#I40Fu$omDL&;(~@bG;3EC~@%-Qg;hvNWP<3D|SY3atZ5m0-&~ydZ4u|&Xc*IaJr#i z7I}Fyqcc4~ZNVD#ZEunjMXP3<6LB*Yke%|@QqTE8YXFA2YL-)c#_daCXkEtHi95WHs&dAFoijuchO4#f8fzosBHhG*(b*eL6~ z$h`1n2c}$lUU*c^M?FFVo5NO%2g)6{v8Z)Q)$8x&a%QnWNM3l%@#3vPb!HDnWx8DH zvcrdh6E@}oKR*yzo9dB{seJQtZ0h{by6t=IMHD(C4XFN~X)gKYBwAHY?yZBXA&aJw zVRT|mDSBZzo;xvpjpF}h)OE@&jW6lw{nJWZZ(0~94a+(nX&d*VQJHYFC&D`-J!jv@ zb?vyh@_<2c&7hy1_m7>~#ERHYZItZLrg?4d1w;QqO9`IayfE+aIHMSNaYZ-|yt^SP7j>{twVi)D8du literal 2811 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 IL4QmAFVeZIzyJUM delta 1878 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 diff --git a/tests/images/test_400,300_cryptocom CRO 1d defaults.png b/tests/images/test_400,300_cryptocom CRO 1d defaults.png index 8a58bc04920af9dc43d854b4b532aa1672e90614..ff8b5e633167a6b846ee00c84c33112077c88211 100644 GIT binary patch delta 2084 zcmZuydpK0<8n-Ey`x-GWshKs%j!|b6kuEGG#K=*(4rk7&PLxcAs99u9joem*YBx$v zM{SweM0SnLt}`)i6UwDjyBH=FL+<6W$3A;M=bYy`-#_2;yubH-fA8}?zwh@A8_V%O z*{LB`-X3m2NmqxtX$kjiK=o?HV%uV?Q4l`B@FJD#TuN~Z$FHGRWv^0KnK9`{cIAo& z0xS8Hd2;TpUUIZ=R=E09r_;J&@?k^;-C3b?8>xDuzlYb|^SE+%ky}m-JEo(&p|=i? zaw@DX9Rl8uj%a%83Ul*VYNvuVU|BE$x!7OgOATKL;bQY^%gS>^U%|vw(77+eA`!^Z zZ|^0f47+XJba$#esnc&974j_gWEo^e{BGP}W6~ss33%iNIavhoe(^^CSaA-gP6?gXp1y za?+Lm8@p%M@M;2A^@2g*1mYT!JK@0UeCnknhX(AT`2vntovU_o}Raf9xh ziGLU{RR1%%t04iMc#^nrrY94O2zq$bb?4XXbz8QrELcYrmvpeHT$3X>)-MVT*xZKe z#c{ti4#eL+z8caikXk75ljugLpv}49IUhN$FJNfP|IeEJgx;R`2`o4+Fz$G#IHFL= zmueX!wfi{pJ_fK}8mRI6!sCo9#qJU)R6C>p&S`~Hx=*r_ir4MWSuBh(QBXvrz216C zURkK_rQCGPCse!QS|!ND%Fv#15H&mldM(O2G~PdN2LqcU;Mcb3=QJ#Jp)tbFav3C? zFz67;y^~7|TrQMl*I0WbP=^q1(1-_r8_f*;oC>-tcq90}lq^hV5`OXuxWfzQ*!f*M zK;#*?qyj^)SuW7~*m)56gPt;;JS?C^Egmfg|_C*1Sgu)9f_U`oBnYZKHT zg>vQ-(Jt6$k?7B8>JXYP?qj#405Eg-^$sG#oJJDUR-XrsH(}%=>$Ze-}##N!K zCWEe=lEgrOGUuFJEwUEto#M}Jg*VsaF3kqgKX46Uok#ibQceRqtC5Lr?7NM1W~_tx z@9u)4QX-E6P$vAfptEniA#t0_TGS-jn!Qvj)z7lRR z-axKkqx*gVGG;b>QsC&@J0ZpzYfG;%sP54-AmiD3@|0jF|G~vH(2Is@KsC&8i35>0 z-q{HIz(L=1=8l4t{ibWN7s zYFOL{d656>ntvQ!h0{?{32^_o;MhMG$)lpau|Z>m3mu!@nWlT5s69XTD!(Z%7+L-) zxM~*4DLRgj|N2Ifx6Korb>U(k?@sIkJ(DaF;pU> z3L!~%g|LL;ZgZ+1CBF9IT3e&_NuQf1)>OdK#GYTvi8?8?oi?;jb07PvqpKBy{q0S2 zXHLcy3#1xVV~18`^_35nzeV9g^0J^>@yZHET5HyoW(A{maAw4AdY(|Y>TAnZ!cEt7 z-7tdS1j}KJAN}at{qx-hlS!>^9JB1{??WcPdtt1q@}G0PVSDe3zqAcE%6*rD-k$y* Id^qaNZ_eq#VgLXD literal 3053 zcmeHJi#OE!7WeiWkNVAcKf>2DkK@rPRC4&C8I&|l9(iTFjw2EWvnwV6a9ug)RDS71;;xKd7J?F0OTKE11_k7pdYk$9=?_PWFwfEYOELRtz zw1l#RfPjFsBgvjDARvfskP#%jfeeJo%?bzzt-J1{IPm%W4dgTZb^eOL|5*eMA8oG? z5P+^a+S^iS=ch}viz*CcMT2x$nAf_qED~BvL_iaE^LR0g10tn-!dDXd&$D0q2`ej+Tsm2VlL#t;`Crytx z|0)Wos<;Q?Rgnv78!T2qr%gD?LmU~MJ8d?*ev76!}A9U*#JC`TMI$|KB+QqJbV*-i_knBH1y zTlsM7*a3HnGG8C)uJpTxuBBqvqW7)7$NPjN@#0Mfe>_=UwS6Q2c|^c@=6M_BTFMf5 zMe2Km;^s{!Wx=;*5fkegftpRVLzj(E_Qj{D3^K2`7`}RpayDhdh>UfN|ILi9NDiCTc%xv2fgP0aSy)>mK|wLA66-xZRA2*APG-0I50UlNO;m6L|+Tu zyyety8&^7=HSKtL-5YMIAP!1%h6L4@Av#a+i> zRCSv(d#xzsOsU&AQfD!g5BJA)O);DlqSoi;HAV$c`$sMl5uolqr2m_VwoxwTGC^lK zFZ3xv3&OCEzaZQ$nYrj2ItpM55m9>xk1Lr|X4-OSonGRxl^W$4Aql%|yj- z7)^E@3h26rx7Hsm9yJNL&V~Hs>$h$qelJHD-tto&_I4VXC`sIOLfuB*!U5_7qAzPa?H&ogWTs1xBqyStX^ih-R=J9n0)@1lrVC@)*5jDhibvsezYOfx;65 z?GLi4n61X=um2)FjkM20N+SQMq5^%sWUk+j?oV}`#6 z#;0QgLpqyf>pRyS=_<+q-#}+6{0QB;)3NsVE;B#&Ekho6jmdG>LShe|%wUX_kSi-t zR{Z{57l3woUt_csG9M3E1!ab(J~RV{3_6vDCHX>3jnO6LUKC9h+DmFLf4`WBvdSmm zdNP4bt%2Q#Lr_Mag4qd^g0P4n4Hj9RYs0QRuMi~-?X-%sgrj7jYUin@voN{%WeOoi zgJH}R)S0j$`A~(Oo~L5XEV05WyF;Y$q5k_w%N3V6Jnb^<-lGcIu5h%!*GH(p`C3b( zufk;U9AE9++vgjVGx}nZC1G|IlR25#3GHmHR_t4r1D7+jKI&k9tGZLllLL}S+Cb%b zJC3<0M;3&IM-PGBIO(lSqQOWg;%z;*b_EqHd?^e>i9$iys9pDshC)~6gxb40g^6mC30E;1&mSz$Dg$N; zg)J`*LI_p@xFy*q77;G*xlXQpKiI3Jk)?vT95mZNFGcKmGoZSw6omB=_(xarTe!Ae!Iu2Wjd<95O4nh2hwt4b47RIYVi zspLYDf?jQzOI*klKAuEch!j!WYs&dG-cpDo^hNdJonfxLDfn}|{kvs;JzD+*^CgsO zGijw)vvodQr$PAa44C;9TNXDC$T_;P*3j?|ZaC2R;}>#4(Sm%Ea{)7P{g_|}FG zdVUYh4j$1tgCCflTa7JwvXa|LJ2xz{+qnU|Fa2s>Eb>gp9#fU$N=nC1yy2Z4$?cS( z7DcExo#y7fx+H#IrPME^t<8 diff --git a/tests/images/test_400,300_cryptocom CRO 1h defaults.png b/tests/images/test_400,300_cryptocom CRO 1h defaults.png index e9ec6835adc834ee2ec24ad742db0d0b0f4bf0a5..a8b2793b1474dcf8a376c98f7fb72ec69f56caf1 100644 GIT binary patch literal 2960 zcmeHJi8qvcA0H_mm5i|^*YYs3=S5+p!IS0D%aoxomPy>Qrm@gM z7R#G8ThlUEQ&AU%jHr;L$;~ph+_{rer~AJD!h3(`e9!Nk&-Z(N=evHsztek2F0yMk zt;Jw4vaYZr8H15P#bOLdijn>>r9Uv3Rm*$ayqrWLkr??R|D1m^@PC$pz5DN#U@!p5 z)zQH#u~5K1U0tH3xCRu7Iz6WqUvOpfGLCwmeep;2j6&8!_C`sJpATmt=L9i%tG=gZ znc>DW&}&*vrL`Efv3 zns17(+JCgd%S}w{0;%JJpA%o?`|!Me-Zs2Rl?vNT3131}y~~QRUT_m9#iXz+rbEq> zy?sNO^mrzaTBt_``YXLJ?veSycX{=vX>_09;*9%v*GoVWg<4%H&1E#VH3Ar z#~=y_gZ1%jC^8s~{Q-%5l`R<@qX~?soweFr8|x0wyS}D`A(01I76ZDP$*Hg3Z^GfD ztIj)r_lQQ0fZ6EX*q|j^uY5Y1S*Sv0Sgbp8C?04ON4!$7omAcfB2^rC3M3>Yu&jYF z$*-DkEwa)G;;LIOwU!?!3zdU^58XI3qPHKMf6vU+XPVd zZIRC#tq~1y%NA%?h>m5{q;kyBM^m|FQ^1Qm&PxKsE-7Rr7hCOO=9+Bsc|k|#EP|>t zshLGx*DaY+*lPCyBfU4buxcdVo{5_guUY9*pl%QShr?s$u3#y1mN43aj^-C=s3QKQ zx#*S9TUX@_O6R;A_-kc)G&0bCm(NWwQIlu%S`j>NSfx;{A_sb|p`WSpK8YHpT7>;J zq(r9FG--m~VY>L+_)ZE;s4PS&;dE{TaP6%+v`aDv>kHDBuw)s?kzN>JL^K^)+%97G zn}b)Z>aW;kdBHj#Rd5M$(HswCwTiTh3i&$C4eTg0{OLMcdmm_Q?}LOrXC&zDG^#c} zz$gYh+vo=`vV<+@Y_cafZqLd_g6O5{PCSPhdOrS%?-LmVIa>%D;}U`tt_JzguIN4T zOt!P8&Izi#T@DtBv?xGpJXIhj&znBN!gnP;u!nJk$&+R13{DQxP{2`ZAovitB)Mn? zj!HboF*VG@QJ=`&9&EFXvT!WNK zUd#+N!XM|*_`c+8N{?-{H<#90bNm=G%Cn(C4R5zY^+UOKrXfUu`;*$HD$o!z>_wJt z`N2etA>_D_jn)Pfw*KtRv1+|F$=u5cjxok=R{OhJk9J5LlAb9COYsI4%*pWhl zm0x>p*Bq;W9*ttF1EW27Q|*_R$<|P1PbM0_GJuIWXxDGt*_i4T_Ufd<VL*}XIQt=Z}}nZGZ9CRscL{0fPAn&II#*#_MP4fE~ElsWD5xA ztaL9g-m_y)MpY4Eh}$~(X>A3aSEh>0N9MNhOJrn(pZQJ8E&9hn2WH%$4`Q1w%Pbvh zBQlkbXHme)-NV3zsP@1Qu?A5O<_pmuD=CUT$PAaXLw3vvnb{opY{($w_wGTx?&6$J zuApC*DSizYKWn98Zr$2UN0A}7-bGnRIXPjX31y{!q2h16`@duPH`*P90;fljeKRU= z?0K3ir2CD@>XQKR_6Os`NkOE zT@!B_F&G0@D9KmFB;1rrHPL{$Z$L-mzg^3(Ec*c|4Cd;7lYqG8hs00*hn@IBU74HP z1QBj#0kwInW{$KF5~i|+f~`$DK}}creb(n@+{*RYH;948r9n#r!`BlNUcFr{y0e^L zxqFr%-@Z(Y*?N*Sd?6luE~q)Xm?CM}-2Kb_%>^YB^sSjHBGQpeVO?A0%jpM`;~SQa z7jXSV86M%(;Pf`9*tpSR)#w|_?rJYB!>KiYS{{0+P}lh{OKZV4_csf|y3?$W6m_}( c{xiibNCy`gmpls|UHYPMbs{-dLi^MI0w#adKL7v# literal 2903 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 Date: Tue, 10 May 2022 20:28:38 +0100 Subject: [PATCH 45/66] beef up tests --- tests/test_chart_rendering.py | 89 +++++++++++++++++++++++++++++++---- 1 file changed, 81 insertions(+), 8 deletions(-) diff --git a/tests/test_chart_rendering.py b/tests/test_chart_rendering.py index 24d7714a..f53dd254 100644 --- a/tests/test_chart_rendering.py +++ b/tests/test_chart_rendering.py @@ -1,4 +1,4 @@ -from PIL import Image, ImageChops +from PIL import Image, ImageChops, ImageOps from src.configuration.bitbot_files import use_config_dir from src.configuration.bitbot_config import load_config_ini from src.bitbot import BitBot @@ -11,11 +11,13 @@ files = use_config_dir(os.path.join(curdir, "../")) +# physical screen renderers for approval testing class screen_output_renderers: wave27b = {'output': 'waveshare.epd2in7b_V2'} inky = {'output': 'inky'} +# s/m/l image file renderers for automated testing class disk_output_renderers: disk_small = {'output': 'disk', 'resolution': "264,176"} disk_med = {'output': 'disk', 'resolution': "400,300"} @@ -23,6 +25,7 @@ class disk_output_renderers: all = [disk_small, disk_med, disk_large] +# basic config config_defaults = { 'currency': { 'stock_symbol': '', @@ -49,6 +52,7 @@ class disk_output_renderers: } +<<<<<<< HEAD # load config test_params = [ ("APPLE 1mo defaults", "", "", "AAPL", "1", "false", "false", "1mo", ""), @@ -74,6 +78,74 @@ class disk_output_renderers: ("cryptocom CRO 1h defaults", "cryptocom", "CRO/USDC", "", "1", "false", "false", "1h", ""), ("cryptocom CRO 1d defaults", "cryptocom", "CRO/USDC", "", "1", "false", "false", "1d", ""), ] # name, exch, token, stock, overlay, expand, volume, candle_width, holdings +======= +# test-specific config +test_configs = { + "APPLE 1mo defaults": { + 'currency': {'stock_symbol': 'AAPL'}, + 'display': {'candle_width': '1mo'}, + }, + "APPLE 3mo defaults": { + 'currency': {'stock_symbol': 'AAPL'}, + 'display': {'candle_width': '3mo'}, + }, + "GBPJPY 3mo defaults with entry": { + 'currency': {'stock_symbol': 'GBPJPY=X', 'entry_price': '150'}, + 'display': {'candle_width': '3mo'}, + }, + "bitmex BTC 5m defaults": { + 'display': {'candle_width': '5m'}, + }, + "bitmex BTC 1h defaults": { + 'display': {'candle_width': '1h'}, + }, + "bitmex BTC 1d defaults": { + 'display': {'candle_width': '1d'}, + }, + "BTC HOLDINGS": { + 'currency': {'holdings': "100"}, + }, + "BTC VOLUME": { + 'display': {'show_volume': 'true'}, + }, + "BTC EXPANDED": { + 'display': {'expanded_chart': 'true'}, + }, + "BTC VOLUME EXPANDED": { + 'display': {'show_volume': 'true', 'expanded_chart': 'true'}, + }, + "BTC VOLUME OVERLAY2": { + 'display': {'overlay_layout': '2', 'show_volume': 'true'}, + }, + "BTC OVERLAY2": { + 'display': {'overlay_layout': '2'}, + }, + "bitmex ETH 5m defaults": { + 'currency': {'instrument': 'ETH/USD'}, + 'display': {'candle_width': '5m'}, + }, + "bitmex ETH 1h defaults": { + 'currency': {'instrument': 'ETH/USD'}, + 'display': {'candle_width': '1h'}, + }, + "bitmex ETH 1d defaults": { + 'currency': {'instrument': 'ETH/USD'}, + 'display': {'candle_width': '1d'}, + }, + "cryptocom CRO 5m defaults": { + 'currency': {'instrument': 'CRO/USDC', 'exchange': 'cryptocom'}, + 'display': {'candle_width': '5m'}, + }, + "cryptocom CRO 1h defaults": { + 'currency': {'instrument': 'CRO/USDC', 'exchange': 'cryptocom'}, + 'display': {'candle_width': '1h'}, + }, + "cryptocom CRO 1d defaults": { + 'currency': {'instrument': 'CRO/USDC', 'exchange': 'cryptocom'}, + 'display': {'candle_width': '1d'}, + }, +} +>>>>>>> beef up tests os.makedirs('tests/images/', exist_ok=True) @@ -92,15 +164,15 @@ def test(self): config.set('display', 'output', output['output']) config.set('display', 'resolution', output.get('resolution', '')) - image_file_name = f'tests/images/{name}.png' - config.set('display', 'disk_file_name', image_file_name) + file_name = f'tests/images/{name}.png' + config.set('display', 'disk_file_name', file_name) app = BitBot(config, files) - image_should_not_change_when(app.display_chart, image_file_name) + image_should_not_change_when(app.display_chart, file_name) if True: - os.system(f"code '{image_file_name}'") + os.system(f"code '{file_name}'") def image_should_not_change_when(action, file_name): previous_image = Image.open(file_name) @@ -113,13 +185,14 @@ def image_should_not_change_when(action, file_name): def assert_image_matches_size(new_image): expected_res = output.get('resolution', '') actual_res = f"{new_image.width},{new_image.height}" - assert expected_res == actual_res, f"expected {expected_res}, actual {actual_res}" + assert expected_res == actual_res, f"exp {expected_res}, act {actual_res}" def assert_image_unchanged(previous_image, new_image, file_name): diff = ImageChops.difference(new_image, previous_image) if diff.getbbox(): - diff.save(file_name) - assert False, f"images differ '{file_name}'" + diff_file_path = f'tests/images/failed_{name}.png' + diff.save(diff_file_path) + assert False, f"{file_name} images differ, see '{diff_file_path}'" return test From 6922797ef19214ce2a590d0d188164c740631576 Mon Sep 17 00:00:00 2001 From: donbing Date: Tue, 10 May 2022 20:51:14 +0100 Subject: [PATCH 46/66] stop trying to open code on each test --- tests/test_chart_rendering.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_chart_rendering.py b/tests/test_chart_rendering.py index f53dd254..f98dd9b2 100644 --- a/tests/test_chart_rendering.py +++ b/tests/test_chart_rendering.py @@ -171,7 +171,7 @@ def test(self): image_should_not_change_when(app.display_chart, file_name) - if True: + if False: os.system(f"code '{file_name}'") def image_should_not_change_when(action, file_name): From 89279ca144763c00c6936db40d55cb40a4325fd9 Mon Sep 17 00:00:00 2001 From: donbing Date: Tue, 10 May 2022 22:52:52 +0100 Subject: [PATCH 47/66] beef up date limiting for tests --- src/configuration/bitbot_config.py | 5 +++-- src/exchanges/crypto_exchanges.py | 2 +- src/exchanges/stock_exchanges.py | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/configuration/bitbot_config.py b/src/configuration/bitbot_config.py index d33e2e6a..b49f75bb 100644 --- a/src/configuration/bitbot_config.py +++ b/src/configuration/bitbot_config.py @@ -2,7 +2,7 @@ import configparser from .log_decorator import info_log from os.path import join as pjoin - +from dateutil.parser import parse @info_log def load_config_ini(config_files): @@ -67,7 +67,8 @@ def entry_price(self): return self.config.getfloat('currency', 'entry_price', fallback=0) def chart_since(self): - return self.config.get('currency', 'chart_since', fallback=None) + date = self.config.get('currency', 'chart_since', fallback=None) + return parse(date) if date else None def entry_price(self): return float(self.config.get('currency', 'entry_price', fallback=0)) diff --git a/src/exchanges/crypto_exchanges.py b/src/exchanges/crypto_exchanges.py index 09a339a5..362bbb72 100644 --- a/src/exchanges/crypto_exchanges.py +++ b/src/exchanges/crypto_exchanges.py @@ -63,7 +63,7 @@ def fetch_market_data(exchange, instrument, candle_freq, num_candles, since): instrument, candle_freq, limit=num_candles, - since=since and exchange.parse8601(since)) + since=since and exchange.parse8601(since.strftime('%Y-%m-%dT%H:%M:%S.%f%z'))) except BadSymbol: logging.warning(f'"{instrument}" is not available') return [] diff --git a/src/exchanges/stock_exchanges.py b/src/exchanges/stock_exchanges.py index 3764065d..241116d9 100644 --- a/src/exchanges/stock_exchanges.py +++ b/src/exchanges/stock_exchanges.py @@ -28,7 +28,7 @@ def fetch_history(self): candle_width = candle_config.width chart_duration = candle_config.duration - end_date = datetime.utcnow() + end_date = self.config.chart_since() or datetime.utcnow() start_date = end_date - chart_duration history = self.get_stock_history( From f0e079845a66ef6b0ecac9fe6973be7a15a4e0b3 Mon Sep 17 00:00:00 2001 From: donbing Date: Tue, 10 May 2022 23:02:33 +0100 Subject: [PATCH 48/66] date fatt to stabalise new assertion --- .../test_400,300_APPLE 1mo defaults.png | Bin 2643 -> 2510 bytes .../test_400,300_APPLE 3mo defaults.png | Bin 2631 -> 2644 bytes tests/images/test_400,300_BTC HOLDINGS.png | Bin 2940 -> 2992 bytes ...400,300_GBPJPY 3mo defaults with entry.png | Bin 2816 -> 2807 bytes ...test_400,300_cryptocom CRO 1h defaults.png | Bin 2960 -> 2911 bytes ...test_400,300_cryptocom CRO 5m defaults.png | Bin 2780 -> 2831 bytes .../test_640,448_APPLE 1mo defaults.png | Bin 3780 -> 3386 bytes .../test_640,448_APPLE 3mo defaults.png | Bin 3597 -> 3653 bytes tests/images/test_640,448_BTC HOLDINGS.png | Bin 4211 -> 4094 bytes ...640,448_GBPJPY 3mo defaults with entry.png | Bin 3857 -> 3609 bytes ...test_640,448_cryptocom CRO 1h defaults.png | Bin 3930 -> 3922 bytes ...test_640,448_cryptocom CRO 5m defaults.png | Bin 3702 -> 3762 bytes tests/test_chart_rendering.py | 6 +++--- 13 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/images/test_400,300_APPLE 1mo defaults.png b/tests/images/test_400,300_APPLE 1mo defaults.png index 3ed5546a58b0e14b25f013f5d4a02a8072a5c6d1..02cebde9e1b172b7952e4a68427aa4946d74cfda 100644 GIT binary patch literal 2510 zcmeH|i&InA7RDnc2M9qBZ-E4neTSzGR}xVKMBv;aBp6YHVBsPL4X8X@U=V?5Nf4ol za>`2{BDW2Kj2BW0!77#@FC&Ri1WhGI8jw`W`%$enAti{6?Z0q)=Iog>d#|sP^dM?(s0yUyEHR&>Z2JHN=JQwdT5VEqgk5Kj=!J33H+ZC z2%@+1P$-B?@qrJeUYV40(s)}?sEEnmy%xgDd}dgm=kQ8388x!*LJ(LG-`vmv^ckv{ zblKw*vF8F*PXs(oJjW~j?a86m-Mw*mbmY*rRQ!nL)#*7^noO#HFFbtb;*~dZ@p1c( zPAhRbjm_n==`p80=67)gwz=$14PXA`PC*?rLc%9mX<(d=v%EA`H)LuK4=c|!^E;T{ z8aK}@I5gVix!OeoGbihG+$nJ)A_0q0K#0@;sQ1(>ZQj zQVl0xdG~3~ZZk($D+)MCZqfvSAbDLFlu6R#uEYhlPVRF$@$$r2?C!HntTwb85VZl+ zQQ*cQL<@GDTbKM{LKK`>91&BRm++u+ZN&#CC>Owg#Ko1-dHZAu)i&PJX?_}agqGPf(P%cKSau)J;h%i@8 z8ETlBCN}l5PdbQnJqX6l8p5Uq0*~Ud358*Ct(CSoJ1??oKMHcYKVlWy?w8D7IAL6( z0_?nh?p`ju7I5-#iJt7XK`114R~uNP%~5(IQ8*LgJ7kR;7%5{(N;>j6O#gy)r4!tJ zYmr5#W-yRvruVYo`bgs?-j1wJ+{5w@;H)rRfxfIrH<14LbT2!s16CA+orB;Mlg`^1yzuo_4xW+Pnczp% zqyAE4S$>YRU37-VXWl-HTu?0{x|mxFcI9qfBFwTOitRrhpDcyzuePmOmNy7VwdgZL zG}Ao$^Hz4m<0yj zT6BW#Q06W7oc-Sk;a>k}?3ea3Oy zR(qicJTU78m=yMQ*DM_ErzRjC$R*fZ(CX-Xbh>K@U&T*G)_Ub1L)?Ex=WZ~s@{T|x zE>P`bV$NyWzgCK(Xu5s?a!c&DZywsS4>_-H-d;0onAn^TIHO%)@{ulOcjieXx@G?` zp^6_2Lw!hpHcTfhH9=JX1?lpu-LsQi(GE!LrX_<8u&!UyULxtmBM3TW`x_~H@6TTy z9sN`hLJ{-=$7hiZ8JjK{vWU!dhA|6rLTG#M4k%Z9c0luV+W%YhUr?_uFN?b>h{PXp zxkxCo+gB|%`> zhg4EOLuS7>>UX$iuY1bbzd_p5b@TV!xi>6%Y4?!B=(teoaJ>6=eSos)1ykWVRd?T9 za*i;T)O0ZR20`g~IN>|AJ5UxO=@z>@V^*mB)4c+ZxiM!ornD0rK%zS4?oqAnF2 zmhl`fJzyFdMgbf<~2S;nPByS!@JC^mTQcSd+|D#4%iKb*5cz5t~-n6_QifAEVv z!>0mvT7)p<7RmDm|dt7)MA4UDz1I-;SNB_w^@FZ>%8V~Zk*}zEQ7SaV#=NXpZb5(S$_Z_>k4rI literal 2643 zcmeHJiC0s{9u8vCn}om(0+B^wQZ`wHv`-O1(KM7qSt5-T*-dz$h+*>xf&xmAP34L# z@&GxN6sg!~qAU`XheQbiRZ+o2Er+Ejkwq%YV>2({)}D9z7rf3nb7szW@67Kv-+bTi zOcvAAjes-2p-?CSgHH2Cq0|snw}I4Ehd>kgx`vo}b$imUSyPTJGmcAqR>g+c8(HFy7A zQj*zJo8-r~h@M*O0H?M0Q_AZqzJ|%^J+?g^y`A&%4f!eIQ6*PKM`~k=>m`XE^~wH& z>r7}TCI#FgZ;Nxj-#7Soy)fMDZBg2v+cecITC3EC$=^mG0eIQyK>|2*;nGA;;`}x| znXl=k&04ztB6gfCdh*B+BB}%S$3M89Np*oiK2r$`WtKNTuGo^f5+XJS(CMB( zmBzQ7pTJTjOVHvvzAi`nBKGC@H93>6+A%PphE?uoPVDC-&ZvX^(aqa3zoBz(e^*$7 z2K-gy#AC=HjcUZ9$0@WF+~)DAmesr31P@TWOkqI7hN!xW z$bW>5kJXyy^#M*r$R;q<^(B8})QY^-j~A{wL&SapHRui+JVbl&Smaxg!*k2QNjjeK zOX}qgF~vc%h`6aJCAKZ37L*T)fo?R9I3LNk)*t_swWZqw*g5)p`2!b5^2KPf9C zrIumzz<8WztAnh`WZ_Y`Wu<7> z7|GuVK(b5IIbKk)fA40O5nZAPPaT|0CIYWxFl8Wp{$c>F%QYx-$EFvlAFlOdYQtEp zR9E{(`Hp?&V|sZ{op{#drU^Zx)%=Z15*l{|1sSQ& z-p{uJ`FmX=zCh7FOT**yf^rZ^YZLWJf&u{G=irk{xcfdB3`zEx1 zX5edRSO4IJA{^t+@D}OQD;QZSEHZblHPlc*Sy+R|Ve%Zr9VXv(;Atqj6E;QZdH+W8 ztT|+5$TS4KT~mar+u~d#dfyy|rS@6a7jf8)YM}V=w{$z51FYoJ*AOvRV~j(hF{Lra zNd)M6z;e(%F>=@(cvAMEqvui;3Z!Q+0+LX2r9&xVbXEA~bif-zOFJO z_XVMLp5-w_JGrqw2ktzZ?I!*8u%&Ez$x9Hi;v#YbnX_)pJc(>Ck`QB;Qzd&$OsiLw zqXGLlEQ;@V&R?3Vu2dJ;t7?M)hs`$OWByb>{=zzU3E)SEdrd@$$e9bA+S^U$o1+~_ zra2}O$Qpz!r}|MYXhb))r6OSiVe0o#08?*vra9k-V`s?3KorovF%CIwuFgBF5_@Hn zv-AFiqlk}v)pkno4{Uk0=1pr=om1(%F?d4kw})Wnj^8uNDLHH1{f_hWYlC{I0w*Us%-{?uhqWJzVg@BEI$VdWn;eAO4fky>#Qf z+m&fTcKLCxFE%FZbYDd@B);=5t`J(c8Qpv0%CwN!7oZEcb6?rH0qf)0TK~fR5E+r< z#97$!)f6$;r+M~HWTg9X5h;%u_1&{`@N2J50o?qhseZ(!e;7#g*OR&Uth}4sSFwemk`3N6j2dNj0i6k!JvhRW8fwP2y&OY z1gn-Mpkh@bG!QF;3aKSBXq7%eS}e#U5~-k&2ZcPqqILC8XwO>bhx6^V_u1dK_dX|k zLs)C^RLLk#OQgBXvUYOcz4fx;HYKQ3C@_cmB7(JKt(Ql$Z^EBKiDqYj+z4;y^xlSe* z9$4ouP@EA~2^1K&BAa>|ZhTvs z24;P2oXYs+a81hDz1l5Lch<;jXK(nx0ae|JXot?!OoU~pZlCmHba&;PIl8Glk$-kS zFZ*^%ZfKHk&U9NHZ^A9Hg2k3zFGFAkzNmr?*^8SwaSH|=o8||E+Hm+S< z&7NmhR+uI2Nf9+WZ+!usez2+_Sbc+2efr1TyF2hH<|Rae=Kl6l5RKOZxzec(d_ zNa-W7Tm+skvzV02S5#Gb7#IOI`X6i|Ye%jZd^fqtd7DfTtMdW3W=b(obPj3tm%9%d z2hD|qB|^Y$!PV95QG__+j4XN217FMsc<#1f_|*NVn{jT(lXW5GN_#rj^FrShU6@(AYYVv#5o6MTl(J?TXmayBGPSX(zh}g%rK$&r zP&b1V9HiXh5a*4)@}^1`j+~0VJ0psm4bL~p^keJ&nYT0w%nC(UT(Bv9g$36vCjG8- z7POfVF&53Aj!k!x_W+dx^Cw@n#~?hScK6pFnh5JfeY=U$^EHpbN zIO2zfNIb#`dGPmV5etRMSW!Uzb}YoIlto0lz#)TKBKZKlV1;?5w{RUA-x$O0M|LWf=&>)GKD8f+$X{;-FF^AR4@>w*L0f=E&;x&BSmjpNJ*V1Vk&Wjfu%q%443*tO)0=wTm{f|k}+?Z_(&)X9-KCaNSLL} zx$l6&q^|s9h&>Hz6P0Bm^{E380T`?J^_NU5xQ|3URN9r(GWgUBB1U0(hkv#_B@#?h zmqL-QW)XjMJrO}lVojW_sQ$&)w%rGw#EFrBdaET+AW-ZRiQfmR$Z%iwRS&8)#Nt>} z@^X;%Eh5heaC?hcuSWIUB>#T6k=i=WvITIvgcEu%RQQ~8)VC@eX}YH!6n{vtxW_&j{{t05zxgLL_M*k@Q(rHiJwP3n~gp(j{$Ve7x}h*I+1}# z<4Zu1$fE?#gi=8mCQhc}#8k__Td$C<%g7XTaV9jk@}Cw)=@RNjXXcjEgkI$nVvk8RO3jm$yDv zUklcj2RgG)u}oF=wiERX_!-xI7ypdwfWS0xuxJ(Ei@CpHcXakp=RNnB6D&uiV%O_e zs^svb3xk;KTg&M6QE#F^3kY^Ej_Ec#)U1|W3Z6rG>1@Zh0JEuup@CDwY*| z`r_i~%K`e>TY&lnWkR9Crr6{G#Rn)G)4E!MCPPnJKJ1hn!nvhG30+6dm0hlx4yA4` m3r8Q~DBtwoSN!$o-~2y=@tqXBpzPbF^KhVl7_%JWWc(lbB@B=N literal 2631 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 EADL|iL;wH) literal 2940 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 literal 2816 zcmeHJ`#V(Y9-my7OJj{oa*0`EoVHtXNfI*4U`Q@QY`VC1aAuE~o!m-{CDViU3ZWX= zHnwU%DVIVR8FL0rH@7wt(I`%0Zy^-Uu${;5r~L<wUiKUGMw-e7>LW=UEp# z+?=+`s>@<9n61tfG8Kc_f{KPAATEjwM5z3R!H6w;xOzLRuC9tAYvb?hZwCI)7&sir zEx}-%C4hUyE<4Q@)*~wvm@_D zvW?#e_`0pPIg=)^f7ngk5$ni|dz`Yd?Q+SW9=GR}`5{YJo1vu1t0Da!Zgsgdhno${ z?-#Fb6N7^5+zhl?F2`~XG?pEkexyCD%GqhO8F$B*`K{Ww2UEXS< zAd%CQiIQOEIW$qw{{m;~$chnT%m4BXvDCY2_E9v=X5e9J?~Ba9$R<3J$(1rgZpc(# zeTQl*kCp>!`n=w$kHZ$C4D_I1?Xsu`Tg)V7FIO)hz+jcs28_%ygx4Idm4AMDC|(RFL5n#L zif%DMlRU*Lv9)hnD=*(m!k4NctQ61$BuH(dKDDiC7_)L+Hq(Ti#eprvlO9NtDQ3sg zzWv0*sJg!HRIiS1gJ=yWsc)RI)zKN~CvCVQsvH#T6I$0!LBKxuAMp=pD_usjQ$~4$ zA;BpXss!{T7b(ED87sg8ES1?;dITxkjv)Q(N(`sxlJ%Y>d3a!xa#2B2KpE!rDBy|N zDA0O_d>DQKW{Gk&MHqW^LVCiK?A%rQn@(>IJRj8A(r%H82EmiI!zh$DAqfEy($F4A995ioE?t$NemsEkFKOuT%v|lP zs{=*3){xjF%mYoYR>Mr4X%(pR8kimA2o0asg~2W?%zLgv(3p5EV)^HbXfhnq?Fx2jBdkt5aeTJ}^zPhs2LK+ZKS-%pM7%q3*$srJ z>2kMj=NXt>LmAKT!lbVRV@)7pr{6oaUz$L8^l%kl853EJT@q?1TnNG~^GgA(UXO?T zk<6fT9uH|P2_!%*EynBfeI{yG3(r&5-b}JDv!vAJ81)0;qMg+Yl?XA!9cglU}8<{JB^hb)i@r`t?5tG@qEBT!?`p zE*&u=0kBY{sRR0C)eVL7H_Y0 z(JU-&P!`TjivyWx^rouL=b~bOABlCPjl>heuD{EblG^F`P#iSS=+#G+!E&!;cfqbp z9Yx;l{}^4aeX?Sf3VPZ2J=5bY84kgdOt?#he&291aXLIHDj9e$+dmH?@;eoS^R3fM z4F$&dLxH^1qhB*mYBHw?kCb0vIh98>9s7s=9=A4O9MjmPiZ z8Ocs}TjU|Jz9|2*HB#2xBw*)rG*pAJi+3#T|(q^t$b}O8{+u8JxBp3=g zIQXujD-X}DG@IA(r*#N*>PC#FnhoiF?#odH!lAdsHh(0}JUwDMJ(3sGAE;RNQI8u` zr0`Zdl?TsTuH0^+f4K~P9?z)py@rI^y7Ac)>29G`I^mS(d^6m<3XN`W(LlXcAt_yw zXK@DNX@%|lT&(07>)6nt3t61mGyYTxDzh*LqOk&ccz-LC5}{!$J?>bszohlwsqmfX&9KwxHL|zvbr7Zw_a^dFyO4nV12t85D_xm#K$dS)W q2~Ks2?oh^wVj9m5_|soXvf?U+M$^4RRX* diff --git a/tests/images/test_400,300_cryptocom CRO 1h defaults.png b/tests/images/test_400,300_cryptocom CRO 1h defaults.png index a8b2793b1474dcf8a376c98f7fb72ec69f56caf1..ee3b4942bf5b00a18b61f8e41ef66634ecabed7c 100644 GIT binary patch literal 2911 zcmeHJX;4#H7LF|PlAye>iWYVS~Q}?^~ zoH{ATT%9*zwqj5y)Fu}O-2;W%z*UF|pscVA1nJD6P)cjZj(9rC<#L7PtNgkCWZ?gd zf$x84E<&LIybGP?8I?c9yT&RafT&`*{8eNr@z;1I;v=gsep$(tkB-oTJ?c$RGv_l)@xgPtjg|{@Ipt}V|Tt(`>Dg8qgE|;?V(&=)+v(pZ|PfuI|Q+V>w)&k z)GkCgaonN30`wj!!%Bp+0jX~BV8Ei$o7#yU<=ogSM;UG0eJ5MHZ#dyH1Ahjs?WIZl zOZCTwW~&yC+-|z?aIOCom;fG7g4z{_fp^sriZayx3q=@}ebHaDkl(Xb`n3DJ$KRD#5#Lo4YU;v)IJ|LSSwI+O#%*{2N8{?v#n_CW##D;SW+Z5$UVy*LDL` zZ23CGvdAxWO^jHfdFj-1UNT;iPJhvYWfK=-Z z8~y;vZil?PX@Yc$i(qk~Jyvngja8VGFR;i{@j!S2-|d&sPg<4oaeX*Ks-W<^I0*LD zATmJ(aAy@ZBiGfBOdg`b%gFf4@X+&HQeF0tRG=anLla^26vPN&-3mM$ssyqBfp=mQ z?9KIIS(}vOQg^OhF~}`o)@Q!m?T;|R*>yR}(0&X1EWSn zZQ?t2KDd-7>t&v@7ePSA9H=RLwUck_M~cL@U9o|w1bXjE19(tgKq8OW!I^W$)Zh{h zh>*t(`7BEgSA7{VX}hYUU;XxKIk=KPY`z9FR}8ey=Hkw7YxHW$1)oTOAQgxgUCyl= z0BDS@hzZRvY{d*0ZuvBoliUFII6VLlK6PXyF7tFxJ~HNr3e}+mS=DQ6g_`EXFr3Dn z6<#i5)veCKGW;QDhE1DS=7eM(M-;#Lki<>GqVG%mHhy0kDJg}Su?T^m>JEqF6TuDe z4rAem-3w|EPf;rgvSC=9)_wE-M6|wV_3$QyK&Ch+qaXm?jw60D721;cDFUD(%+5p_ zXx2w2_mvq#@2msE+~$5e3uHF?iI%m>0ZvqkO1Fn6qn`U~+`1@Zu6|r-3qnCX3(t3#9tDkc96*XJzvaiMEBpKcKpc6=1s{SlX-A+ z(6lxbXBpRFp#8P*!z&vc_28~^r>Ak1VKqas@Mf8;MxMrPo?1rl>inq|G<<`}(8J++ z^cB1SNPfsQF3ndbyl+wkGV+mf1|6P&k3Z&q_Cg{yC=9}Al2rFFNBHsQ``Cje`_bQG z==rC2I*UvRQV13Ym03b(`~ZEjkhKN&BQeo64h#~2vpFhSa_s6u?<(zALx7Mw{rw*# z2oi?#K*K6mlO7G4Jp!JP@QTj{x#7fC+E654ayJl>=HO(Ppqd>phL%jBiO66Amk1IM zS79>x_`%lNP%43*O<-!e>14|D@9o+12TZmVT1WuhWhbDtl#?-n$mSgT+Rc!Jvub%> zcR?$jI|@rp*VikPSsjJP87A)^z?R!?=T04|**58*pWcR>*3aX2Pd?<8k~I%3|I|`GGwO%dBPotbR5yJxyE+d^rx8{j-Gr(PuCPTi$T{%Sqp@qkE6ZcJ^T6DLd9fTV!^%>Di+U^ za!yLxpc0?B!uQyvD@HSC{QZZ{92ENM^qBg|SFdKxj2bk(wGQ$4$eoW0g8IH-*NaDs zSFK2~i}mbLzJBUb=`5e?x};iIHrAIn#j9*OlYpylsagoOx$RXR6+RGiaL0d+K%d48 X%!4iUlQrm@gM z7R#G8ThlUEQ&AU%jHr;L$;~ph+_{rer~AJD!h3(`e9!Nk&-Z(N=evHsztek2F0yMk zt;Jw4vaYZr8H15P#bOLdijn>>r9Uv3Rm*$ayqrWLkr??R|D1m^@PC$pz5DN#U@!p5 z)zQH#u~5K1U0tH3xCRu7Iz6WqUvOpfGLCwmeep;2j6&8!_C`sJpATmt=L9i%tG=gZ znc>DW&}&*vrL`Efv3 zns17(+JCgd%S}w{0;%JJpA%o?`|!Me-Zs2Rl?vNT3131}y~~QRUT_m9#iXz+rbEq> zy?sNO^mrzaTBt_``YXLJ?veSycX{=vX>_09;*9%v*GoVWg<4%H&1E#VH3Ar z#~=y_gZ1%jC^8s~{Q-%5l`R<@qX~?soweFr8|x0wyS}D`A(01I76ZDP$*Hg3Z^GfD ztIj)r_lQQ0fZ6EX*q|j^uY5Y1S*Sv0Sgbp8C?04ON4!$7omAcfB2^rC3M3>Yu&jYF z$*-DkEwa)G;;LIOwU!?!3zdU^58XI3qPHKMf6vU+XPVd zZIRC#tq~1y%NA%?h>m5{q;kyBM^m|FQ^1Qm&PxKsE-7Rr7hCOO=9+Bsc|k|#EP|>t zshLGx*DaY+*lPCyBfU4buxcdVo{5_guUY9*pl%QShr?s$u3#y1mN43aj^-C=s3QKQ zx#*S9TUX@_O6R;A_-kc)G&0bCm(NWwQIlu%S`j>NSfx;{A_sb|p`WSpK8YHpT7>;J zq(r9FG--m~VY>L+_)ZE;s4PS&;dE{TaP6%+v`aDv>kHDBuw)s?kzN>JL^K^)+%97G zn}b)Z>aW;kdBHj#Rd5M$(HswCwTiTh3i&$C4eTg0{OLMcdmm_Q?}LOrXC&zDG^#c} zz$gYh+vo=`vV<+@Y_cafZqLd_g6O5{PCSPhdOrS%?-LmVIa>%D;}U`tt_JzguIN4T zOt!P8&Izi#T@DtBv?xGpJXIhj&znBN!gnP;u!nJk$&+R13{DQxP{2`ZAovitB)Mn? zj!HboF*VG@QJ=`&9&EFXvT!WNK zUd#+N!XM|*_`c+8N{?-{H<#90bNm=G%Cn(C4R5zY^+UOKrXfUu`;*$HD$o!z>_wJt z`N2etA>_D_jn)Pfw*KtRv1+|F$=u5cjxok=R{OhJk9J5LlAb9COYsI4%*pWhl zm0x>p*Bq;W9*ttF1EW27Q|*_R$<|P1PbM0_GJuIWXxDGt*_i4T_Ufd<VL*}XIQt=Z}}nZGZ9CRscL{0fPAn&II#*#_MP4fE~ElsWD5xA ztaL9g-m_y)MpY4Eh}$~(X>A3aSEh>0N9MNhOJrn(pZQJ8E&9hn2WH%$4`Q1w%Pbvh zBQlkbXHme)-NV3zsP@1Qu?A5O<_pmuD=CUT$PAaXLw3vvnb{opY{($w_wGTx?&6$J zuApC*DSizYKWn98Zr$2UN0A}7-bGnRIXPjX31y{!q2h16`@duPH`*P90;fljeKRU= z?0K3ir2CD@>XQKR_6Os`NkOE zT@!B_F&G0@D9KmFB;1rrHPL{$Z$L-mzg^3(Ec*c|4Cd;7lYqG8hs00*hn@IBU74HP z1QBj#0kwInW{$KF5~i|+f~`$DK}}creb(n@+{*RYH;948r9n#r!`BlNUcFr{y0e^L zxqFr%-@Z(Y*?N*Sd?6luE~q)Xm?CM}-2Kb_%>^YB^sSjHBGQpeVO?A0%jpM`;~SQa z7jXSV86M%(;Pf`9*tpSR)#w|_?rJYB!>KiYS{{0+P}lh{OKZV4_csf|y3?$W6m_}( c{xiibNCy`gmpls|UHYPMbs{-dLi^MI0w#adKL7v# diff --git a/tests/images/test_400,300_cryptocom CRO 5m defaults.png b/tests/images/test_400,300_cryptocom CRO 5m defaults.png index 5356fa6a50a06a252ff537964187a020699d8391..2e68625faa1c33a1a34cb86133603b3b392c265b 100644 GIT binary patch literal 2831 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 O58EAZvM#rzp8prjGGG<} literal 3780 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 X-F|KVDLLDyxg$qgSDU=8d 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 literal 3857 zcmeHKc~}$I7M~dgOv2KHMJdW6JF*32m0$psMU+@7i-HnFQW0bkP!NFuMam+92MB^d zTLVaCv&g;;wKcVDK4N7lHc>WNgn-b1fN8LcwXgl&^6%?>-`qL(ch32pbI<)|?wO=R zPIlrrIUE20;tuwEodEzs002ZWLIOnirWQv4tRFgXcpsn77a$w=-`C$2_&=+F3-!yJ z03h1yu-E!<#ElnEQqB(TlD7Kb5ug7&s)MtsPDbb-X{dj<5ppR*=Ug1|OoJ!D>15qjL)zYlB(3KY%G-rV^2JB^j@8OWnRl%>R;{VMYjED$gjv4<*C5-w<;`R zRv3-p-7lWk^(bPAJn5G8ue95Xwp+!YX%*iYJ-3qA>(L)nUmoON=(78hrP}eJHWI%! z{V4^n6!y$(5jHagCHEtjC6zvf?KMG@99micdEv=Yc-rvL1arY0G|@o+d=R;=5v+Q9 z?V1};hBJu`Rzj7aZ5ZOmz$Qpc8I1!jVK$&?fY%qHkFFhuNS2@kEV~yG0!0WME5sT$ z!&C7akZRGr`ML3+$W}|msHorjzDqab8?IWUQvY)5`3HZbNoNV?-VaG+tJYlM6d zxjdzbuHMoT_fpKnb12gqXjBNR{}Ij8CR~atXB$ltOS8st>%*lu(T|Ksyb`-~Xf33- zqWA&pyqvJv8i8|U8;;9n{CHRaRIdViKkWzfAyQ%>bW!Yji+Jb``BstP?P!s@)n@^9 zkG+v4uV~3<9*~$^&d`q@)5$<=_FpHQx9jzLUQNoV*Y-az2ufcv%9&I7>xWaz!!&^W znB}=^J9_Oxo}≷7kdf{Av@}))bpwIJ;Ol-k0P9z90`^xiXgB#Zpi}S!rXK4WcU` zcEVH_3-nm9?$I9!E(0D@etHE163-()h23ohlmcYvh9gBPfP&~^gMDQlj!)olTwf;n zt_LCt>Fhz6m}*H-K?U6pFV}Z}4!d6g+*}=%QNuL8<1tXr6jO}>6+#0F;AO)%R%z=& z72OG~(Ki_|TfpcaD-P~!X3{^jdgnFOmtuQ9b0Sm5;6oGk?AKC%(=>>0O4N^!*6NO4Wnr$>sjUP^Z*U&e5AFM#Jp z3>sIZKg_T9h9kPL(6AaR@k_emeoq%7hGP6eFFYOM>ral?@@1|&Oys*QXfL;@Tl{c? z>R~~*fC8E#)!O63`x&~F4*3Z0fk-Yx_x--|G% zv0TUXiwK*GR<}ES4@aZ}bOKeaNTk7|7>K>kW-fGCEEgQrfDtG#qpp9HhT&$e)5VohF)-!}{vB&L_n&&`9-%YrTR?j@@Y1z;PGS)R$1esU`JqFUrH59K zj!t`OzGzM477SMi8dkCTeIjpDdMiDSMl7VFnsm@0HMCzulIjh0iJe`3PNyu= zH~w8pP&oy;ZVkH^0Xr{Ys&|7l5dt+@V5yA8_pNn>G2V!0@9$|YY&16Wl%~?~;O0yP z?GTI15+&i>_xB>g#ms)A!X2h8=hLNnUv`c?8tOt5 zQ2oVDFi^rvAKi0Ll$!+bu+?#<&@j7-X)H};!?}Yl8x%FSfoUl!%?*64fp%5CS=zCD zkqBp~Yi0*32=rH0&0B>B;(_y~xN2c=Hc*->3JpKeL^s0?%^x7TH}uf_i9u0fDiD+- zEV~b>?}Snp0+H|C^bKx)2@jZpKj?`PlLbnDxPg6?J}v#Ti8A`VFKDYJN2UL2^R2ni zMRk-2wMbHB!Q)r~VHGTEi?~5zDyTMig}})M?qRt55y5+;h7!q&ob4N$+dDvs`jChb z2P}6g0Z5z<`r(_$_Z7VwdIfV9P|s_BVmsgX`W?b0X!Jd(<-!u-0P-~^c=1ch9Z1I( zQ2}l7oadJSp6S9SFb$Tq79g(1<)fCxWtxJyJIk`=Y47^z{tY;*Bzqfl01~A8`K@Ll+#tX$oCu+cmZLVxo)oedo4&pUe1YvAw@bzLPaqefn$nZ_m5ep3oVyC_nnH z`Tul^np|OjagHC&V^y_oQ93w$Z|mz}N+oPB>i5bra}VNx7-iE+{cz66-3*!r#Ar0) z=e3A1?#w5qrzqN-ntdI2iQX%}Xd+gC|G7z$oMInaB$;WA5#BaV?;iZWwo|{Mx7vjQ za&Bd``7l0%PcaTbM$Vd`oK_ZaReC>Si&L{wNqDu%ZXXi|ph={dJ5y_03Me_WeoZ6i zqp4ZWWgdKghU3)?SHy6Eoj$aF<)aa-9>KOM;HJ&_oG@#lS8Hr%wYv_`i#7D~y zWP8J<#e+wxUW_@9#GDQo>B*BHh`7^ZKa!B;+~KnALrQNBjgq%7)zQTgy}P?CjBH%@ z&53!UyD@6S-qraT70D^^*&)lh`C{E?$BMnh){s}PQb4_;$~H4}Y-jKa@X>pA*+K_8 zce>1#mRwWRGn5}6Nt!n#>yrBdE}sRRRF3JT*jIwPi1O}TC7J-f>Wi~p0~mF3NR@a0K|JOxsm!iL&mpVQt-8*2Pd^M@S6 diff --git a/tests/images/test_640,448_cryptocom CRO 1h defaults.png b/tests/images/test_640,448_cryptocom CRO 1h defaults.png index 481cc7d9c19efb76a36ef08b7ce3957e184d1b84..9521cdef82d0dc230cbcd0789a049f0e565ae4e4 100644 GIT binary patch literal 3922 zcmeHKc~nzp7QZhq?14~~MId4;#Zf4Pf>7B)MWr0sw6e5pK~Pk-RAf;Qo^63z1U%AG z6e?PeE3056vdB}WI1Xj0$Sx3BL?Do$7y=1oUZ`5y)6UE}^XK%PyzhPAz4!gTd%t(L zobYgSQdQPb1^`v(kGAdtAYlLqu80y8xr-aP1YyC$W%o9zR7y}}_g~jvC-8rE0-nr! z7Xc{h&Raj+9iKnhmmYil18r>QGcjYvrEu-qCtFd;ab8sMf%LU+bFwM}E>9RZSA{P~ z?d%tmlKkKA8=M}P2%d@w=uGraI3^kME^QeL8?!{N;sI8Rg3pdrn3@$8fAY?mshDO9 zJE2fibpSTrOhys|>xAmJRar+Cg8C8}d~slaqZP#=#qt;;aNE0ZJYIC2!fbY=Csk4% zHRjYy>ADLQPpS?~DduqQ9GpI5eY zJ2sCLl=Rs^J?e2`8GrY9!$7}1yJ_Y*UnuG8DF+J00US|vycNiF3qUBU#IiB8Ji{n7 z@6o%x2{xzu*8%!FzHDhPCkhy^Dky2%oEl7`(_g*$t6M{C_C|G9{jtoOPJ*{COr>Cv6+>eQ6->b`-GIf1pej-0?(MiLH}?jc{ux z4btw;KQKeOwt9jdH6+POk%_jG1)GNjO1S2Ad9D}qTY*N;CRn^FaC(-*HtP!m3eE1i zhA7i%Z4#V#O<%>6*p{xlsbFH^V= zUM+PnNR=nJY*esK1^=4#TPH#3a%H~iAUL(mal&ZK?m1NYOTo0>>vbYg;>RK%zE zfcwUUjRLk3b_Nk00XLFBqC?J&_pU_=;a{8_73>1>wBu}SqIWfI4Z>N6dn6sMlzjh#EB`~IPSGGylBry6_g;~fMF(Awh++4K>c~CCQjG z7af;|2QeojQ^R5<1MPF3EzVEDv!>t{;C0 zFV>^ngP=L3ftQ2vVxwWOFlH;tIKna%2w@O#U_NoA~3$oW=D;P3Soz7;xF zVPZm-_{h9@aJvumEB;6<-(ADIq(BWn+cOvY5l;=jS4-mTY}o9Mx{ye$DsQkNu~uOE zUK;qY81qDVAFG^k3<;M-ouTF-x9$CRfun()kOOm48K)i$`x6S}2nU9?dOrh5N6Uy| z2e@RCxHrRq_dIeRlxkr=B0ekL47Rxi-He=vC^v{$E_nX{FWV-4aO!^ z=9ZOMN~eN4{sS1R;ivy-_yIA|gvVWGm=RlzWoZr!DqfyrzC&*{b}f@Es_0V2XA8k6 ze!&3mKGS4>984^I_4jIGDG*wnK-0!f&`eQ*I@TDB(lszxRN;mj!4*$=R`B`Zd(YX; zb;84c!$;^7zLyFP7|+%m`nK}8z1`C`v7K<#ufMsy7$W;zvL~bD%jT0pr$bp13nhH6 zDvQW-$?c30SDJ7r5%NpLqB4*;xgVpZwWM)_uB9JcH=lR>w2BsRY|B$2Gpn|q_T-yj z1@57~`)O>m3W@i0oV+M^JLBd!~Cs%_MmJ3Gnooy&5^tI~0k4<-kS`D*xB z>Vyht1{hJ9-fdzZnYTb{tPXy(2jLFuuDb08epI4V^{(csiS2EP4T*)3TvtR*4X|Er zG;%DVQLx*cM9$*B1`ao<_!!}eGzee+CEdyLTTWWYk+Ztw+}!uE6xo+DgBBSqDlot* zKyT?)W0d3f4;B0djR+U<3>0mURVWp#G1`m6Zz}}mAk!LFB8uD(Ww7Va%gDYYu`b~i zzt&S!5R5fuBTQ#7gv)^!8SRnUzUNnhetW{#HqH%&D^vd(d2Vq>^A9@o`;Jk|;t< zf5=<1O^`PgZFsK{?ds#@qXa*xt=MgQ_#ZwVQEnnE1Nn{@Z-< zgNH^CbGUA1k&?M18y?+#*@to+1Ei8eOvUq=lh^ofN8NaYT>V0~T{Z4Y82@R$E_L*H z{R+(bMt8dUEM{FT3(?*0z3!QA7KHwM|HAfl?iV7ElMM$X@(l{Dq6XtZWhopIiaZ~=+pFp~4BW6u;&m6qe2^^JjGv!tQ5*hgI&A-Vsjhp2 zL@Q5CuclyOdwchgss88nPZ?4L)}W+5Z%+4)y;$DIo_tP~9xf5hIaLlu9hD}FR9j2! z6l|j;G1zE}bb6HBtk0;qR5#Z2*P%_d>zmjF@OqlZTe*I$V2*oG#T{XQOvcE&l+uXL6Y+-)>FHd7W$^ZZW literal 3930 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 diff --git a/tests/images/test_640,448_cryptocom CRO 5m defaults.png b/tests/images/test_640,448_cryptocom CRO 5m defaults.png index 74569bcd39d30acfe53f2051ef4e8eb1f5e98da3..6e6c0938368dd69b6fd30f5f6afd49e7f766d8a5 100644 GIT binary patch literal 3762 zcmeHKjXP9nA3o=psTq^Tn8fM>m9HHcdKVE!h=fp^$k%MH$Wk+r$j8iSvmr@sZ4}Y9 zqpUaK%9d@&oLwu)SJ5`aWMUbbGQ${}jG6b;R&VXQ@4kP)yXU&jxvuAae%J4J|L*5G z&wWl#z*a9UO#@8;0JOX}du#&$2nGNU!D*lfmSZ7Af%yR6&o`;nY7}{W|9$s_SpD&O7ROpZqU$Xeb2ydiTZv|k4=F0qS0*?)WX{_71^1zf*zw2_l7~h z@XFj(wp!i7cNj5wRmY#Z(RQ}LoHuom#_pia$wW!d%ez);uc*M3HQPK((BHxK%R55;S+7NozLeMf$=X-x60{30W&3 z5zASc%=A`?#&SymHs7!?e$d5gE1aq2Uol-CDe`qcd~pL!J`r2Uj~Q%nEOZfUbI}^k zDMT|cNsmppz#jNh=Ae#=>vtIaZrw*=(X3X*&T{{5OLkI+V`WIwFh+kBQUbVRddc)` zAPrhXqWiy}IW*2Mr$1?cqnt zG^>}nfDui%q302Xm=rC0f;4VYG{@$dm>`$ZurJA=of+~CP(-GqwXYGG;-6><9U~5* z>YU|)Dg!4!TuoWSC?;5ko(NguYaGCHnBHQ*2U;|)DU*o`&PTGwm6zi}d5hy3cjf*` zd)6MX^IKVlM6}dH?r8Ie++7uJ);)T-hW@S=L9~0d2TZN&yDu(mv=k~IPMc`3Ym4GX zzs1!YJk!yj1D@M|{rt{VNVlJzY}XSSj$~v;7Pk4>ow=%G6bP;PQ2EUd>w)Iham?nk zK+eA>zi+BGa0sz)5Mwr{aTqG@ zgt6? z26Lv=$7S1(#;-;<*MCsI!PN#67W|LC91Vm+moaw@{vg*onZArPhRVLV2QJkk8BuWW z_VGIoy4ROq`s^^tC~zMXrpheZPU(u=J!YNP}kd>Y8t7JdOaxxra@X*SKwg<|H)`faJy8eD0NG+|OQ z0U}vQf}DI|FWm2-^KmsVq;c19%zodXT7ijc<7&hi6YLkAj6X$%2HfFaaZDl@^ajiW zX0_?I{{@VHSPT$#gwdQ)PZws?PhlaLC9UA)*+v}N{jF*n0@66!}Q3z$am779(V$zXyt6{eG&}vTEc;S@O=~XCDg10CkhAGAR`(^NX_&X ze9bC!Ohr;LKSnhI;*fztFRANn+-H@2@hy0!A539v#H{Db8G^CeuK@c&$cikSjRsZW ztzV2_%#m8HlxwDi0TJ~qiiu?_p-3zy)4H_=)FZjT?T${cL8nB6k%K zbwS2RR4DH#fL+f$P7V^U1vQxmbHqJ_|s!HG$BWMMU)d7a^}DSgq= zw-{H6**6>_yc{&Y65KjJ1JpmrsZM_V zK9rlb$o`>G%t{D{iuDDPi%VI%VM8~V++;lOSi@h;bc1Qs1O>oO7(sJ)<>I6skn-^9 zE~513P$Q&N@0RpwsOa8RE2JYgy@XOd?+1m|DYJnhZJ`cmXN;IY@oumWrZ*EPz}4VE zE5$F)wZeNK>$@ayMR){ksV($`Dt+K(_!=v4{~CmQa>5@>$VRsTJscX?3@724tHDPm zNFFA*;0VILI6d+&0d|EH)m${FF4bP8Z<*e5`Yx>CE{{oaizAdpTtx>{# zVO(5rnIY>uMfK10l>ai5-;YDbj2Z6CLnHgxxKUd+&Fz7dII z3+#_H(SDc+TyWnnBCc#w+2`X|?986pmL{0K5!6{q3&}gyUm9dO>vZ)Cc(7gVSpQTx znITX%vmSS{e<&`UkrS(zWe}&h^R$eG>Go=|@|esFoXP)cS7&KQ?2Y-@9?5L|P;Jm) zW+YwZlsVI{c05qN(6}eY>DaQes+Y{8it2(QHp|#S?djk2r+*WO?)<{rE8T}Lsqxa+ O0p6RodQ`d5zxo$I96ZVZ literal 3702 zcmeHKc~leE9-bKzldy04pcLYUs8B$G1PBrYm9>a~fGtQ|02RWj5){cOEj+6%RS?Un z1+26Pv{({A$fy;SEk&vwg!gR{F8w^Y=f1)PZDz3X1FOjs|IBWy4Se3YD+vVZ zedhXyME&APGx3L6RMx}prk`Sd@|u!KYx=(+_9|Pcf>%b@{LIku$|+Fa+dtnU3o<6Q z9O!XU` zVuD1AFNrN|2tu11!KBB1uNJtBnKYEP0oksn2~IU{fsEQ;zIkJa)ZJF8*wh@`8ps^4 zY@EDpB*ZVN(Z2S=Fl2}I>lHU3=PVsyrW$QMC~ukxV6VHt)3N;Zy9rZNCNux>2s2kS z=qmYGXdgF*aoP%Aae<4}*Op-L$Cq2TD6^L;zNr^4thIYqI%yn9CvSUvN|eKjg>2rm z@L24#rINI3wTd?R4*l#pjX$P&G>t=0Tbn`<{Y*}kX`t!e$-Eq%FhjhgMyl^tJc#$m zj&~1$c{-wN<7bhA7BBv(711U3aGEie8%IVivoZ$lFizhFgJ*6zDS=nU3&92@(9>ag z#PrOl*!xke`(&u7L}2@@oS1aS5PatUm2x?=@$SQuXh?AEzzrPQ>H(XR1QBdob&fW_ z8%hKY>>ChkfVP|qKs8xl@)45J%l{tNE-+~yu1ExWw?&_N0QBk#olnEh`^V$mt2x=a zK0&>XAtrYDlIf>HAMBIL)OZ!P_|a*}XEQU|A2TCBS-2fEA@o4GvsS;bv2V^PTZDrN1&JvO zbvYZ5MP(A&(iv37bQVP6pb0Kp4tyQba~@bQo3evt+Ocbq#mf{`8nZzcUqSsZXvh$m z_D%n10gJY!XkO_(cIEh?p}g!AG?z}0b#7nL>8)*OEs~lLC|7y%(EA3;3R^cr?o*JD z%mZ{bi~V2~f@nHeMi6ZS6Apfr|2icn5n#PHh}r2Q;~Isd|Fdzwrvgol-%GI)$3cpE z*kc~_>!GM3%@(L4!yll7iBUp@t6qf)=f5mm+5J%POtnZCQbb_@MGO#BMS>|xe+wmQ z(YCZNN^Y^l{+tY;f89!VB=3$9NZNqVg{zKLtyVmq15iwh=zDQ&%d9RRG~$7aHrBlP zYQGRC-U-NmE;!Dwi*|`XKWmM2ZGlP;+w(A;=LvKTzJdR&YJAQ!>3%tl?$>Pq*LoC{ zz3CwQ~jQ6VYb=II-W1;wfi;p{w z6GYBX{DA`>*5cwn2Lef{j<8UbW;Tp|ge})yl|a%FV+%}YGdH@b^nLhp^)D;nU?z|i z`1K=+H4sy>O(C*s9YX%fwRmW6w(aU09W^9vm*Ny4`PAs{7@FY;tIf1r4_TF zT&6y_3M$>W+%XoDs7~96xa2{luCDMsclb-7Rs#j5Fj|C)+Hrt7n=+e9sGxv*pou?q z2EjR;!v=PrsQylG1jq$jd^ox-zDKvd&9HJ`_`=9^NDv`CSg*c=H<6L4ppYI*h+K~- za#vY~PJIp#7r9yfwf8)eXCLg~8?i%}Cp_RV1{n$Zq49|pMp2-cqyky`Odf!UDk%J<6)MeXZWW<-G^#`t8^S&^a#9GTe#f~D{tCCfbI$R z!V6JSplO0(qse#o#`(p}9ZCkvBnF7gG65bGm_)h4wNY0YAlDXPGCWOQqYp0A=m3j{AH&GPMIQ z>iM(3xWE%%{A$-W+Dn0cup4R{o4|t!Kb@BDUO|7Sg^ zk4Mf!M|WQZ9(M%ZYS{^wPTQNmHM_0)$V^~L2)Re@H%I-G1^()@e}R%B+FbuI)+jKtZYW!*_XT%7TsymyI?|b<yLdORF2cH1QQyEsn<^ zcO?(a-97jXrDv6B6U-{_19P{>=HtM!7Av>GU0|yor_0k51|H}L%>38j_zZ+{8=#6(<@dC-j)T)}d`^KSQD JW%jfS{{m!bIivsp diff --git a/tests/test_chart_rendering.py b/tests/test_chart_rendering.py index f98dd9b2..f14e1170 100644 --- a/tests/test_chart_rendering.py +++ b/tests/test_chart_rendering.py @@ -82,15 +82,15 @@ class disk_output_renderers: # test-specific config test_configs = { "APPLE 1mo defaults": { - 'currency': {'stock_symbol': 'AAPL'}, + 'currency': {'stock_symbol': 'AAPL', 'chart_since': '2010-08-22T00:00:00Z'}, 'display': {'candle_width': '1mo'}, }, "APPLE 3mo defaults": { - 'currency': {'stock_symbol': 'AAPL'}, + 'currency': {'stock_symbol': 'AAPL', 'chart_since': '2010-08-22T00:00:00Z'}, 'display': {'candle_width': '3mo'}, }, "GBPJPY 3mo defaults with entry": { - 'currency': {'stock_symbol': 'GBPJPY=X', 'entry_price': '150'}, + 'currency': {'stock_symbol': 'GBPJPY=X', 'entry_price': '150', 'chart_since': '2010-08-22T00:00:00Z'}, 'display': {'candle_width': '3mo'}, }, "bitmex BTC 5m defaults": { From e2d3c62e2170205717c6125b86d784ba53c70dac Mon Sep 17 00:00:00 2001 From: donbing Date: Tue, 10 May 2022 23:04:56 +0100 Subject: [PATCH 49/66] update small chart images --- .../test_264,176_APPLE 1mo defaults.png | Bin 2036 -> 1977 bytes .../test_264,176_APPLE 3mo defaults.png | Bin 1891 -> 1965 bytes tests/images/test_264,176_BTC HOLDINGS.png | Bin 2366 -> 2182 bytes ...264,176_GBPJPY 3mo defaults with entry.png | Bin 2012 -> 1984 bytes ...test_264,176_cryptocom CRO 1h defaults.png | Bin 2202 -> 2149 bytes ...test_264,176_cryptocom CRO 5m defaults.png | Bin 2035 -> 2117 bytes 6 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/images/test_264,176_APPLE 1mo defaults.png b/tests/images/test_264,176_APPLE 1mo defaults.png index 38c46f17cee3d5c40be45ce4698e53b642230f9f..fcad30cdbc31cf8c93a5306cb2d8cd53cf9a5bfa 100644 GIT binary patch delta 1181 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 M07*qoM6N<$g4d?{=>Px# diff --git a/tests/images/test_264,176_BTC HOLDINGS.png b/tests/images/test_264,176_BTC HOLDINGS.png index 6c60df3143ffdceddc55bb95dfad9e6e78a45d05..d8d7f1d4a23f74341f2261f44d71e84948f004f7 100644 GIT binary patch delta 1387 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 XiBT1=zfC+_00000NkvXXu0mjf+HTkq diff --git a/tests/images/test_264,176_GBPJPY 3mo defaults with entry.png b/tests/images/test_264,176_GBPJPY 3mo defaults with entry.png index 6c5658de1cb5ae83fee00c49ffdd4b5a04b4333d..81ff2fdd41bc25fb89f0ac65be06839454fa9fe1 100644 GIT binary patch delta 1188 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 delta 1240 zcmV;}1Sk8&5c3bPECYW8u}MThRCt{2oQs00AQVNx|NrP|WCI68fs}`_*PUyI;=vVC zc}%6qG-&<#(`LpLeE#i!sU_OZEA2P2Z5tjjF@NtuoBww2m9-$Ah+Q{@&?7gqDeS&= z@OlyM`Q8r>A~Z^@6w@0-kJy})mtnfT_B}z#$5@228no;Yn|pt-J>pppeXMF7_5hT@ z&T)(oDqKVVyTvBPh=*OguY27>NY^@8vX}@ZkHz2(YBdqAGsK7AVj_a~>oFoUI4hUS zbi~y*O3VC`pj)ge;v9+q6ah9+Q>U7EXG+$K%Tn98TECVqJ%SD7F0 zpsi^mMF5Hb6ajyRi#TiW)p}AyNm&UL0Vo1c1Q_dNdb|N(hmX_s+M6~<NiP-$WvbKoyyT+97q0cpmA`aV2 zp6R0q@XUWHo^~{A(#76VM1IjYMl^{cY)pzkOo~8Eia<iZfkZ7~3O!rYlIf zuO`A}y7YCXs|zC!4L8kXy1FoSjL2rX`oVV%8=A$>07U?b z02Bcz0#F2?2ry2>WLKpP7BNrPpa?(_U>*^J#|(dp02Bd+i8x&7zMu$$yJAy3HwE75=R0uiNmFPxFI2*0RCMDUxg7mG055#cgj z^Q8QWc~Znhlp8JV#6d)~h$5a9F*MUvL{5ai{$=qV;qUiF5fl*~8sd{^wUVC^fdWMl zVIf6OL|C|(i1YO+LRPA(P`COBC<0IfpolwA1fU2&5r859MO-u2-3!O!5*n||bUlBH z_)XXNoAwPP$aF0&Vye3rP6L zvGeoIs%crTbcf`xZmKF);*D#Y3Mx>jBvvi1<}Vtq5ia^(a}m`qt!$UbrWI7GePOkj z^ym@$Ow|}6tCbz{GT&4)M)<64+cAO=LI@#*B>4k&h!L6#z<)#l0000 Cia?eC From 2b71d0d1d03a3a3b781e08b209bd0052d4c108b7 Mon Sep 17 00:00:00 2001 From: donbing Date: Tue, 10 May 2022 23:20:58 +0100 Subject: [PATCH 50/66] handle date fails in config --- src/configuration/bitbot_config.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/configuration/bitbot_config.py b/src/configuration/bitbot_config.py index b49f75bb..f51d278b 100644 --- a/src/configuration/bitbot_config.py +++ b/src/configuration/bitbot_config.py @@ -67,8 +67,11 @@ def entry_price(self): return self.config.getfloat('currency', 'entry_price', fallback=0) def chart_since(self): - date = self.config.get('currency', 'chart_since', fallback=None) - return parse(date) if date else None + date = self.config.get('currency', 'chart_since') + try: + return parse(date) + except: + return None def entry_price(self): return float(self.config.get('currency', 'entry_price', fallback=0)) From 5120e5f50f8562079a9d4209c01c0f3a12967ea5 Mon Sep 17 00:00:00 2001 From: donbing Date: Fri, 13 May 2022 11:38:31 +0100 Subject: [PATCH 51/66] addrewss low timeframe probs with yahoo --- src/drawing/chart_overlay.py | 8 +++--- src/drawing/image_utils.py | 10 ++++++++ src/drawing/mpf_plotted_chart.py | 4 +-- src/exchanges/stock_exchanges.py | 22 ++++++++-------- tests/test_chart_rendering.py | 44 ++++++-------------------------- tests/test_stock_exchange.py | 2 +- 6 files changed, 36 insertions(+), 54 deletions(-) diff --git a/src/drawing/chart_overlay.py b/src/drawing/chart_overlay.py index 7e03cb38..3726ad58 100644 --- a/src/drawing/chart_overlay.py +++ b/src/drawing/chart_overlay.py @@ -46,7 +46,7 @@ def display_elements(self): def overlay1(self, chartdata): portfolio_value = self.value_held(chartdata) portfolio_entry_value = self.entry_value() - portfolio_delta = self.profit(chartdata) + portfolio_pnl = self.profit(chartdata) yield TextBlock([ [ # ๐ŸŽน draw instrument name and candle width text @@ -58,11 +58,11 @@ def overlay1(self, chartdata): [DrawText.number_5sf(chartdata.last_close(), self.price_font)], # ๐Ÿ’ฌ draw holdings or comment [ - DrawText.number(portfolio_value, self.title_font) + DrawText.number_5sf(portfolio_value, self.title_font) if portfolio_value else DrawText.random_from_bool(self.ai_comments(), self.price_increasing(chartdata), self.title_font), - DrawText.humanised_price(portfolio_delta, self.title_font, prefix=" up " if portfolio_delta > 0 else " down ") + DrawText.pip_calc(self.entry_price(), chartdata.last_close(), self.title_font, prefix=" ") if portfolio_entry_value != 0 else DrawText.empty(self.title_font) ] @@ -88,7 +88,7 @@ def overlay2(self, chartdata): if portfolio_value else DrawText.random_from_bool(self.ai_comments(), self.price_increasing(chartdata), self.title_font), - DrawText.humanised_price(portfolio_delta, self.title_font, prefix=" up " if portfolio_delta > 0 else " down ") + DrawText.humanised_price(portfolio_delta, self.title_font) if portfolio_entry_value != 0 else DrawText.empty(self.title_font) ] diff --git a/src/drawing/image_utils.py b/src/drawing/image_utils.py index 0681a0bf..406f149b 100644 --- a/src/drawing/image_utils.py +++ b/src/drawing/image_utils.py @@ -24,6 +24,16 @@ def percentage(percentage, font): def humanised_price(price, font, prefix=""): return DrawText(prefix + format_title_price(price), font) + @staticmethod + def pip_calc(open, close, font, prefix=""): + if str(open).index('.') >= 3: # JPY pair + multiplier = 0.01 + else: + multiplier = 0.0001 + + pips = round((close - open) / multiplier) + return DrawText(prefix + '({:+})'.format(int(pips)), font) + # ๐Ÿท๏ธ number text @staticmethod def number(value, font, colour='black'): diff --git a/src/drawing/mpf_plotted_chart.py b/src/drawing/mpf_plotted_chart.py index 3c6ec2ce..a0d5255f 100644 --- a/src/drawing/mpf_plotted_chart.py +++ b/src/drawing/mpf_plotted_chart.py @@ -13,8 +13,8 @@ def __init__(self, config, display, files, chart_data): data_frame = pd.DataFrame(chart_data.candle_data) data_frame = data_frame.drop([6, 7], axis=1, errors='ignore') data_frame.columns = ['date', 'open', 'high', 'low', 'close', 'volume'] - data_frame.index = pd.DatetimeIndex(data_frame['date'].astype('datetime64[ms]')) - # data_frame.index = pd.DatetimeIndex(data_frame['date']) + # data_frame.index = pd.to_datetime(data_frame['date']) # pd.DatetimeIndex(data_frame['date'].astype('datetime64[ms]')) + data_frame.index = pd.DatetimeIndex(data_frame['date']) # ๐ŸŽจ chart colours mpf_colours = mpf.make_marketcolors( diff --git a/src/exchanges/stock_exchanges.py b/src/exchanges/stock_exchanges.py index 241116d9..a2c682b0 100644 --- a/src/exchanges/stock_exchanges.py +++ b/src/exchanges/stock_exchanges.py @@ -7,14 +7,14 @@ class Exchange(): - CandleConfig = collections.namedtuple('CandleConfig', 'width duration') + CandleConfig = collections.namedtuple('CandleConfig', 'width duration fat_duration') candle_configs = [ - CandleConfig('1mo', timedelta(weeks=4*24)), - CandleConfig('1h', timedelta(hours=40)), - CandleConfig('1wk', timedelta(weeks=60)), - CandleConfig('3mo', timedelta(weeks=12*24)), - CandleConfig('1m', timedelta(weeks=12*24)), - CandleConfig('5m', timedelta(weeks=12*24)), + CandleConfig('1mo', timedelta(weeks=4*24), None), + CandleConfig('1h', timedelta(hours=40), timedelta(days=3)), + CandleConfig('1wk', timedelta(weeks=60), None), + CandleConfig('3mo', timedelta(weeks=12*24), None), + CandleConfig('1m', timedelta(minutes=60), timedelta(days=4)), + CandleConfig('5m', timedelta(minutes=60), timedelta(days=4)), ] def __init__(self, config): @@ -26,7 +26,7 @@ def fetch_history(self): ticker = yfinance.Ticker(instrument) candle_config = self.select_candle_config() candle_width = candle_config.width - chart_duration = candle_config.duration + chart_duration = candle_config.fat_duration or candle_config.duration end_date = self.config.chart_since() or datetime.utcnow() start_date = end_date - chart_duration @@ -37,14 +37,14 @@ def fetch_history(self): start_date, end_date) - return CandleData(candle_width, history, ticker) + return CandleData(candle_width, history.tail(40), ticker) @info_log def get_stock_history(self, ticker, candle_width, start_date, end_date): return ticker.history( interval=candle_width, - start=start_date.strftime("%Y-%m-%d"), - end=end_date.strftime("%Y-%m-%d")) + start=start_date, + end=end_date) def select_candle_config(self): candle_width = self.config.candle_width() diff --git a/tests/test_chart_rendering.py b/tests/test_chart_rendering.py index f14e1170..6552ecef 100644 --- a/tests/test_chart_rendering.py +++ b/tests/test_chart_rendering.py @@ -52,45 +52,18 @@ class disk_output_renderers: } -<<<<<<< HEAD -# load config -test_params = [ - ("APPLE 1mo defaults", "", "", "AAPL", "1", "false", "false", "1mo", ""), - ("APPLE 3mo defaults", "", "", "AAPL", "1", "false", "false", "3mo", ""), - ("GBPJPY 1mo defaults", "", "", "GBPJPY=X", "1", "false", "false", "1mo", ""), - - ("bitmex BTC 5m defaults", "bitmex", "BTC/USD", "", "1", "false", "false", "5m", ""), - ("bitmex BTC 1h defaults", "bitmex", "BTC/USD", "", "1", "false", "false", "1h", ""), - ("bitmex BTC 1d defaults", "bitmex", "BTC/USD", "", "1", "false", "false", "1d", ""), - - ("BTC HOLDINGS", "bitmex", "BTC/USD", "", "1", "false", "false", "1d", "100"), - ("BTC VOLUME", "bitmex", "BTC/USD", "", "1", "false", "true", "1d", ""), - ("BTC EXPANDED", "bitmex", "BTC/USD", "", "1", "true", "false", "1d", ""), - ("BTC VOLUME EXPANDED", "bitmex", "BTC/USD", "", "1", "true", "true", "1d", ""), - ("BTC VOLUME OVERLAY2", "bitmex", "BTC/USD", "", "2", "false", "true", "1d", ""), - ("BTC OVERLAY2", "bitmex", "BTC/USD", "", "2", "false", "false", "1d", ""), - - ("bitmex ETH 5m defaults", "bitmex", "ETH/USD", "", "1", "false", "false", "5m", ""), - ("bitmex ETH 1h defaults", "bitmex", "ETH/USD", "", "1", "false", "false", "1h", ""), - ("bitmex ETH 1d defaults", "bitmex", "ETH/USD", "", "1", "false", "false", "1d", ""), - - ("cryptocom CRO 5m defaults", "cryptocom", "CRO/USDC", "", "1", "false", "false", "5m", ""), - ("cryptocom CRO 1h defaults", "cryptocom", "CRO/USDC", "", "1", "false", "false", "1h", ""), - ("cryptocom CRO 1d defaults", "cryptocom", "CRO/USDC", "", "1", "false", "false", "1d", ""), -] # name, exch, token, stock, overlay, expand, volume, candle_width, holdings -======= # test-specific config test_configs = { "APPLE 1mo defaults": { - 'currency': {'stock_symbol': 'AAPL', 'chart_since': '2010-08-22T00:00:00Z'}, + 'currency': {'stock_symbol': 'AAPL'}, 'display': {'candle_width': '1mo'}, }, "APPLE 3mo defaults": { - 'currency': {'stock_symbol': 'AAPL', 'chart_since': '2010-08-22T00:00:00Z'}, + 'currency': {'stock_symbol': 'AAPL'}, 'display': {'candle_width': '3mo'}, }, "GBPJPY 3mo defaults with entry": { - 'currency': {'stock_symbol': 'GBPJPY=X', 'entry_price': '150', 'chart_since': '2010-08-22T00:00:00Z'}, + 'currency': {'stock_symbol': 'GBPJPY=X', 'entry_price': '150'}, 'display': {'candle_width': '3mo'}, }, "bitmex BTC 5m defaults": { @@ -145,7 +118,6 @@ class disk_output_renderers: 'display': {'candle_width': '1d'}, }, } ->>>>>>> beef up tests os.makedirs('tests/images/', exist_ok=True) @@ -164,15 +136,15 @@ def test(self): config.set('display', 'output', output['output']) config.set('display', 'resolution', output.get('resolution', '')) - file_name = f'tests/images/{name}.png' - config.set('display', 'disk_file_name', file_name) + image_file_name = f'tests/images/{name}.png' + config.set('display', 'disk_file_name', image_file_name) app = BitBot(config, files) - image_should_not_change_when(app.display_chart, file_name) + image_should_not_change_when(app.display_chart, image_file_name) - if False: - os.system(f"code '{file_name}'") + if True: + os.system(f"code '{image_file_name}'") def image_should_not_change_when(action, file_name): previous_image = Image.open(file_name) diff --git a/tests/test_stock_exchange.py b/tests/test_stock_exchange.py index 03edfeb5..ded7271b 100644 --- a/tests/test_stock_exchange.py +++ b/tests/test_stock_exchange.py @@ -8,7 +8,7 @@ # ๐Ÿชณ ''1h',' <- fails on weekends due to short chart duration -test_params = ['1mo''1mo', '1h', '1wk', 'random'] +test_params = ['1mo', '1h', '1wk', 'random'] curdir = pathlib.Path(__file__).parent.resolve() files = use_config_dir(os.path.join(curdir, "../")) From 6b4f8c9e12e1256e8e732cc6eebe4580bf493d22 Mon Sep 17 00:00:00 2001 From: donbing Date: Fri, 13 May 2022 20:22:07 +0100 Subject: [PATCH 52/66] profit only for specified entries --- src/configuration/bitbot_config.py | 2 +- src/drawing/chart_overlay.py | 2 +- src/drawing/mpf_plotted_chart.py | 2 +- src/exchanges/stock_exchanges.py | 2 ++ tests/test_chart_rendering.py | 22 +++++++++++++++++++++- 5 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/configuration/bitbot_config.py b/src/configuration/bitbot_config.py index f51d278b..e1068c4f 100644 --- a/src/configuration/bitbot_config.py +++ b/src/configuration/bitbot_config.py @@ -67,7 +67,7 @@ def entry_price(self): return self.config.getfloat('currency', 'entry_price', fallback=0) def chart_since(self): - date = self.config.get('currency', 'chart_since') + date = self.config.get('currency', 'chart_since', fallback="") try: return parse(date) except: diff --git a/src/drawing/chart_overlay.py b/src/drawing/chart_overlay.py index 3726ad58..77a6028b 100644 --- a/src/drawing/chart_overlay.py +++ b/src/drawing/chart_overlay.py @@ -58,7 +58,7 @@ def overlay1(self, chartdata): [DrawText.number_5sf(chartdata.last_close(), self.price_font)], # ๐Ÿ’ฌ draw holdings or comment [ - DrawText.number_5sf(portfolio_value, self.title_font) + DrawText.number(portfolio_pnl, self.title_font) if portfolio_value else DrawText.random_from_bool(self.ai_comments(), self.price_increasing(chartdata), self.title_font), diff --git a/src/drawing/mpf_plotted_chart.py b/src/drawing/mpf_plotted_chart.py index a0d5255f..63cc246d 100644 --- a/src/drawing/mpf_plotted_chart.py +++ b/src/drawing/mpf_plotted_chart.py @@ -37,7 +37,7 @@ def __init__(self, config, display, files, chart_data): kwargs = dict( volume=config.show_volume(), style=mpf_style, - tight_layout=True, + # tight_layout=True, figsize=tuple(dim/100 for dim in display.size()), xrotation=0, datetime_format=self.date_format(data_frame), diff --git a/src/exchanges/stock_exchanges.py b/src/exchanges/stock_exchanges.py index a2c682b0..cd666fcc 100644 --- a/src/exchanges/stock_exchanges.py +++ b/src/exchanges/stock_exchanges.py @@ -11,10 +11,12 @@ class Exchange(): candle_configs = [ CandleConfig('1mo', timedelta(weeks=4*24), None), CandleConfig('1h', timedelta(hours=40), timedelta(days=3)), + CandleConfig('4h', timedelta(hours=4*40), timedelta(days=5)), CandleConfig('1wk', timedelta(weeks=60), None), CandleConfig('3mo', timedelta(weeks=12*24), None), CandleConfig('1m', timedelta(minutes=60), timedelta(days=4)), CandleConfig('5m', timedelta(minutes=60), timedelta(days=4)), + CandleConfig('15m', timedelta(minutes=15*60), timedelta(days=7)), ] def __init__(self, config): diff --git a/tests/test_chart_rendering.py b/tests/test_chart_rendering.py index 6552ecef..8fb99e01 100644 --- a/tests/test_chart_rendering.py +++ b/tests/test_chart_rendering.py @@ -63,8 +63,23 @@ class disk_output_renderers: 'display': {'candle_width': '3mo'}, }, "GBPJPY 3mo defaults with entry": { - 'currency': {'stock_symbol': 'GBPJPY=X', 'entry_price': '150'}, 'display': {'candle_width': '3mo'}, + 'currency': { + 'stock_symbol': 'GBPJPY=X', + 'entry_price': '167', + 'chart_since': '2022-04-22T00:00:00Z', # yfinance limits to gathering 7 days of low-timeframe from the last 60 days + 'holdings': '10', + }, + 'display': {'candle_width': '5m', }, + }, + "AUDCAD 3mo defaults with entry": { + 'currency': { + 'stock_symbol': 'AUDCAD=X', + 'entry_price': '0.89332', + 'chart_since': '', # yfinance limits to gathering 7 days of low-timeframe from the last 60 days + 'holdings': '450000', + }, + 'display': {'candle_width': '1h', }, }, "bitmex BTC 5m defaults": { 'display': {'candle_width': '5m'}, @@ -141,6 +156,7 @@ def test(self): app = BitBot(config, files) +<<<<<<< HEAD image_should_not_change_when(app.display_chart, image_file_name) if True: @@ -149,6 +165,10 @@ def test(self): def image_should_not_change_when(action, file_name): previous_image = Image.open(file_name) action() +======= + previous_image = None # Image.open(file_name) + app.display_chart() +>>>>>>> profit only for specified entries new_image = Image.open(file_name) assert_image_matches_size(new_image) From 9b974448973e2be331c4b0de35e10db4a1c50427 Mon Sep 17 00:00:00 2001 From: donbing Date: Fri, 13 May 2022 20:37:25 +0100 Subject: [PATCH 53/66] default to no entry price in tests --- tests/test_chart_rendering.py | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/tests/test_chart_rendering.py b/tests/test_chart_rendering.py index 8fb99e01..b37e8d3e 100644 --- a/tests/test_chart_rendering.py +++ b/tests/test_chart_rendering.py @@ -32,7 +32,8 @@ class disk_output_renderers: 'exchange': 'bitmex', 'instrument': 'BTC/USD', 'holdings': '0', - 'chart_since': '2021-08-22T00:00:00Z' + 'chart_since': '2021-08-22T00:00:00Z', + 'entry_price': 0, }, 'display': { 'output': 'disk', @@ -47,7 +48,7 @@ class disk_output_renderers: }, 'comments': { 'up': 'moon', - 'down': 'doom' + 'down': 'doom', } } @@ -156,23 +157,12 @@ def test(self): app = BitBot(config, files) -<<<<<<< HEAD - image_should_not_change_when(app.display_chart, image_file_name) - - if True: - os.system(f"code '{image_file_name}'") - - def image_should_not_change_when(action, file_name): - previous_image = Image.open(file_name) - action() -======= previous_image = None # Image.open(file_name) app.display_chart() ->>>>>>> profit only for specified entries new_image = Image.open(file_name) - assert_image_matches_size(new_image) - assert_image_unchanged(previous_image, new_image, file_name) + assert_image_matches_size(new_image, output.get('resolution', '')) + # assert_image_unchanged(previous_image, new_image, file_name) def assert_image_matches_size(new_image): expected_res = output.get('resolution', '') From 178efc4921ffa908f1a4429ae38910a36b6ba724 Mon Sep 17 00:00:00 2001 From: donbing Date: Fri, 13 May 2022 22:00:38 +0100 Subject: [PATCH 54/66] support more timeframes for yfinance --- src/exchanges/stock_exchanges.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/exchanges/stock_exchanges.py b/src/exchanges/stock_exchanges.py index cd666fcc..4eebd717 100644 --- a/src/exchanges/stock_exchanges.py +++ b/src/exchanges/stock_exchanges.py @@ -10,13 +10,15 @@ class Exchange(): CandleConfig = collections.namedtuple('CandleConfig', 'width duration fat_duration') candle_configs = [ CandleConfig('1mo', timedelta(weeks=4*24), None), - CandleConfig('1h', timedelta(hours=40), timedelta(days=3)), - CandleConfig('4h', timedelta(hours=4*40), timedelta(days=5)), CandleConfig('1wk', timedelta(weeks=60), None), CandleConfig('3mo', timedelta(weeks=12*24), None), CandleConfig('1m', timedelta(minutes=60), timedelta(days=4)), + CandleConfig('2m', timedelta(minutes=60), timedelta(days=4)), CandleConfig('5m', timedelta(minutes=60), timedelta(days=4)), - CandleConfig('15m', timedelta(minutes=15*60), timedelta(days=7)), + CandleConfig('15m', timedelta(minutes=15*60), timedelta(days=4)), + CandleConfig('30m', timedelta(minutes=30*40), timedelta(days=4)), + CandleConfig('1h', timedelta(hours=40), timedelta(days=3)), + CandleConfig('1d', timedelta(days=40), timedelta(days=3)), ] def __init__(self, config): From 61b2c017cc3048d6ed45fc9ee666f019cc9e5a37 Mon Sep 17 00:00:00 2001 From: donbing Date: Fri, 13 May 2022 21:57:30 +0100 Subject: [PATCH 55/66] fixup expanded chart with volume --- src/drawing/mpf_plotted_chart.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/drawing/mpf_plotted_chart.py b/src/drawing/mpf_plotted_chart.py index 63cc246d..9f30f56b 100644 --- a/src/drawing/mpf_plotted_chart.py +++ b/src/drawing/mpf_plotted_chart.py @@ -87,7 +87,10 @@ def __init__(self, config, display, files, chart_data): ylabel.set_horizontalalignment('left') for xlabel in a.xaxis.get_ticklabels(): xlabel.set_verticalalignment('bottom') - plt.gca().set_position((0, 0, 1, 1)) + ax[3].set_position((0, 0, 1, 0.3)) + ax[2].set_position((0, 0, 1, 0.3)) + ax[0].set_position((0, 0.3, 1, 0.7)) + ax[1].set_position((0, 0.3, 1, 0.7)) # self.fig.set_tight_layout(True) # self.fig.set_constrained_layout_pads(w_pad=0, h_pad=0) From 6293992edb636e54308218d8d62967d116fa74df Mon Sep 17 00:00:00 2001 From: donbing Date: Fri, 13 May 2022 22:37:57 +0100 Subject: [PATCH 56/66] remove dead images --- tests/images/APPLE 1mo defaults.png | Bin 1832 -> 0 bytes tests/images/APPLE 3mo defaults.png | Bin 1872 -> 0 bytes tests/images/BTC EXPANDED.png | Bin 2321 -> 0 bytes tests/images/BTC HOLDINGS.png | Bin 2390 -> 0 bytes tests/images/BTC OVERLAY2.png | Bin 2421 -> 0 bytes tests/images/BTC VOLUME EXPANDED.png | Bin 2303 -> 0 bytes tests/images/BTC VOLUME OVERLAY2.png | Bin 2423 -> 0 bytes tests/images/BTC VOLUME.png | Bin 2366 -> 0 bytes tests/images/bitmex BTC 1d defaults.png | Bin 2362 -> 0 bytes tests/images/bitmex BTC 1h defaults.png | Bin 2130 -> 0 bytes tests/images/bitmex BTC 5m defaults.png | Bin 2140 -> 0 bytes tests/images/bitmex ETH 1d defaults.png | Bin 2288 -> 0 bytes tests/images/bitmex ETH 1h defaults.png | Bin 2088 -> 0 bytes tests/images/bitmex ETH 5m defaults.png | Bin 2145 -> 0 bytes tests/images/cryptocom CRO 1d defaults.png | Bin 2189 -> 0 bytes tests/images/cryptocom CRO 1h defaults.png | Bin 2069 -> 0 bytes tests/images/cryptocom CRO 5m defaults.png | Bin 2196 -> 0 bytes 17 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 tests/images/APPLE 1mo defaults.png delete mode 100644 tests/images/APPLE 3mo defaults.png delete mode 100644 tests/images/BTC EXPANDED.png delete mode 100644 tests/images/BTC HOLDINGS.png delete mode 100644 tests/images/BTC OVERLAY2.png delete mode 100644 tests/images/BTC VOLUME EXPANDED.png delete mode 100644 tests/images/BTC VOLUME OVERLAY2.png delete mode 100644 tests/images/BTC VOLUME.png delete mode 100644 tests/images/bitmex BTC 1d defaults.png delete mode 100644 tests/images/bitmex BTC 1h defaults.png delete mode 100644 tests/images/bitmex BTC 5m defaults.png delete mode 100644 tests/images/bitmex ETH 1d defaults.png delete mode 100644 tests/images/bitmex ETH 1h defaults.png delete mode 100644 tests/images/bitmex ETH 5m defaults.png delete mode 100644 tests/images/cryptocom CRO 1d defaults.png delete mode 100644 tests/images/cryptocom CRO 1h defaults.png delete mode 100644 tests/images/cryptocom CRO 5m defaults.png diff --git a/tests/images/APPLE 1mo defaults.png b/tests/images/APPLE 1mo defaults.png deleted file mode 100644 index 4253e8a7cde991decf76f80e5d703f0833ced538..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1832 zcmeAS@N?(olHy`uVBq!ia0y~yVB`R@H*hcm$s@-Y5*Zkn{s#Djxc>kDA1DICqhK@y zMpy`hCLCJKz`*>>)5S5QV$R#S-DRs41YGC-`R~5HmtEpXU`X7lo8@amT6s2@O0-sN z@3mnO%=cA4Vfa43NNsoI{rf+@E5-HgoVd5N=~uUr@-E-B)AMfUiOyYM{A#-mljGXA z-M3#p3W`meoPOC_hVSUQTaRBF%6+^0x^qLRzIdTU$d}pj&c7BX^5!b7I_P(J;lf3W zW*VF?did?(rvMhkmM4M>rU&0Xc5REH2%`p5K#P<4E|vS)3ppGF8lW^r4N43U#{sY7*M?O+E0sro-tR4N33;o0tLwy;uYDaMp?Lzo-$kn(YUOz4 zDtO$()+J17=sw!PWx8Z*UF(D9~-pvz(oI1N+K@vFL5^7AL_*M`kXSyS8v zXX`7O$>~@M8M(?Q&h{0|7gc=sUr8+Z)Fh>(^LysT zxG3*)Z_f6QY1z&GJ5BJO!`(|tM@mF)pHkuj25*PG-M=fhOI>sRdCpQgQ`FfZ*uV3= zQa()YBQT+ zi^`4Xb~kP=U%Q-z_2^lXi-&AKg;t$m_}Dc&;}pS_GVQ?Dd`rIJ59Ogn|k=Pgg&ebxsLQ0MuI01^@s6 diff --git a/tests/images/APPLE 3mo defaults.png b/tests/images/APPLE 3mo defaults.png deleted file mode 100644 index b1b65620bda7ef2db44bd50a354e7894d69398e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1872 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 Imc|kO2QUl3CIA2c diff --git a/tests/images/BTC HOLDINGS.png b/tests/images/BTC HOLDINGS.png deleted file mode 100644 index 7c8df7085a9333d53a4a041f6f2e48fcbc4f1f46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2390 zcmeHI`%{t$7k*U)l+>3}BeM0~ZTn0!@7F#p*u@md3#@5;rg_=C;N38D)kMVhP4Tlb zjY%_2OUqJs1x_<=k3h~iuwady%|6Bh$@DFofca*dN0Fb6+ z5;5dZ&GZ>eRS~qx=cs1i+%DH+AYr@ixp!wgubeYT$H2z}%cxgufpmLc_LmgPL{?(1 zjj$o~>Ad#lhVZU=ZK>naXL#mn{tk)B^#jQ`6qoC+dF{5K5is+{iDl);Z%*X&jF{dK z?-q)C-%wAwzoc~GU3=27k^f~mgY9miNtpU`-W>YKV9nlAhq(@ZbdenGp6U?mZpSyL zcCgEWRMXCyfvlkmsI$n9aM^T3tgAKp(KN)mJt0ZSIw-S&uOKBdS&F*)C7?_c8 zL*4VxE)i{Ukbe64|Id#u${L~I6)iY>gsE?KRpVMTIyAo#NzpH)ft&RUb?XN|3a;b2 zO`omK$H)$|&XSt)S0QruZH~*Klsd?T6;&m4InslEe9&|DP)|_0-Fsu_*ebgA2O@yn z(&5BYyVfbSQ|8AXI)J%L`d97sslPV;6!_p=w46>~Rk;-G1M=H|Gcg2aD&dAdwGNUOoCnAbC<$M|4QW z9+|$gfpg`&#m2iqjrB47R77-)<>!$ouD9ypQG$vP4Z!#+0DN8O6{TFPAyNHZmR9GD(6 z8R_!L8np6p78CfnUzn+h;15x@I&80d1ZARmFErKg`8_1Ga?jnr=CUuV+hqaZD1W`# z=e^ZH%0r+dAFc+g;YEWWork?UBnVg#8Ue7MG#YRm4cQ07P|;35*W_Dpo|^nr%lwE2 zH!X=3^@o0s3tmpsOS+GvS0IoKJ#H1fj=3PSk~_Duj+) zH8Ga&o)-Y}-ptJ$X+ui+=8kugrq;Kx;I~elci3=I-9o26D8_tMPCqy|6PcXqhOAhX zO)43;BBi~!ZOW`u5kGYA94-d1N~*?;S(gVA{l?xvlh?w)`I_HYe(_ICNacq*{H$T2 zHV0xfFe-@Gf9z{fjx|QZKU0VwWQJlhQrwN<&=XrGQPSs%E$EE)#|Wu+s$^5#P~L)v zFYD#kwGn2}vd6|$ly(CVnBST$f6E*7S-TEY`|LCT4`=V0)Y8p`AZ0rFbsX-D6S!C? z-{7b)-u@aA`TExO_P65iZT}W6x>5-xJPQVsuTd-Sb9wtwmKos4nl)(!x6IYwujG_h zLg*gz-MwzkW+G~oz>oWs0WwdpgTW>8S;SS$H&)i@88ssS8AkCS4?vfkg(0FG8rZCY zlIs|e%4?^Vr(67JcK>mq=B%y&`@oRk*-!Gpi}Xn!Lw% zQZ7O7gfq=*2-#(;A%`RU{|dx1$SkbUC)tF*As@rZe_L42s#xuR&Vw)_t)# zZy-i2%}>N-Y6(VrTQcg~7RO8-ZN~8r(U(644`|YC)Lsp4zi{uhA?j%tLu>}RKBLG7 V%=)9aiG?dKk?a#lYW*&X{U@`9@PYsU diff --git a/tests/images/BTC OVERLAY2.png b/tests/images/BTC OVERLAY2.png deleted file mode 100644 index 4deeca493223993e523f615c70518c4047fa99db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2421 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 L_DH$)!K8lxOuDww diff --git a/tests/images/BTC VOLUME OVERLAY2.png b/tests/images/BTC VOLUME OVERLAY2.png deleted file mode 100644 index 7ffe28ff9f6e13b2d69dbb1f352a5883806cd43c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2423 zcmeHI`%_Z~7S0VJy(Azv(DDdKFA)RsMo=Cq|02qQKK+CoaHz$yfmAc%!fXd@Pv@K8`liaWEv?mw_SGv7C7&YU^(%{TMS z$vqHCH^32bC=|*dD3BJ8LIL1L-vsJxa91}f8ihiyAK1tA*J`yJlMnd2{&wL1%z=pG zvRV`hyCaB(FjFe$Ds#(j!213?tycB2xG5V3Mq3u1=HD@4wPxGZ)Ll{8m@mHVf3~At zBR$aj=VO1Zo{2?`g>>FQJ)x)OwjbH=JE%UfRp_www}s{?veM0#L&#FZH(w9ADp72b zjq7Z&%q8P7bIKY*cqD1Uh30g^Sx6GJ`nQss>+VI`7;i3EmJJP!+5$j~PPFRjG~P$* zuNnwC_A2zkjQWq1i2`x^y#O+x#3ebnQH6*{5QSUDYh{#;6*)wW9bWvYl#9{>zviNx z03@O-PMTbH;niK0qb??p!qtkg(Z=^orNmt4s9)(k$IiL`E{6bWzk6m`6Z@0Twvw3U zYZrU^jqThioYo*mxLR%xSi{brAg=m3$(J8`jb!|o01H+aiO+NR+-#Bi&@u@cFiZB( z+fC@2(F8)ho?k&LrKVhr;zbEWo7SmaEfM?tKhn(zcH}V^D62yg0NP` zYJAdBd=Hryx0$$@)v3!|tAghXiQs~7%An@jne1XnS7YS0zpps3w#Kr<%5Pr%_M z{w4yZ76`n+irUkhh#RL~xAgCY?!U6q=M($7O;2tEpN(&lohrVFt52j%HajNXa0~yY zaSuSyj4%tr;uV&V%4P^Bix+L8zQ{28=V>TCb#i!HXuLI8=$+;}j*~4f{`{pEI|}*u zd8QZ~(J+nzXtCj9yH<#BIE0v|Hm>zgV9o=9!vx0HC@U|rtH_dgXzx>^;U^Tf0~-B( zNm%a|sIu!@=VnA-dc>X|7_i+5Zk&2}g=bVE@7N*>qYt2E$PettOOlQOkT4 zZ%{We0tS?ED=+G}@LC4cRgipXLYsrE_#b+c1jm0GJTh-TW0%;w``lNT`X1uJ`E;?%O`jZYirKs|+-RX(<4&h7M#D=c5cDmc zT5elaA3RxfMlU{=U`D%GM%yA6`Qk}qqgZ~!ey7eoFm-MM&Cl->sf27Jt6sRKVFPhd z3s$t%4qg&N`Jn-Tl(KPXdhBhMDcGg4r5rG@%CW>!-wF2N-w95` zk`e|oDJZQlP&uCKF^AKs1{4~pSaR#noZItvtBQAC3tQiIHulCphO?TYe|Y??QAO{& z%v}22_+%}6<_Ih83}QYU0$LPCh|!=aPn}t>d1BY3#is+4l$5W0RwssRlCZXKL zMi!WzQ)yBb9D06FULj7{Rq|lYrX|5+Y<-%wE+plf6@a6hQ@dDC2yNlBZWYJgdVQAK hlE8;@H{__K%ZAn|TdpRL&Qm`8%pm_zS|jy1|1U-S-W~t| diff --git a/tests/images/BTC VOLUME.png b/tests/images/BTC VOLUME.png deleted file mode 100644 index 532043e0ea58b4b1b86c004cec031c23010674d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2366 zcmeH|>r+z)7Qk=9O}vdsxmlh8#9N4H=!yzbP(X5R!dpZLm4HZKtyU3?T^t@AAh`)8 zJarIMPzVIXA_YM#ucC$ou|*z@5P2gmT^?>lEUiQ!q|oVye&~O&Ju~MwXU>^9AI{8g zPDX&gCxv820sw&G?ZpZN035Vl*Fk#g?C1m{0RXQJ@Z+#`I^B9_Bma)SFYteMfnc7Z z8~_Nb-Yk@paO2gDtj2PL%+Ap1R1QZE%HiW(Pl_5&wq??V<6i6$v+@xxz%&ozt-Xz* z@rJpixMy?DYdV*oO2%~$_e_5#p)}8_i&wD8hy?PQeBKm4oul7WR=jZT&{-wE=5n&C z+;S9*d=&Y8A?b0UQC!@y1Wu<%bM?Nu?B+JtOM2&DLP@WXfqz5z<> z@I`+#`>51D=&u_we98W?2KwW&mL3@d5>CcnGM zt$z4IEX|&*UF%y(>rYsx4X)cAJJj{$xh8%P0b+06{ z(i*0PcY0^uNxSxAPy`&`#(>7;*9vM)gz^&t9yI}x^lPsmPqG)Sb{zZaIlp z?<-k|fcyEcY-*xKCK)A4Z0myUB} z?0H{z&{nwHl^>z6NWb)cdNl#0X`Bk4(%%_Ft%s!haKi+art!W7E8sR#7q?9^`|Q)q ze+Xw&?D3J^OxSYK4)MRB*KUJEeNC1ycF&8TN*mge5#qlUC-L2HN#XwLrH|&%f8h+B zwlkl|4@W0od=3v}&VIUds0PX{7-z=hyhqLc*
jZ zKOj)QB7&)FYU9$Nk3Fjah585_;)(K#?_kc4m>N$djT=(9O%tPrWJu^}VUxVyHyqVS z4N98c4*MpfliTr)8lxXQ)B-OHUs9*!YPgw-}Ns|86^Z+L6{i`IqpKblvTeJ z%qGEdE8`?0)?|lN6a}FRk{Gvd30S=jgcvUpzl%lUvL$;XvrUNyZ|^e#FNVx=)7$d~ zEpY!aI0MK6t2pd886?i?2sdtIBp;7+u`7Z;G7`=+G%EYdt_Sbv!={6YM@{Y;=N%bl z)m7EEZr4|^fhA=y&3dV4$Gs{Xm8OnkG`91#7beogh|iqh@Kmt!eZ$Y2x0wdhsSUVOE+IYCSjV|smF7Wu`$)Og1}gBm8Cdn8CUxc$ VtN77J8o|cv^Je?AY7g?T-vGqc%y$3) diff --git a/tests/images/bitmex BTC 1d defaults.png b/tests/images/bitmex BTC 1d defaults.png deleted file mode 100644 index 99325a1eb1a3930254b2533be0e7234d75e6b3eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2362 zcmeHI{a4Zl7yp6;XrW)3idpJ6a+;<&3vKxdMkUkvHW^V*ifAg-QnV~h4V5ucQ+s^L z7fg{9(FK;7rDlmdqDL)lS!-^-RJPXCd@Enj810w+5zp>9_jB&K_uO+o_nvd_y%^|! z2%~4F2LJ$u;zJGw02o?pH==d4sO$#90RX-p=ofN8qtR$RpY&h(cLM)s6QD8_VgT5% zOd*p(&IzY0vWu1ACjQ(Ld*FU@7)`S)APB=eEDO(##oj#k3`Tjxs4UXd-(%91DIT6ak6N&b%wN2b% z>Sh=BNO;a@`1(XmM4s6h3quK~N=`hy`SA&qi0RIwdVVR4Bk$03=6CVE4vup&O(82dfkHp5Mkl9I~9!iJB4y@{J_(hM`%}7jUr@+a6 ze|PB~^?Z|en|kILsc~H)F%%i{p5&aZ4#nWh7IuRtYoq%r9m0@`#NT&kfxc^SbXQjQ z>Ljz!wPy^=d#6tbi|{OUq<}*U107I|5sZ|-Ct`7YH6E1wnei^Yk;MXq{0qDxb7dha zHFRx}^;0#JD~AeVM~`fIG=3Cv$21y(jQzz@Wjl>KYa_jNUp;S=tTwqsm!YedL?&gv zKX6P-dea}w54v4Y_`F4;<7?mAd>wVeU)Gdjg77+!2b)mbZY-xquY`hW!A94cQuYY0 znIJkFD#b^@e9ieSfP#|-M`Y8z>%S{oH4P%m1lQab(vqbzWP~pOYAW-*T82`Oyu_IjC8atNbP*O>LHYo z|4>DGLUn}xQ@X_Up*=Go=bh{H(G}d$BtdL3yMS~nB%sYtPU!*-invu5jgxl@`iI#^ zeP`+{(d}1o;8fyuU4-YUG^?oR!qmcWC`O>Fhm(g~`?kFuzrP)gN!aM?mrEZ#eHmtW zEV2;bT-Eno_v(Y=PD(3$30Z@-IwZ>&cf+Qs@$LFA7T>&yY#O19e@3BTEzMhbUZ>FL z_!~jg-kg%-C`%3~v9Xq{PaY&2=%VwvkR80U(vnIYY^cdB(joB&RHS8ZxHnO_F%`=z z$~D4*l0yy7#=m|yVMWcXlZ}77@LId}u9^1&K+Ua_Juma0*QS9-m66qfnefJUq(L>%_ zK7}LHH*Rz4YgQAsD({tTVl;5NL(H82qAdKI`c`a^;60 znf1VjCTk~gM%fYa(~I@biK7q$klm&8VFt+5AHlOu=45cQ4aW%W!{X8zW_XV&s_ij diff --git a/tests/images/bitmex BTC 1h defaults.png b/tests/images/bitmex BTC 1h defaults.png deleted file mode 100644 index dcacdb3ea7d8cec56fc5c56a638c42708de032b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2130 zcmeHI`!|#c82;vBe9Vl#aYi!t1YbR;-3-?-T zxU6VtGwWZe*=Oz)E~o#x*+Gz(H6?h%d@QHP2|2{W@t*qxE0FD@V@OBgRX$uIDXg3- zmqjcJqB=l4QA4|HkRG3r2!nT^VYVnBn#ud5G3aA*z5je7AYedtaCI?%rMz9Cf=@2I;e&VVJYI_A{@rTJQV}EVNim6N<(1CtyoPc zb{|ujmo}VZ2=`X^O*eQOL!xWj;9m5rmEq(XxG(`lDZf$tF=z6VJ5wDxTQ)&Hecle= z)r%rJIggme4LqP`29jI{=VnM5fn6`*M%f{Ug(?d2<8M(IzyEkpuD%v%4f>8|2N^J6Lwt z=<@_Z@(Hr??jPz=#KABam(=c4SwI@1rLdj}tZrA`-3^krJtJS)*zK!j2rsW7DY1MA zAe^w-q2DV*%u(j~Eam|W9o4?d8IqtBJMu)vJ>E((01t}v{lnNjk+PX<*`r{491&=} zN}w3`55R4D-R5k7Xo7!Wv>*p5MllRHLOCG-p7^>qSmja)ZiGw9IjeU)WkFoVk`2TW zog~hr_NYFFdkrE}-}*tZV@jvi3om%~?#@P4H$?kum_oxG8L>M-n(JZypKI4z>U z41-=)dwaaldS0m?hGwU33{3B`GN@;Lw6>?tA6_Xu8G+0Ux+ok??>bU3K1t2zfJX9C z_EJGsb))KP^j-wWzafSiQ{MqO2G{t!)E{-hXbK6w`s5 z+Luf6$M-Vaq0p8nS%ONu2IaWUQ2=U`0VPQESp=tsjyw|H)F{hKJBgsUY7f+q0ubnF z1Q>&$th*k2GP#WUX1xsqA;HZgA;6J=?go>GR4BJDD;!G)7+d&s>OPOi+_y{bxCeZX zsls!HtX06*qgZI!e021o=G*FW9$9I~c@)j0;F`W>v3=tL4gE=0m@=$bujz ze%Q!6)9LUIQH094(R01|g8H08b+-5Hy+c=-$fPU-?=w9nwCYE>hm5Jl-PmQn)#4!- z&@18k8S1>tuCO(ur7@f~KYM(w`|D`4#oN?{o!19n(Ws^KF~N@}6i4j|HfFm(=L5w* zN5s6SR12kXO}8&0k%+8`v3p{ diff --git a/tests/images/bitmex BTC 5m defaults.png b/tests/images/bitmex BTC 5m defaults.png deleted file mode 100644 index 583e6456d09c8127f6d98e1b8b83bd1b27117965..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2140 zcmeH|`#Y2g6vv0eyOuStYo^>@x3DfxG-?N#nfEnB7HgVZLRN~1sHBjXXVuQfV*U(X7|B1_RLrkX z`Y3L}rZ>*f1dj#MgXk4S*RfFzWhbN5EKg0aJtai{8mPBCjIzN{?X0Eo&PKLd)<^v zn{qA%X=lGMpA%Wy&jM(WZc5$(nSDd`^WHP@AB)WPX8px9G!Zt|EwPRzEWm^uK&aVj zPFR8odB8~dLZ93V6H*npV@e?=yghY5^Ks~4KwimtFGrazVE5H9O}@!xmA+l5SsH=U zareqIk>#se$}!L&Glq|q0{y^Ajn9=($ca+8Bd7-hD!^8WNM(s{l%H;}T2Yj+F=H_~ z3EJ}waJ4Dix7z~hW}drj*IHsN6t{?V-sEWC^&4lVfbi<^&@~g|qk&-K7?qxnW3LyF z4^osl*{GbwEqrq##M46H=+XS&El>9tkvi*sD!}%WUVt$yv~+QnWTwCErQ&NxgV-*?&thXA11QD(fF<#6w{G*o=$~B=+((pV<4m8b1S(bMTP(nd_&sOU-7Mty0N#^|hayAK6_Mf!ovnPKB zk-%4(CZx8(h|u_huz!*>=o#HmdwWlCS#$$%#?`72g)92jd-Q{M6u?liK(rn5%4x4= z*5pmZXu60YaU;O>HG=No?qeoQx1Z5zCol60R|8Sw( zte*v^o7bhm#E1-YQnLn6OLFE*K&U@hbYTul?5U*4Wg52`@A{;-!ZU=Nn>ifyQ`aky za_{gpti}YiC~M0>Q}NGwQ1*PS8$C93lw~}7%lN(x0tsgI!I{y|M+jq)H-O#bY}6Hi zUMi);WX(-`GLoFK_8u5QAmI|T`s2PhHu~C0RRo>>vDvU~$e2f#VRx-0W!y7ubjmb? zaH}RD>-K#h<_zR@GoY0W)rbALQz*+p1j{qWH1yhtbRRm9qdpc@qz4U=$}ZqDfDzUP zlt42bJb{e7aVe;4icDHfWCDp%u@3?2O`o`GEO^nr|1cbw4nKN5pq{o(77c=BT<}l1 z0#Cy3+;aEcrGzzG^fzw0=}!45V=Qq{6Le3GpcbeSm4~ZvUSlE|=nalIX>)2Jt&7IK zAASh@P;EPWrgl1ls-J$ynOR?WP-ocP0%|B9QGA$rGXfCuLL zH}xA*5+v5<&+f9)--P#HTsM2)d|%abBi ziEJxr8H?v>aXpZ{hw<$L4Bg^p1vo-U>w+8hR4En~sfP1Tly8XaOkS(+Av}F6gv3S{&UD(^YHy>DlJ$M^xT&5t|-> zMm-)$X_4~nzg`h`FZ0_fkjm)qXoJRZdY0Ya{ryYamq(y8q13TYwF+yvVk@a#5O=tW H6qNE0u7h;e diff --git a/tests/images/bitmex ETH 1d defaults.png b/tests/images/bitmex ETH 1d defaults.png deleted file mode 100644 index 375175ed4a80b0927f59e4d63e090f9aac3d02c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2288 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\s%84A>@5pJiiBprw754p tm@6sgXVH?a)kV)cA|nGtTmyw)@bhyEIiE4j+5sxjJzf1=);T3K0RZxBI{yFw diff --git a/tests/images/cryptocom CRO 5m defaults.png b/tests/images/cryptocom CRO 5m defaults.png deleted file mode 100644 index 544347d744c624f481efd7e8dae014c3eff16948..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2196 zcmeH{`!|#c7{@1O>J>8YU`kCHFCv$)E0;#O^u94G#=6wdq)bIpWJyyAP3*qIGAX$w zxeXOD?#87yCSfKu87ZeCCx8400w&$GZIp6a=&rhEpJ{&h!N9DB}*J3aj zWvUbGj=`(~mNOraU%tXtj2{Lgx9GOd6IohXT5eYM`+O(xKO^9Eq&Xjh!MRgmdrwx@ z*sX+X1!N^eb!jQT!H0mw!B^H^c((s(c(IL5hewvK+&}4<|O2g0TMz zb%(Ki*-Ul3mR;;Pir#I>lqrB+(p-g=r@CE^VkIz|%nY{lM#75*d_fXAA{O3q!2=bD8%zu2mH{doD*rYipC`dl}>v$fyQM6N1>5?Xah8@2)Ct` zpdO2te@4WYM!k3wwu-WMm-Y#F%DiKh9J!9WOHr2>t3eU#UCLuq%ll9-VV(bWyo9y$ zn-A#z&03F{ao2j|Yz$Ob0c2k62!O99G)goW#>`Awt(*B!j&`}br?eFWRVag1W022{ zBxj^;hN0FR`cbbu}T14}`zMe0Ky zr0EE&$z=~4fX4`re9S$Co@x^2V`dr@+2t&90joCNjA=pdv^)NUonK?GshX=b;ClWB z5auGe4%m|WP+;fBKyW65qll11zfrpFU_Q4n(y=KFd@}VOIYq12Z&ptWL38qe3u)-_ zGpRPRz^{?|`zBl<8$I}W8l19vN*Xd1Xt(i2ck5fXRGphJpLZEO9pY!1qT9X|JY^Pd zwFa(|gJPrLIRz`_QqdLb>Hw-v)W~)XdMc%7m?uD|2b(g_sF@@Uf4Df;{&`{#VO{Nl z@-~`oz54ry4VH#4A$rYR(3Urt;D8JKOkOoAmhX#?8KQ-p^85zmn*ZMDz>i!%R_9rR+f#tQ+US(YGnOQUP_cl zU-4$PtnTX0qW(!kg&ps26SYJd>%pR4k79sxB}}jWudIdO5~Bl9XJgP_17-z_#lYgA zbXrsTD3V^t|B5e{MrabXie(4U4L8o2Ny8}At->ZljwWIPoAoPG>$%j}Dk z07RThlp&xCaxC^0$63CSHxo>8dR1t2<3=SEAA!KU7Aw9igAL3EX%8gU%5TQ|Wfgqd zvf_nTp#7u632b0&?s=&wlX`YO_&8X?U(#JljGM5UoPV2GCJXf+O3rphCr5cFx!U(^N-cH^ zT4uVcJN4i6$Ru4J`mmL|?^$lY$1y4+6z~d{*q#~|x IslyTW-+q6LLjV8( From de7fa04f2cc4eb9d363ba9cada4b2cd6d3a4735a Mon Sep 17 00:00:00 2001 From: donbing Date: Fri, 13 May 2022 22:41:11 +0100 Subject: [PATCH 57/66] back to tight layout --- src/drawing/mpf_plotted_chart.py | 15 +++++++++++---- ...400,300_GBPJPY 3mo defaults with entry.png | Bin 2807 -> 3061 bytes tests/test_chart_rendering.py | 5 ++++- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/drawing/mpf_plotted_chart.py b/src/drawing/mpf_plotted_chart.py index 9f30f56b..deab8d74 100644 --- a/src/drawing/mpf_plotted_chart.py +++ b/src/drawing/mpf_plotted_chart.py @@ -37,7 +37,7 @@ def __init__(self, config, display, files, chart_data): kwargs = dict( volume=config.show_volume(), style=mpf_style, - # tight_layout=True, + tight_layout=True, figsize=tuple(dim/100 for dim in display.size()), xrotation=0, datetime_format=self.date_format(data_frame), @@ -62,6 +62,7 @@ def __init__(self, config, display, files, chart_data): plt.subplots_adjust(left=0.0, bottom=0.0, right=1, top=1, wspace=0.1, hspace=0.0) plt.margins(x=0) + # ๐Ÿช“ make axes look nicer for a in ax: # a.set_adjustable('box') @@ -69,8 +70,8 @@ def __init__(self, config, display, files, chart_data): a.autoscale(enable=True, axis="both", tight=True) # margin between candles and axes a.margins(0.05, 0.2) - # a.xaxis.labelpad = 0 - # a.tick_params(pad=0, axis='both') + a.xaxis.labelpad = 0 + #a.tick_params(pad=0, axis='both') a.locator_params(axis='both', tight=True) # remove labels _ = a.set_ylabel("") @@ -87,11 +88,17 @@ def __init__(self, config, display, files, chart_data): ylabel.set_horizontalalignment('left') for xlabel in a.xaxis.get_ticklabels(): xlabel.set_verticalalignment('bottom') + + if config.expand_chart(): + if(len(ax) == 2): + ax[0].set_position((0, 0, 1, 1)) + ax[1].set_position((0, 0, 1, 1)) + if(len(ax) == 4): ax[3].set_position((0, 0, 1, 0.3)) ax[2].set_position((0, 0, 1, 0.3)) ax[0].set_position((0, 0.3, 1, 0.7)) ax[1].set_position((0, 0.3, 1, 0.7)) - + # self.fig.set_tight_layout(True) # self.fig.set_constrained_layout_pads(w_pad=0, h_pad=0) diff --git a/tests/images/test_400,300_GBPJPY 3mo defaults with entry.png b/tests/images/test_400,300_GBPJPY 3mo defaults with entry.png index 95d32d1d829dc7452118942966ccbbd3a0c9cd2d..394b90230ea0451ef9eae85a47ab3993abe46ae4 100644 GIT binary patch delta 2151 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 Date: Sat, 14 May 2022 01:32:21 +0100 Subject: [PATCH 58/66] fonts --- src/resources/5x5_pixel.ttf | Bin 0 -> 8848 bytes src/resources/cg-pixel-3x5.ttf | Bin 0 -> 12124 bytes src/resources/cg-pixel-4x5.ttf | Bin 0 -> 13232 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/resources/5x5_pixel.ttf create mode 100644 src/resources/cg-pixel-3x5.ttf create mode 100644 src/resources/cg-pixel-4x5.ttf diff --git a/src/resources/5x5_pixel.ttf b/src/resources/5x5_pixel.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5a1e33f9c961311b1d67fb095e5d6ddc13e2485d GIT binary patch literal 8848 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 F_!pzkOyd9m literal 0 HcmV?d00001 diff --git a/src/resources/cg-pixel-3x5.ttf b/src/resources/cg-pixel-3x5.ttf new file mode 100644 index 0000000000000000000000000000000000000000..96439fe74a82fc4ffde204bf648491f2e07f4679 GIT binary patch literal 12124 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 ZTqWf3l01%oIM`wETH)WK$6g6i{{!$boC^Q| literal 0 HcmV?d00001 diff --git a/src/resources/cg-pixel-4x5.ttf b/src/resources/cg-pixel-4x5.ttf new file mode 100644 index 0000000000000000000000000000000000000000..07b090baee085a32d931ced95bb0e00bd3928530 GIT binary patch literal 13232 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 Date: Sat, 14 May 2022 01:33:50 +0100 Subject: [PATCH 59/66] test all candle configs --- src/configuration/bitbot_config.py | 6 ++--- src/drawing/mpf_plotted_chart.py | 7 +++--- src/exchanges/stock_exchanges.py | 39 ++++++++++++++++-------------- tests/test_stock_exchange.py | 11 ++++++--- 4 files changed, 34 insertions(+), 29 deletions(-) diff --git a/src/configuration/bitbot_config.py b/src/configuration/bitbot_config.py index e1068c4f..e272f2ad 100644 --- a/src/configuration/bitbot_config.py +++ b/src/configuration/bitbot_config.py @@ -59,15 +59,15 @@ def stock_symbol(self): def portfolio_size(self): try: - return self.config.getfloat('currency', 'holdings', fallback=0) - except ValueError: + return self.config.getfloat('currency', 'holdings') + except: return 0 def entry_price(self): return self.config.getfloat('currency', 'entry_price', fallback=0) def chart_since(self): - date = self.config.get('currency', 'chart_since', fallback="") + date = self.config.get('currency', 'chart_since') try: return parse(date) except: diff --git a/src/drawing/mpf_plotted_chart.py b/src/drawing/mpf_plotted_chart.py index deab8d74..dd63eca2 100644 --- a/src/drawing/mpf_plotted_chart.py +++ b/src/drawing/mpf_plotted_chart.py @@ -13,7 +13,6 @@ def __init__(self, config, display, files, chart_data): data_frame = pd.DataFrame(chart_data.candle_data) data_frame = data_frame.drop([6, 7], axis=1, errors='ignore') data_frame.columns = ['date', 'open', 'high', 'low', 'close', 'volume'] - # data_frame.index = pd.to_datetime(data_frame['date']) # pd.DatetimeIndex(data_frame['date'].astype('datetime64[ms]')) data_frame.index = pd.DatetimeIndex(data_frame['date']) # ๐ŸŽจ chart colours @@ -71,7 +70,7 @@ def __init__(self, config, display, files, chart_data): # margin between candles and axes a.margins(0.05, 0.2) a.xaxis.labelpad = 0 - #a.tick_params(pad=0, axis='both') + # a.tick_params(pad=0, axis='both') a.locator_params(axis='both', tight=True) # remove labels _ = a.set_ylabel("") @@ -88,7 +87,7 @@ def __init__(self, config, display, files, chart_data): ylabel.set_horizontalalignment('left') for xlabel in a.xaxis.get_ticklabels(): xlabel.set_verticalalignment('bottom') - + if config.expand_chart(): if(len(ax) == 2): ax[0].set_position((0, 0, 1, 1)) @@ -98,7 +97,7 @@ def __init__(self, config, display, files, chart_data): ax[2].set_position((0, 0, 1, 0.3)) ax[0].set_position((0, 0.3, 1, 0.7)) ax[1].set_position((0, 0.3, 1, 0.7)) - + # self.fig.set_tight_layout(True) # self.fig.set_constrained_layout_pads(w_pad=0, h_pad=0) diff --git a/src/exchanges/stock_exchanges.py b/src/exchanges/stock_exchanges.py index 4eebd717..c83ba499 100644 --- a/src/exchanges/stock_exchanges.py +++ b/src/exchanges/stock_exchanges.py @@ -6,20 +6,23 @@ import math +CandleConfig = collections.namedtuple('CandleConfig', 'width duration fat_duration') + +candle_configs = [ + CandleConfig('1mo', timedelta(weeks=4*24), None), + CandleConfig('1wk', timedelta(weeks=60), None), + CandleConfig('3mo', timedelta(weeks=12*24), None), + CandleConfig('1m', timedelta(minutes=60), timedelta(days=4)), + CandleConfig('2m', timedelta(minutes=60), timedelta(days=4)), + CandleConfig('5m', timedelta(minutes=60), timedelta(days=4)), + CandleConfig('15m', timedelta(minutes=15*60), timedelta(days=4)), + CandleConfig('30m', timedelta(minutes=30*40), timedelta(days=4)), + CandleConfig('1h', timedelta(hours=40), timedelta(days=3)), + CandleConfig('1d', timedelta(days=40), timedelta(days=3)), +] + + class Exchange(): - CandleConfig = collections.namedtuple('CandleConfig', 'width duration fat_duration') - candle_configs = [ - CandleConfig('1mo', timedelta(weeks=4*24), None), - CandleConfig('1wk', timedelta(weeks=60), None), - CandleConfig('3mo', timedelta(weeks=12*24), None), - CandleConfig('1m', timedelta(minutes=60), timedelta(days=4)), - CandleConfig('2m', timedelta(minutes=60), timedelta(days=4)), - CandleConfig('5m', timedelta(minutes=60), timedelta(days=4)), - CandleConfig('15m', timedelta(minutes=15*60), timedelta(days=4)), - CandleConfig('30m', timedelta(minutes=30*40), timedelta(days=4)), - CandleConfig('1h', timedelta(hours=40), timedelta(days=3)), - CandleConfig('1d', timedelta(days=40), timedelta(days=3)), - ] def __init__(self, config): self.config = config @@ -59,16 +62,16 @@ def select_candle_config(self): return candle_config def get_candle_config_matching(self, configred_candle_width): - if configred_candle_width not in self.candle_configs: + if configred_candle_width not in candle_configs: candle_config, = ( - conf for conf in self.candle_configs + conf for conf in candle_configs if conf.width == configred_candle_width ) - return candle_config + return candle_config def get_random_candle_config(self): - randomised_index = random.randrange(len(self.candle_configs)) - new_var = self.candle_configs[randomised_index] + randomised_index = random.randrange(len(candle_configs)) + new_var = candle_configs[randomised_index] return new_var def __repr__(self): diff --git a/tests/test_stock_exchange.py b/tests/test_stock_exchange.py index ded7271b..a89d91ec 100644 --- a/tests/test_stock_exchange.py +++ b/tests/test_stock_exchange.py @@ -1,8 +1,8 @@ import unittest -from src.exchanges import stock_exchanges from src.configuration import bitbot_config, bitbot_files from src.configuration.bitbot_files import use_config_dir from src.configuration.bitbot_config import load_config_ini +from src.exchanges.stock_exchanges import Exchange, candle_configs import os import pathlib @@ -14,12 +14,15 @@ files = use_config_dir(os.path.join(curdir, "../")) config_ini = load_config_ini(files) +# ๐Ÿชณ ''1h',' <- fails on weekends due to short chart duration +test_params = candle_configs + class TestStockExchange(unittest.TestCase): def test_fetching_history(self): - for candle_width in test_params: - with self.subTest(msg=candle_width): - self.run_test(candle_width) + for candle_spec in test_params: + with self.subTest(msg=candle_spec.width): + self.run_test(candle_spec.width) def run_test(self, candle_width): stock = "TSLA" From c319ce8abcbb89e31bb79e457d6dae71e3071ab6 Mon Sep 17 00:00:00 2001 From: donbing Date: Sat, 14 May 2022 01:35:40 +0100 Subject: [PATCH 60/66] formatting and comments --- src/drawing/mpf_plotted_chart.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/drawing/mpf_plotted_chart.py b/src/drawing/mpf_plotted_chart.py index dd63eca2..4d43e54f 100644 --- a/src/drawing/mpf_plotted_chart.py +++ b/src/drawing/mpf_plotted_chart.py @@ -61,7 +61,6 @@ def __init__(self, config, display, files, chart_data): plt.subplots_adjust(left=0.0, bottom=0.0, right=1, top=1, wspace=0.1, hspace=0.0) plt.margins(x=0) - # ๐Ÿช“ make axes look nicer for a in ax: # a.set_adjustable('box') @@ -79,9 +78,7 @@ def __init__(self, config, display, files, chart_data): # a.reset_position() # _ = a.set_frame_on(False) - # a.use_sticky_edges = False - # expand the axes!! - # TODO: this needs to deal with the volume axes :( + # โœ”๏ธ align tick labels inside edges if config.expand_chart(): for ylabel in a.yaxis.get_ticklabels(): ylabel.set_horizontalalignment('left') From fc2c7976b37b5b5ce7f24fc62b3bdc49a2b1d6a9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 14 May 2022 00:42:02 +0000 Subject: [PATCH 61/66] chore: autopublish 2022-05-14T00:42:02Z --- ...264,176_AUDCAD 3mo defaults with entry.png | Bin 0 -> 2164 bytes tests/images/test_264,176_BTC HOLDINGS.png | Bin 2182 -> 2177 bytes .../test_264,176_BTC VOLUME EXPANDED.png | Bin 2654 -> 2284 bytes ...264,176_GBPJPY 3mo defaults with entry.png | Bin 1984 -> 2226 bytes ...test_264,176_cryptocom CRO 1h defaults.png | Bin 2149 -> 2069 bytes ...test_264,176_cryptocom CRO 5m defaults.png | Bin 2117 -> 2198 bytes .../test_400,300_APPLE 1mo defaults.png | Bin 2510 -> 2495 bytes .../test_400,300_APPLE 3mo defaults.png | Bin 2644 -> 2657 bytes ...400,300_AUDCAD 3mo defaults with entry.png | Bin 0 -> 2892 bytes tests/images/test_400,300_BTC HOLDINGS.png | Bin 2992 -> 2977 bytes .../test_400,300_BTC VOLUME EXPANDED.png | Bin 3961 -> 3025 bytes ...test_400,300_cryptocom CRO 1h defaults.png | Bin 2911 -> 2793 bytes ...test_400,300_cryptocom CRO 5m defaults.png | Bin 2831 -> 2890 bytes ...640,448_AUDCAD 3mo defaults with entry.png | Bin 0 -> 3947 bytes tests/images/test_640,448_BTC HOLDINGS.png | Bin 4094 -> 4081 bytes .../test_640,448_BTC VOLUME EXPANDED.png | Bin 5983 -> 4391 bytes ...640,448_GBPJPY 3mo defaults with entry.png | Bin 3609 -> 3033 bytes ...test_640,448_cryptocom CRO 1h defaults.png | Bin 3922 -> 3646 bytes ...test_640,448_cryptocom CRO 5m defaults.png | Bin 3762 -> 4036 bytes 19 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/images/test_264,176_AUDCAD 3mo defaults with entry.png create mode 100644 tests/images/test_400,300_AUDCAD 3mo defaults with entry.png create mode 100644 tests/images/test_640,448_AUDCAD 3mo defaults with entry.png diff --git a/tests/images/test_264,176_AUDCAD 3mo defaults with entry.png b/tests/images/test_264,176_AUDCAD 3mo defaults with entry.png new file mode 100644 index 0000000000000000000000000000000000000000..b347977e38d30dee7e1c93918d5113cba7d717e0 GIT binary patch literal 2164 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 delta 1387 zcmV-x1(f=M5rz@4Edzfj!it;@l%{^WcB#mpl1WQG)C4a+9fH zL&gXzLbsRn1>EOCdW5}#3K8!FA{dBZKFr{ny&lK~M7L@*G+)ID@X8=5l+rUu4G4wewXKm-F33oE~+e^fl zk_L;&lJdzuGpnQ}DHPG#kg6!Q9c##b89N zgkyx8)>rXE1i8c;MVQzhy7#Q`AtJ_eErO)^?-e0m#k!3dB6uF~LJ`OANd!MTdLoX) zJBUz|KHFEe6A`vi9SLTZ5W&1%#6KTy#h-@%h zidtNRqNjfd-YmZ0lw>ZYiOi}RdV~{UYgtyr>DeVq#F3UWMtDo1QzhNZm57i!5%QG0 z?5!cQ=YmjOnD&Nm4TxZF6tUJ?>{1aiw(JoxAcCoT@`4DPtG2o!sF+JVuMyE24~GZ_ zA{dBZAcBDirY>;#LJ@U=%QuSn2O^l12pf?x9hQF}52SHUsYr;>D{qZiH$pX91lflf zyInPSJ6wca{>LAe4c-pFHQX4{a|!YQ#*0X2=u~kN?jj(9=_jImirpBz?ILms5tHjn z77~Bq*;eMr^Lyuah4h_H-;&+cs^ z?DBuvPk#}ml!~C>GeqdEPDZhh zQ^Ma*g(p2;gf~WA)Z6eBK+&!ICbP<2SiQ9=tE&P492p7ecrG0yfaC_c7!55Lv zq|%g#Y#R`9S^O9oRq=mn_Ei6xqxX!+~2-Tb&MO^&+xUjsJ ziKq*gyjDa_c_$Ik*1E{w8bAaS7ZDyRD-R+}Ttpb={T}GNFr<~@ zTr5GJAR>(TP8U(N1i6CQ zgl_$gBBC`xgx-aSeMH0?3K5B#b`XDY&@J*e2Z&(iiC78=R9W^Ek+B51V`aliZiZBk z7#X~^wJnPTv&TlUxwc^?cR-C1!*7j;0TB#DFe9Saj|2u7h+rUsfd~d77>HmXf`JGI zA{dBZ!XSG?{sl7?F$4i5Wvn57A`4>pzZZZ zX|FO2!+0(b2gdN8rooAlv};>12or&r2*gAja-+|$rH1`#?CoTj2*gAnCgRW=S~3V~ z17r7K*?DWBi3>%Pi!l+%hpc~<6cd5K2`PV28jxkad7rp-|INrkmWt4tsEL@VWHS*Y z*F>xl5hD08;7Nb7O4EE6<{y8}`@Uffqm6%}2%?}(1nPK_2=^M>MfSE^pNnvff2@e4 zd9;2yg77t0oN*2%FMf{5e1rdkR1shTsltKlO4pvQlSi2TWwFTHVwgm>*1Q%>X* z5y^*W{=AbNNvXBq{B#Y5d5ozUd$px`Bf1ZDCC(mLlxk3c};5=0xmpq-N z6!eHAbc-}$BNLX6ESA$&}6Oirq~xx|ri>L)crm^sgGKydB9J?a7>bEN zOayWt5hQ<16M@VSG4q6KY|-TQyonfm-O0QJ4C-1MAGZk`=_1V2Zh=@KO( zDs}85f_@^T>6{mdpeIqqme}1W?hAE{^ zfQ%7uJ~RviInALm48t%CqniB3=!dqJksTup<2~3tOT&LK zA~qf%CIT@Lh>1W<1Y#l(6M>ir#6%z_0x=PYi9l2lZ@W>a_lSa<`AY%EsNxDmY+L9Ek%;ioae5td zeIzV5oSo9VP$huAWt^xY)GLTMsmOoE9L^5?RG2am=~>nJyKeC-UsA5PrK^#IFK(%A zt%yjs{TWqKDh5<8Li*Al{nD2%BFRfcs9VN~Dh|5G3Poh1N@5z-Q9-$S@ zA~I14Jz~%pq2;P$M0#w?V+4e825ad*2g@OR7`z#aMdW)#dB4juN`yE%>@I>I4iiPtKuyGt@t+6OCL+J47CPOQ z2AUT^Utc65KUi`RycXVTG!f-Jg0C}OM1DWlilE`PiO`x|ErM2G5|A#!Usp=C@Zh>c zu+q9j09i^RK3Ng``xAP9h^`@iVz|MGwehIyir?P+~h0&j>$ z&6q7>f&XIu{uWR1o3r8XY}*Flt_l%v!5sjF)ucjfH+%uCl6yECMQ-@R)ZiNT>-+$ zRl<`d%M#SzalferF$swl5I!@!90b_61m4LbJ?xHP5Pa~$Km?zD3{nt3?}Z@T<>$s}(I^QB=cMsDAuuv{Pa1y_HvQOza8$7ba77!Ij?>~c z1H&!_VbzBSAV6Rf!!I5LxHJ@3EM1B&y!|}vpJ+2iC=ekmu0S~Niy*-5C0YO#cA1!1 z0wU6HQpa-(!XOfWa84&4M=z`iaTxs27zV=4oT+|8JD&c&263g^_^?#)5d#3vV6-DIFt18Krd~lu0EBN;U{9ZdLUb5Vz$OAm}AToxBG` z<3eVGuo8h-y*Rup-9Wfi!IvY#mnJ?B;!idREAIf&K}sNe$&;=}sE{cje7Vvzd}TRU zrh$kma%w=JR~C~%m{5^3orXq_Y%~Bwab*c{MNWSg2|i5>YkF9w5R-B&$F`v`2$*oe*<_ zNWF zftCtoNp0u_f_^5O4?-*xK%iB5_8#M1Agl?#%dCbGl`|rhdO&1d-8aGQ<~58bf@mq*Hf=CZf2T{lo_&_JQ z0D;dO2BNy3@L51V7V>^3M?}dI6cN=na0M`RAOxklpK3duycdMb7K6se9gS}R(X6pW z zHMAzncY$Cd;@ADTG4z8#6Nuaatssnl#^wr^p8?_CMREnpsUWbSlR<#{N5#+>4uVgX zXUU=PQezT`^TdS_F-kZPoZJIZZO{h6f*1`)DTq~1pXxw-XlQV*ZV*ws9uR+=DU(3x z$q|b|?1kAU8G$9U#~oadzM7Bg-Qbbs*S?0K4h( zk>#U7pby5HKeBu>2xC8yg6#hg-4N@%W)P(uVLF3oj|c+6jEF!WZV2vK4+z4UZ-S_Z z2;BA<5ZKUrAj;1geL=J*%YlC&xTDyJdI+grc|_#OJ_=$|L~zEv1Vq`TGKg2@h!zkd zA_7~L>ym)L`}aVw>xFg@tg&lv^Mo6Gwv(C(Fnl7K90fnX`XX$AQBja%WI` zL}MU`+)&0KYY}AUry&v7f|^0ZcVILK92XLUSP&3;;6PyG)Pcb2+du%o1`&sSWC~+$ z6Ns$0CJ_0U=L~{uD+j@ud!9{z_#MhE90&r7v7eG-5PuE%nHW=i_bNdEnqu+M-{g~P z91gK+|Jrupoa-0mR&)5j!>=gtmxq>QfNWeglY7vQ&~II5oL~2w5cv&Rm>d zA`nsDnF4}S!-2S3S@r=Tv2Za6EH4BB#V+tUeL<9+$@LBgAu%o&IS4LUNt=j@~hLQ2k{TYtWC@|@^!KR0000Z~U03WZgMJYVAgj!8Q>yCe_cCWpq+< zB-9{Fj#e=yavxz;Scy_(8%asnsonnD_j&*NKJWW}pXd8LpSOunMXWRwXGugjAg~)V z_f2kURuP1^YyZ4X59djKcaRxE5LhChs9uT1MY&O6v%j67{*lwO>cxf&E&Ex#2<`=n@Rjc6aI3^d{_M4@MUA-9;p z5}>Oc-!Z*j4xYk-hU|dV+Xtc(y*%?;7ELM!U(_g*h?r(EX=SS3{u>p!#?yb^$yBCR zVmK1uEeUu^r@>chH#ekF>ff14Wh}Ay)Jkb=eRV8}^-U8G{LmslW$k*+MeXojAo5M` zb`WOMPdt@FNcfy3#hlS%-%uTCjfqQUWPP}cyK#c(mCB9?HdLYbI!qJa1CGP!rX`q+NdhV_6P7HIj^v&59bSBj%rO-vvGwV_9tm z>#wSF&+m*cwBXC90tdXiNklq*J8Bme{6i!D;1yW|YUMB>+{#sgM}@CUTOUwAkG+2t z1brM%umz{)aR9$WO`rXiTB5eUMrRh7gu@eL1clf6CLpp_U`m+u4KB$&1I=IAK-9w?x`FTnBBITgQxxKkIfgeQXu=iqt3+mO{0+ek#1sO7ZbE>+IIA;bAy;xy)8Vo z9h)>tnlg$Jf5uw`CN0n&K+{|+LsEnL#cwvx|gsZDxia*iJ1B9 z4DRxVIMPn4$N)nLEy|c>J97v1z<%wXzWRu(#|hZuo{^96UCnM>WV! zu6coZWbj_03YehQZ6CD&BXX!}f}f3tHNf(NHf;x_^3UVbp@vdTL^rM-vrjc?#}4=r{Jm?V zuCX!aH$S!sF6qNuFeDw*n{^0uCzWnR*AzSe91d9vNl3qm_Xwp z2G2`LfG#!0vmdg(>=fXcyCXc<%ja>Me+3T8#&9SDwfhohmJ$8O)lb&r!5>jNh1d1j z8Z{Acfo2&SdA_W$q`2mi5tSq(43(puVQ!%smL+@2u}AzG?>E2OpNNqa8GU8+E0-dM z0jx;+#@`oKMcPpu8C|$|6c+eTJtifsQ^wNanUdBXC~ciFUJj7~Y-e1%TYFut)BVe% zIKBi^`E`o{q}sWD>%aZ4H~+`xm2uPfO`Gb08B0v2o-D`>-D{2o&0k{>R>9mjbf-@a z1+lP2W_*6@+Y4j^{!c{-_qyyy?cEvE*?EP?l2Xb9B_-8z-d(+nH{{!Xyx6Rzh$UX5 zoMe4%=wq1MLW2z{>4(i9Zv@OXD25$5(jMm(^b delta 1189 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 diff --git a/tests/images/test_400,300_APPLE 1mo defaults.png b/tests/images/test_400,300_APPLE 1mo defaults.png index 02cebde9e1b172b7952e4a68427aa4946d74cfda..80745be5c41307d74b9a598031baa715f7d23b5f 100644 GIT binary patch literal 2495 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 diff --git a/tests/images/test_400,300_APPLE 3mo defaults.png b/tests/images/test_400,300_APPLE 3mo defaults.png index 1970cfad0da17e7d17dfd28c395e76a9157db52f..5fe8d2f70e5a9c717bd3b851d2fda1abd95591a2 100644 GIT binary patch literal 2657 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 diff --git a/tests/images/test_400,300_AUDCAD 3mo defaults with entry.png b/tests/images/test_400,300_AUDCAD 3mo defaults with entry.png new file mode 100644 index 0000000000000000000000000000000000000000..7bbbd7ed9e3f924b54c940808cb683b014cc46e6 GIT binary patch literal 2892 zcmeHJX;f258Vv*JOV~ny1i>W_(ku-LOHe^k;IRc|8&FvVg}8u-L1Y)%ULXu0PlSMo zOA837r~!#$jPyX7rP&-r=@y6vVrvjEptfQMnP9g)-ScmLPuDqh>eT(}-a2(po$ved zeZAe)FnSmi3Z>>jbMZr=6cG6|2NdPVlPDc23iY=|U(X$`OG`^~WO@EI{&L{|%z>SI z+N)700OR4}v?IA{=3D{$nvu40?b1?pJQXvqtv%ehtMO5!8N=T9)c#bQwHHc??sNF5 zdNHby&wY$ObiM1Q@QIKc6jCSqBx<`bC`)=ZsF8&=J+3C<-SKX44WvG*^e@qm4fp*x zt3`Avyo<;h`O4y#mZWv4fJA> ze{lq$pR=)6Sc4VIXH;tyeh7&_66GTf!)7CizoBww^=?-9T{5}R|E{p4BXQJFt~x_> zQH5Dq%Um}e5;+yTt;_9t4zkS@vj3fTN|0PL5)#c7*xi`fDp%youOC#AoV3%0-*&E6 zg;FD-m4N1?CiGbH?FC&K`qHs+b}px#74Viw>#WJsfkVf3Q`_2e^6nrElf|S&Y5cy0 zL~_EQv6(m=vjGi$i?z^8M4<*t0VPxT0Pbk&Cg~zTh)U=u!s>N%UV5IjG%W=M3X^Rql6r%ur!j zIbijs_u3KXt%l$ll^iI>Yi>IO&_6^gFHr;!)0VDI>q4~;{rb7Dlb9- z^dR`)aYDBpw30`b=ZyqvFSkI`nji;BCVAs=>BTS>re9%Uf?n-wcI`HXU2-gaRUr(& zMbbMK4;Ekt>adv^QdL(o}FScRd)F z42M!kt6X$G?_LNk%!MM` zwOKA~4)o-@v+5Djwfo3e-Rv7CNz{c7ntc|leZa3+>J2`hkNL0{>XTVNeDcupbSf(y z+GbdUw0vVBK4NCq-0Brm5>wi7biE|PGyqoWOOl4|=Qf?ms8|Nytp+!Y9b(#QWh5Q- z7BdBkfXQ4Rtg?2b`r z%D}7}XvoBtuYrz(wHom{V6EjO)7)lAylj65OR+L@0TRvM z@Evt2@5hM`Sd+>NZp+H3nyrP11z`8!n6z}g&Va^%X=DG+x@(GFn%1~ApcP>EP8C#8Oc70L+_ol-!REGL6-cJz(da@Cw2GCP(NY{tW<@qoO+r;=6VZ}}g z!Qf4Cgc5`;Q3h4y9~S>5Dvbckj>0k7h%$V9CyO&mUC8sFcciK8Kf%n4pHJo@S7~0d z#k1$qmZ&T|b_hl%e%12&9M&}FV2%E{f+!Kow+%N z$brJ=Z^=q{IJ5`VuN`~vuGyuG>B1M46;6^MUUll`s+KOvcN8#kBE`$|ILE!ao-rA; z_VGc~h;ecu(lK|>$mo8u3BL+CFI4YJwn!7cw|e1|IX*YR9+xoJO)bhVZi{Q%oJjUB rdfK8eCu5%zg(gO}EBvY7$+THgc#vqPB?g9vmjfQI-Y(anJ=y;TUT~SP literal 0 HcmV?d00001 diff --git a/tests/images/test_400,300_BTC HOLDINGS.png b/tests/images/test_400,300_BTC HOLDINGS.png index 9b8930d8d25d662a10f91a3d3f36df2e811e4db0..8abcd8e87b13170102ff0bd2a9f73cfbbc07d8f7 100644 GIT binary patch literal 2977 zcmeHJ_gB+d77wyQ2q@o3#{w_J!VpRvl@S?`&_Yp^A_z(!JS<2AsS1Sh4FrhtU5da^ zL_wu9q9HJ}9h$)cqKI^*2uO=m4MwuD%vtBB{R4L1IrqGGZae4Q_qm_@5>6a9-GWiX zpirnSW@IC46iNsY2mviD&x_nbY-JpY>|whXv99hC#TvEaX~e6050k zP2u~fie{F&_o%IWI(xX8S(4sD6J^={6pfUkBRH}&ODk-EjE(Tw`g|>E$BO)i_i%-Y zk7!0TDRh5xRs8M666rDM8N*J}*w7|(KWWs=uvh$UeaBAyR@&6DndTioQ#BUAGI*rl z*|hb!Yl^-FE9rW9`uhX(uOl1dH56^2sx~QFnj)|3X;v63ZeXSV*~T98JY1`L_g>PR zRy}RI_`di%x1up%HE^e{C41!Rr(?$y2gBDD16mH_sbSThBmgroSJ#n!N>cYE*_B(x zTJwFobjUZA(mi;8uG^gMFNvENCc*t`_~ET!^2@dFT9GwSp#8&E^&@LVNN-Y1ZoLaT z)C5+mTRc~Zlz)A1TfBye8FJ+cJ@9>6^snBNV^8+o?ndZIwIgEpZ& z;eLQ-#6cGx#s;J!?_TTe##1RJp0kbZ{iK}ihO%3i#aBCqE~Y~Ir)rbS^L4D)wu8jt zIx>4m2lie4cP;7m^A_MaxeIjrZlnXB+0AZhdvk%`hSZZ$mDJyB5RbQc5?=siC9~g6 z!A4jO%wC8)5DO8%fTYHee$on8CvZi-L$FxQUg6arUazBq&>pxr4*+#j-3c$6Y!j0n@%6O?0b- zsJu67<3Zq-^7cG}r{YX};S*C@Peqma$)>hTYP$${M}ImbG$s>&>=AYilVx5?SpxV! zwiF}ts%yohylDNs?UUMNM8;mutpIpsG^O;$wEQ})P`NPoLePMgCzuFt2R@O9WUu8) zjbyKvYD=Z`IyD>(uR@FkT);%iubQw$(Aa`AD+!2GM_rrJt7@c|ep;Q>TP&8KX_GPQ zq~gV-A$ml#0lQY&h!G5$$~Ii};4%S_7Ph76@7fH!9`LirRq!`8JWEX3%=?(d4q$9ih#fZY4_h4(EYt&PhER*&A--&U{zgx zzY6{<$Jv3#0>g+A4LB#2pAWetL$kbG(wwtg!aHfeIG=|Ii)(^QV1-yIjW4P9sCjSR_!zy-h~ zHG}4>xn7^hL36DF7$Np*@s^cUpD4A@FtGE3HhTjc5t+F=`yy_6frZaEjNs>M<3X*Hge*l`r_F(`3 literal 2992 zcmeHJ`BPKb5{?^&5F{b8DIzzZ48vwbK?h{Hi4p`vb`fP)Kq5$xeR1Ie!600j8IfH^ zHU&X;K_CjK!9WlggCc?;i>#W2s36OWgHzA>>HPt3PE}X;>C=6xPS@98pM;}FOvF)J zPzVG<+>}hRMj+O}LQzMq6MFi5q&^}LYnP6i+a6q5SrK}^$-nF03jCi{z|OV#76O6v zGbI_@hGx!W(Nl^QF&l`>E4OMZt~8LW4jniX^5Tv1O>MGEmp9p9I|6>RWMe>2m0gZy z5TlM6xagE%Iq9sehV;tb-taX@?5%02N{yG^a4Rs#t?oXHMdLr??74zj=9^zYdvvbc zeW5gh+kBr0jcjw68V+S1cd2hOuaB0~bs=IHS#A>LzFJ`LuDvhB2$b1w*lv3^Pt!8h zMY4OhXTp>$Eg7(hV2A`@E0W2yN-1lFNItIj==Dwe`Gt*j@bS-MW*XvI?&c;}Bbgxc zAlgFU&ouZIyAE&_1zU}1vPkSZJ!+7i>w28KtXP`fHSy6?cZ=_pae|#n*8uK{Bs4_3 zgdt$?acS_VX4&uRAtM~W=*!aIy&`|zF;;tS{6VXfdTQ;T*I9G^EWv-%gaNy7-Q8ha z-gxi8x*xKbj$dkaXvmA*lB{#OZ(mKl|MBe@$^=7|&i(MF1m>!OYIhXqFJ{?w-u0Yd>BgWNvN8mfGT zt?H?}xXCU2$fF4^9S7801iAs^;Z5;Jw%A}Qo@|R9**3BAWbIh5TIwe1h9^U?itu~1#2Qo;KaaQC^_$mhcTLKbd=c&y-*$tXwB3`T@wM^ zDYz6dBO0NJ$Vz&nmM6$_RqB-4J&heI@%!>x&GYQi8%56y3_~9buCyc9>x1o%(ka{X ze4lQCZVkg z2KD?1lpv;V91ld7P_;6QgEHarns+y6@qo<~rh>EXDM~IxA|6igg-9m+TC}6DKhkNx zw?shCQ*A@7{Y7-KSE;k?zkm?n04QB2?7b&hfsP<+BZb%#;wrH+R#u=4E*O!ueRT^c zLWR8MzH}s49O*Oi-Xne^aP=P`T16@aIPDOH?WS|9)rzTsxl^ z*XYq*coXhR`=YlqYEpC_JCC#+Buv;ikn2D-Y2EnlMhrNL5azOiJ>M$qYegl4z>-;2AGHy)>v2H>TT8NR$`|97RsF?C>IX>CB0l8k6;g zrmNh9oWn&EIdhbs)b&(OWGs~F;!-$Hjm8a?u%nPvs^RLSLrj#AAv5O^V6(OdkNpSh zVGhkv1H67)G{Mqle9B4bbagCjKtLKZ%Z0EB1_n!_y$m4r7!09QGR1Iq191BFO4hKF z@*kR>B__OvP>^E)MnQ$6@}6y8`q2HiM;Y z4C)p-T*+5b9@V4zEK7hpUlLcDd$o}sh?cJ;mJ5koxGfS>-Jm$~auI3Tg|k+-3cCt> z@RXD{d?)gNYFM!85c8mhx74sP^O1%T)38^Jt2mPL6&3c=FBx?B!g-y~xy0x8s~yD* zf;yW`UMImUTERs;>0$?CE=)%YH(UXjof5HodlKwEN%ZdadV30t`zr2CW9M}~d;l$y zlYnp{=PTJVVsz8wM~T0O%%o`!d`VO|NLG9GI}7|hUH-Q-(VA9`9}X(jOr#yt zhiE^j1}*uxtF8#d#Z6DN!pV#?;WhX6y2|GoW(R#O*#7KZpR>oaGV~p(8j&~hke zhShX9S1)_N--6%W_o)nivjuk;xx`(Z44%noGHYkd`sJvyFVxzu=x(VFbjz%?wj z(r29E;S8f@Do@pD#DRYfTNFo^^m&@WQ%hHB2Wq=E@gDhHhZ`KQ8+Nwgz&Y78ECOZ;|VdhiIT6m-4( EADL|iL;wH) diff --git a/tests/images/test_400,300_BTC VOLUME EXPANDED.png b/tests/images/test_400,300_BTC VOLUME EXPANDED.png index 2caf5b7b2dadb860095ffba79787b5b1cc9735c5..87969914fca43a7b9c10aa3847e47b6d1c890ab5 100644 GIT binary patch literal 3025 zcmeHI`#Y4|9v>-ZW*A=AIu!GUkXs}>GBK~)OQBpc?zwakL$VpSM&+H1B5zcZ=*Sdu zi3t_amPzB-QSKF{-FCkn*COoMGrRqq-EZd)ID0+MTI+ef-*tOFpYP|hQVu!V67Y(6 z3$opXVSqx^w`k{la)_gu+5E1sj+usQMpCRCO^hE&%gH5-y zBD==ip3W7yQ9uMXH4XCLtQsCBE5aq3JW6%A#uXyei)r3+wtf&!k>#~?^Fn*%XxzjzdYjVYozp+~*njcmO^6V!B$SXS&G~C) zZ=TlP)F(XEtt_3&Y5vDK)MqVc%#Tg**5!<&OC%bpJucoWtl?#o1#?RoShC-281x$r z$IVH2NcEftOzbnm=^qt)%aU);`-khX6b8-QL&g#StcZZObIFHI(X>hGsiF$~rKz3) z0AZd741n!o5XXWkF^%^2REa*_^YckN!O>W0Q7}O8D1`eFcY0SAlU zi7ZV2N{6o8@)O3Lv2)$&9{P zRaQEBvs&(L0c7l8GpeeqM)G;&+wH(C{MUgMYjEZG5xC#pk!d6eMjKPksIvA&fd`fq zA$wcQaRO9R;Q-S^Kgh9J#2`^8X?8<9>SH>oXO$C-%dW`8L2XSSC;ECWWK*+J|LbDn z+2CF447noZZG965)t$_ryV6C?wOFyib{gQEI+1lN7(oFAeUb$XzBUP3msh#3+)yD zf(FK#k<=vfAC_mW#IG%AqA;#q1g-pPu?1_ z@kyv+TjsNRGMpA-`(P8&^*vEc15fPeAwx0TySSB>NI|9vIY?CdlSO94w4JXwWcVl9 zf6$xMqLhv{7U5#o#%V~`7FQ|3pc}+pickmUkH7ggEtY!V;}?GWVF z8oM_@gGA0bG(}eQ?UTaZdrO)XU9b~3g#yNIwGYudisPSQD}hUUHls+Qi+;mCLAey6 zom)YU&QN6Ve9N&^3CPrCy|l6I9`@;li4z3uyB1!q!sW+`G`Ht*c`yun(|X!WGx|H; z`>l@{{6+%}7E(5I`dzsR2PTKq?MlMB6(t`)_-yG6Y2OeKJWxu#h(_LA_&acNR|JG7)r%NQ;K zGK=|2GDr}SwK*4g0;Qtz{2e_Z(%WBlNEV`E*l}{ll{H@WST7mgfynf5rG;y z6gpP%8c4!16sS8bhina+(ZqTLevq~tid(49x`_JJef0q&Ty42Ps5W4Dtrm6BFCxPP zg!zk1he|rCD`LYX*Wy~*kMQ!22o_)vCaBF?#5v@%vE%cDK%kx2GYT zu`I{!YnM<3RiuxM1;s5HeNr0*!g}@gFm@61O|VRV)yrspjARyY2K=vzg+hK>Kx{6berbM`6U9%OmLRf4rMk}z3*mA87<$g}z>GHc>* zBrd(W%d^BdtMZm5D}d;hJxNjdyx$0m!BkvNlr5MPy3$|G^mby?dfj!>ld<@ksr%hF zT*Bps6RlyMRHVP+TgcdHgc6ok_bfqgfi$YuUS4Y~CmN_I=lL91`(cihtaUvM+-I|bD(e3{qjblO87z}=vuv7Sm zW%=JCPM2&Fn&Dse_nkxjub{!|NA0~P{v+=PIxJ5Kt@FFRV)n^ za9FYoR+(?Q=YBBFI84@=?-GHljDRPv(w3lwVdUmsh0hViC?utYG;0k-g@gXvw3R+V zT>;hyXR0v|QK%E2AAwDAVux1MN>{(|RmzFAPu=wHwaz27XNCQw*)iRiCc}3()vS$& zRgD^y0}S6WOd0jYcL!m%(J0`;x9P+mesqnoaTCZG>D8L5uFNjvP!9R;w(a&zqgGXF zs(JG)@ex%R_<^5&K-ux5$_L+RebC#xS4ZD+*F?asOcJ|}ow-_0su#CT2% zPj6hx{Q8)doR({lJQb`1HH?Ox9@#3hTQ?ZHVnYL8$97;>q!hIr0%3KdY+>EnSvy*l ILq{+C4r>(d&j0`b literal 3961 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 DDSUQD literal 2911 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 A@c;k- literal 0 HcmV?d00001 diff --git a/tests/images/test_640,448_BTC HOLDINGS.png b/tests/images/test_640,448_BTC HOLDINGS.png index e22cf9bfb7eb20b9ffe8b325007023f246da288b..04eb5a3e7bec0389b7d63c3bed5c734d6fe46c44 100644 GIT binary patch literal 4081 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 literal 5983 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 T6NTu?f1@^=?JV!n8PWd&Y;No< diff --git a/tests/images/test_640,448_GBPJPY 3mo defaults with entry.png b/tests/images/test_640,448_GBPJPY 3mo defaults with entry.png index c78524c53af752406dd26408205f9c4b265450b5..9a60555a33b201f12092645fcb1e41ee31ae41c9 100644 GIT binary patch literal 3033 zcmeHJYfuwc6y6O+APT7RtNPt3IG6|O`h&s0RRC309dc3p+=BYOOYCY{k8;nOifLxk?H5t`c#4cSp~L- z-lYP7R_-Quw*cb#LBYwx?G8Yy|0>B;bHRPZvTvXK8lo+JXe&bQ%UQFa=VmSEO?{dR zvPMB^=Pb`Nz)3w*f5eK-kh^xa1*m6+x%hryBz22@xYA)YD%-B)*;D$q?-9kvZD!kt z%+>^-@SS9NDJOT*pnC?{z_jm_#?c`z2{XCub(G0-#aYMfFFF0!n6fJxR;|dy;SNNF zEv}cnV7(PZOF6l;mA8RSA0}y7b-cI?o*g+$aUR}tq4UrfqgEbkz>}O#zT**_Zz^__ zBPt}@jh=Ta#~TSMUSOxcE6tqa+Qk4n9a|@ZTUYaV)HE==pRKp~`Z zn&FW5iH5W^L3N%ns*GY^NZC$Dhs%S|*zcZ?flidx%j^IS&RqQRAb)#Y?#q=SwLUvc zUg^+Z4mB5&f3sIKfJ$!F#B)D(N2SDpZFftB$;zA>L)Iz0ntcgM=Z6_QRcTE!a!K4% zK8ZEv3ZovQaZ|p&jvQqc9uN29m}ZzO=qnvINd5QxrHh+{ON5xnD%X4h9w& zyhT_{cuj8(;OOsimDxe+cj>QFI5T(glD)omZ6L7Q8uryh2yR$Yk{IWD&fBFQ18RoN z!Dz{kT-CkO?p;^?E7loRwx?DK$+}V{Kk5`t+n94XT<#3gG)?QRS%FagFp_`#=-mq6 z3Y`8x0v!$@1vyG6KJkS_xxTbILJ(G?N?*C&_`$1qm)T%K7f*AiS-o|TcPTHYS2hN_ z@LFW?5UJxu?^>QrSX2Z!F2&rXxuga%jpR)IOk5~OclB|C%l{0%VLa`Ia2>D>}uPuFh&fdyscfj=QUWBVi+z;4w!=&IPvyT zSuDhed93)0^0@uWeS7DJVrTec7nPX62MeC9^1li}0oPdNb{sO% z?(dC^aW$iP;q-fs;%gHh66yE8cG>_H%rkY1br6@)#%kIVWOHS;BeVDhpx$+#3WfG4 zD_IaG7^Cm!yG}Cpzp?@o+@QEU1sG;i$E8>d!*aY@R(%PL7&rxJ*W_WiEqzqsMW?(J zQj;$vm}hFc0@Kcit&?hhn3HWjQ*e1lsEFc>!L;Y$x?7>D8$n0Men&mfeE{SX^>A2)@`Q*U0eFN#$meot10pqzUP6 zixE1fO|?5(irB*8VhQ+(d@S3TJn6&oNUG!-Ua*okm6zejL1v1^*R6Xv&V zSi7MbOJd-;644HhN#@?dS&K8s#KlhzjM_|{mr!?=hz!xfbokPtTa@d!Tczk7>;t1C zeawaM!qDz6M}J*rk(|e@&p@r$X)&)qOpqk@cx?<33*|ae;>`x8TNH|Ka!-~&!pp2n z*1s7t(caZW7>5r^72dqtJwGwMEgsV$XKJp&v0^i&!-rk{A Y6oAve#DmkPC7Q-JdHA@~z6nkF8?cwVr2qf` literal 3609 zcmeHJX;4#H7Je^;C2Ejm6cJfmaU-;{Y9Mg|!y3?5Ft`LpP!R}0WwF^_p$*bBiyNS9 z+EG!F5QUIP5)(zig{43-KuAbLRKg}gh(I9otj4LXn)xwp^}p#?_3E7Z&b#M+_dBP~ zyXn3}0(#EkIRF5l-Q8Sv0RRF508pT#0VA5UHBuOu_VwEBs#dFEzQ^S1*3XA0~I zd`ts?IYM`rt-Iq22gT_zG&aI@=Q_2zMVzj^gJYpzGcTU6Sc{4xxfQ0gw~4zb-xT7E zUXp-xZ^#9evl=v5x#c&c+eIMVz+xw2g~xY*0c*O|*1c~M*{Gbu4-2M3KPhAdKq$@W z#X50XB;tBHA*NY3!^XmjN9Q3{TvL4{Cu_PLI(SB}H)7E^VRk=-B1bYG<8kVLpmb+R z;DmDf)o&}mo4#!n-&r<&v)n{-*B5G#i%XePa+r6BUZB2(HxKiu+dOGTxgDx%#ZIGg z##4o4u+?|i)ooo*U=tA)ORs2&$Fr@goofk0;{3jjC zFo^57kK+d~#iu#)lPc5KI*5 zNin8af!*zLly7dM4t2uMo|+DLma-IOqs`^vy}@8psXbp&A3TEy?>7LO@Z)JfZPwyI zQX<_@iYZzzn2%j5I8Z}`Mv;qF2}ZO)`;~%`R4ot}%MnfYxfGMV%{$Z-W&6a9d|bD$ zL!0bkJvlSEoB;Kp5nL4Y(Uy8NLnOo8jPjdyNAvM$>SX)O{V{yO(95{m_0`A3ExV|B|p@3O4x>`+whR_JsE^2_0? zhqN7ejHUx?Kk)Gh4XWNrGN{X&d)M=1fsqBinWXGPeu+dZ`E@7ku%Db@)#piNN16#) zEMlosB0VXgywJQ4bx*%{IK8DOI_MR;w+!Ie)UpkugrnV>{Q;T7yL z0+TER=q{i5UP(}tmdXWEh?B=fKL{phBTMf%MDE%xx`scC+$*`;HjGG6=Eu^)%bj)% zlT-OtI@G>y9d1ecW22?!W}Vx19&_3}LC+g@6O2 zG}&r&1(IDSo56*vk#HHx45f<^cPS*Oi$s&dfZZL~mvbxUwV|l!m%d`Y#=yf4=Ue<< z5C7qpUR9$kp0YdU%>bd+t@d^HiPt_%scR&e}!8!AEc889n_7vm8Oi!#v|JB!8+boY9I;~ zT=yV#@y{%c<|BNh}mOI;;}h6E;InGjg<$j%$WcBspDPF-K-eUOl4WSeP|2}*ON|K;!?i4aOSUO{Xj5|833Beq-H_p*&lsC z313laiSx>x>MR&NY9zfPi-~(6Y0N70+AOfc>N5*WH(lmyv&Yhf;R~c8a1!yrv*)uW ze4$k9_fI%H?ff}gp-dfWF<{aW1+~nrgsm$yx=%As69G5o4y2>cY}g$h4?ekr0mmZS z>#{UdjOchocxV#SL|t|i!KIsO=ijg3ZNh@Yfw0IXB4h~jsua0GQ_BRocgN4H41Ipg zXYcv{>Kgp#^lz=3E}2*}w1D6e#qvsd(H~Qu9j|Eww!U62c$?MdqLXv0J|lZ3a ztbRi%DHBaFw*W|@@r8YfwGQQz}22l>j-iDG z`}t=-BtGf)8L}$~h1#;a4%eLS#_kGX>|fv?L8^h~#b{{0%p4{-0H|6-^0knU7mFz~$6!7vWyCqGm9alhRULKCH z?L6_!3c*E>Ct(CHoEtD9YkE4~m@wMTiJGLm(=zj`=%kB9#^u-_o%p0M28AuzA`VsB zaXM+4dG{}hK55qm&=ji}6X(KcgF_FEBg%^M6D5sAgUoEzqirJQ&9GBv%l=`-#6>R| hT&wx*R{96K|4A}xErtYP%7eb5?yf`^`nJH7e*u+o3^V`$ diff --git a/tests/images/test_640,448_cryptocom CRO 1h defaults.png b/tests/images/test_640,448_cryptocom CRO 1h defaults.png index 9521cdef82d0dc230cbcd0789a049f0e565ae4e4..4f93665215bf333760dbc9e64fcc97df804f69d8 100644 GIT binary patch literal 3646 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 literal 3922 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 diff --git a/tests/images/test_640,448_cryptocom CRO 5m defaults.png b/tests/images/test_640,448_cryptocom CRO 5m defaults.png index 6e6c0938368dd69b6fd30f5f6afd49e7f766d8a5..5de283bd7ffff500ff656e982e52fb0d2b4873e8 100644 GIT binary patch literal 4036 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 literal 3762 zcmeHKjXP9nA3o=psTq^Tn8fM>m9HHcdKVE!h=fp^$k%MH$Wk+r$j8iSvmr@sZ4}Y9 zqpUaK%9d@&oLwu)SJ5`aWMUbbGQ${}jG6b;R&VXQ@4kP)yXU&jxvuAae%J4J|L*5G z&wWl#z*a9UO#@8;0JOX}du#&$2nGNU!D*lfmSZ7Af%yR6&o`;nY7}{W|9$s_SpD&O7ROpZqU$Xeb2ydiTZv|k4=F0qS0*?)WX{_71^1zf*zw2_l7~h z@XFj(wp!i7cNj5wRmY#Z(RQ}LoHuom#_pia$wW!d%ez);uc*M3HQPK((BHxK%R55;S+7NozLeMf$=X-x60{30W&3 z5zASc%=A`?#&SymHs7!?e$d5gE1aq2Uol-CDe`qcd~pL!J`r2Uj~Q%nEOZfUbI}^k zDMT|cNsmppz#jNh=Ae#=>vtIaZrw*=(X3X*&T{{5OLkI+V`WIwFh+kBQUbVRddc)` zAPrhXqWiy}IW*2Mr$1?cqnt zG^>}nfDui%q302Xm=rC0f;4VYG{@$dm>`$ZurJA=of+~CP(-GqwXYGG;-6><9U~5* z>YU|)Dg!4!TuoWSC?;5ko(NguYaGCHnBHQ*2U;|)DU*o`&PTGwm6zi}d5hy3cjf*` zd)6MX^IKVlM6}dH?r8Ie++7uJ);)T-hW@S=L9~0d2TZN&yDu(mv=k~IPMc`3Ym4GX zzs1!YJk!yj1D@M|{rt{VNVlJzY}XSSj$~v;7Pk4>ow=%G6bP;PQ2EUd>w)Iham?nk zK+eA>zi+BGa0sz)5Mwr{aTqG@ zgt6? z26Lv=$7S1(#;-;<*MCsI!PN#67W|LC91Vm+moaw@{vg*onZArPhRVLV2QJkk8BuWW z_VGIoy4ROq`s^^tC~zMXrpheZPU(u=J!YNP}kd>Y8t7JdOaxxra@X*SKwg<|H)`faJy8eD0NG+|OQ z0U}vQf}DI|FWm2-^KmsVq;c19%zodXT7ijc<7&hi6YLkAj6X$%2HfFaaZDl@^ajiW zX0_?I{{@VHSPT$#gwdQ)PZws?PhlaLC9UA)*+v}N{jF*n0@66!}Q3z$am779(V$zXyt6{eG&}vTEc;S@O=~XCDg10CkhAGAR`(^NX_&X ze9bC!Ohr;LKSnhI;*fztFRANn+-H@2@hy0!A539v#H{Db8G^CeuK@c&$cikSjRsZW ztzV2_%#m8HlxwDi0TJ~qiiu?_p-3zy)4H_=)FZjT?T${cL8nB6k%K zbwS2RR4DH#fL+f$P7V^U1vQxmbHqJ_|s!HG$BWMMU)d7a^}DSgq= zw-{H6**6>_yc{&Y65KjJ1JpmrsZM_V zK9rlb$o`>G%t{D{iuDDPi%VI%VM8~V++;lOSi@h;bc1Qs1O>oO7(sJ)<>I6skn-^9 zE~513P$Q&N@0RpwsOa8RE2JYgy@XOd?+1m|DYJnhZJ`cmXN;IY@oumWrZ*EPz}4VE zE5$F)wZeNK>$@ayMR){ksV($`Dt+K(_!=v4{~CmQa>5@>$VRsTJscX?3@724tHDPm zNFFA*;0VILI6d+&0d|EH)m${FF4bP8Z<*e5`Yx>CE{{oaizAdpTtx>{# zVO(5rnIY>uMfK10l>ai5-;YDbj2Z6CLnHgxxKUd+&Fz7dII z3+#_H(SDc+TyWnnBCc#w+2`X|?986pmL{0K5!6{q3&}gyUm9dO>vZ)Cc(7gVSpQTx znITX%vmSS{e<&`UkrS(zWe}&h^R$eG>Go=|@|esFoXP)cS7&KQ?2Y-@9?5L|P;Jm) zW+YwZlsVI{c05qN(6}eY>DaQes+Y{8it2(QHp|#S?djk2r+*WO?)<{rE8T}Lsqxa+ O0p6RodQ`d5zxo$I96ZVZ From f21912179f58fc171ad500e0f6d7c0c208151c4b Mon Sep 17 00:00:00 2001 From: Chris Bingham Date: Tue, 25 Oct 2022 21:58:01 +0100 Subject: [PATCH 62/66] Update bitbot_config.py --- src/configuration/bitbot_config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/configuration/bitbot_config.py b/src/configuration/bitbot_config.py index e272f2ad..04a6d3a1 100644 --- a/src/configuration/bitbot_config.py +++ b/src/configuration/bitbot_config.py @@ -67,7 +67,7 @@ def entry_price(self): return self.config.getfloat('currency', 'entry_price', fallback=0) def chart_since(self): - date = self.config.get('currency', 'chart_since') + date = self.config.get('currency', 'chart_since', fallback=None) try: return parse(date) except: From e42508dc627418ec90669891a535fd29cba49d31 Mon Sep 17 00:00:00 2001 From: donbing Date: Wed, 26 Oct 2022 20:53:50 +0100 Subject: [PATCH 63/66] correcting tests --- src/configuration/bitbot_config.py | 2 +- src/drawing/market_chart.py | 2 +- tests/test_chart_rendering.py | 42 ++++++++++++++---------------- tests/test_stock_exchange.py | 2 +- 4 files changed, 23 insertions(+), 25 deletions(-) diff --git a/src/configuration/bitbot_config.py b/src/configuration/bitbot_config.py index 04a6d3a1..e272f2ad 100644 --- a/src/configuration/bitbot_config.py +++ b/src/configuration/bitbot_config.py @@ -67,7 +67,7 @@ def entry_price(self): return self.config.getfloat('currency', 'entry_price', fallback=0) def chart_since(self): - date = self.config.get('currency', 'chart_since', fallback=None) + date = self.config.get('currency', 'chart_since') try: return parse(date) except: diff --git a/src/drawing/market_chart.py b/src/drawing/market_chart.py index 78292c9f..2e4e4d0e 100644 --- a/src/drawing/market_chart.py +++ b/src/drawing/market_chart.py @@ -1,7 +1,7 @@ import matplotlib import tzlocal import matplotlib.font_manager as font_manager - +from src.drawing.mpf_plotted_chart import NewPlottedChart # โ˜๏ธ single instance for lifetime of app class MarketChart: diff --git a/tests/test_chart_rendering.py b/tests/test_chart_rendering.py index ec3d72ff..4603d47e 100644 --- a/tests/test_chart_rendering.py +++ b/tests/test_chart_rendering.py @@ -141,22 +141,32 @@ class disk_output_renderers: os.makedirs('tests/images/', exist_ok=True) +def assert_image_matches_size(new_image, expected_res): + actual_res = f"{new_image.width},{new_image.height}" + assert expected_res == actual_res, f"expected {expected_res}, was {actual_res}" + + +def assert_image_unchanged(previous_image, new_image, file_name): + diff = ImageChops.difference(new_image, previous_image) + if diff.getbbox(): + diff_file_path = '.fail.png'.join(file_name.rsplit('.png')) + diff.save(diff_file_path) + assert False, f"Image diff check: '{diff_file_path}'" + + class TestRenderingMeta(type): def __new__(mcs, name, bases, dict, output): - def gen_test(name, custom_config): + def gen_test(generatedTestName, custom_config): def test(self): - config = load_config() - image_file_name = f'tests/images/{name}.png' - config.set('currency', 'stock_symbol', stock) - config.set('currency', 'exchange', exch) - config.set('currency', 'instrument', token) - config.set('currency', 'holdings', holdings) - config.set('currency', 'chart_since', '2021-08-22T00:00:00Z') + config = load_config_ini(files) + config.read_dict(config_defaults) + config.read_dict(custom_config) + config.set('display', 'output', output['output']) config.set('display', 'resolution', output.get('resolution', '')) - image_file_name = f'tests/images/{name}.png' - config.set('display', 'disk_file_name', image_file_name) + file_name = f'tests/images/{generatedTestName}.png' + config.set('display', 'disk_file_name', file_name) app = BitBot(config, files) @@ -167,18 +177,6 @@ def test(self): assert_image_matches_size(new_image, output.get('resolution', '')) # assert_image_unchanged(previous_image, new_image, file_name) - def assert_image_matches_size(new_image): - expected_res = output.get('resolution', '') - actual_res = f"{new_image.width},{new_image.height}" - assert expected_res == actual_res, f"exp {expected_res}, act {actual_res}" - - def assert_image_unchanged(previous_image, new_image, file_name): - diff = ImageChops.difference(new_image, previous_image) - if diff.getbbox(): - diff_file_path = f'tests/images/failed_{name}.png' - diff.save(diff_file_path) - assert False, f"{file_name} images differ, see '{diff_file_path}'" - return test for test_key in test_configs: diff --git a/tests/test_stock_exchange.py b/tests/test_stock_exchange.py index a89d91ec..48c3378e 100644 --- a/tests/test_stock_exchange.py +++ b/tests/test_stock_exchange.py @@ -36,7 +36,7 @@ def run_test(self, candle_width): } } config = bitbot_config.BitBotConfig(mock_config, {}) - excange = stock_exchanges.Exchange(config) + excange = Exchange(config) data = excange.fetch_history() num_candles = len(data.candle_data) From c693d5de9c6b61613752582570c26009dae3bc48 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 26 Oct 2022 19:59:42 +0000 Subject: [PATCH 64/66] chore: autopublish 2022-10-26T19:59:42Z --- .../test_264,176_APPLE 1mo defaults.png | Bin 1977 -> 2010 bytes .../test_264,176_APPLE 3mo defaults.png | Bin 1965 -> 1921 bytes ...264,176_AUDCAD 3mo defaults with entry.png | Bin 2164 -> 2159 bytes ...264,176_GBPJPY 3mo defaults with entry.png | Bin 2226 -> 1397 bytes ...test_264,176_cryptocom CRO 1h defaults.png | Bin 2069 -> 2110 bytes ...test_264,176_cryptocom CRO 5m defaults.png | Bin 2198 -> 2097 bytes .../test_400,300_APPLE 1mo defaults.png | Bin 2495 -> 2621 bytes .../test_400,300_APPLE 3mo defaults.png | Bin 2657 -> 2627 bytes ...400,300_AUDCAD 3mo defaults with entry.png | Bin 2892 -> 2779 bytes ...400,300_GBPJPY 3mo defaults with entry.png | Bin 3061 -> 1797 bytes ...test_400,300_cryptocom CRO 1h defaults.png | Bin 2793 -> 2818 bytes ...test_400,300_cryptocom CRO 5m defaults.png | Bin 2890 -> 2843 bytes .../test_640,448_APPLE 1mo defaults.png | Bin 3386 -> 3776 bytes .../test_640,448_APPLE 3mo defaults.png | Bin 3653 -> 3521 bytes ...640,448_AUDCAD 3mo defaults with entry.png | Bin 3947 -> 3679 bytes ...640,448_GBPJPY 3mo defaults with entry.png | Bin 3033 -> 2241 bytes ...test_640,448_cryptocom CRO 1h defaults.png | Bin 3646 -> 3874 bytes ...test_640,448_cryptocom CRO 5m defaults.png | Bin 4036 -> 3765 bytes 18 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/images/test_264,176_APPLE 1mo defaults.png b/tests/images/test_264,176_APPLE 1mo defaults.png index fcad30cdbc31cf8c93a5306cb2d8cd53cf9a5bfa..680028c68df8cc4cf2614abec4813eaac9032a15 100644 GIT binary patch delta 1214 zcmV;v1VQ_`584l~Edzg;Nkli*~CZ5Jj2%|3`OK4^II><)NH?SG~0vVb~%u zl%z@#LI}CZZ*&5)KoNi<07U?b02Bch6(O>J?VEoV6`@4Q{-1)0g++)^1bT!}gyI;H zf+7G#fFBs0$8cx>Pz0a|KoNi<07U?b0G|~h=OG>x0X`~1L@IwxPz3m%h9Z z*&_f&0E)Qxy#6u~xmtY@<@w?EVJQ)@rosS4l-^QaNvRzzMKnmM9i<`?w>Yu!^rIqR z;Nv24ce1iKs6>B+|JX-GWG@Ybyh}tZIf~GAE+`_J-gOZ_x6nHx1Pe~P%}~uMLN7q> zHfK4rh_2K5*F~7fRwDW?O3#ak-6C8SQTZAJ)A^H(5w#+)=UqMa$a|T-QACs8Jc9@c z4mcH|cOOi&^(^+YB3hod*?L5{_si@(%6Jj^=RJzhv6+9pM;Rz0crq-3BJ`0Drq-|M ze;yXmkP#xBS5)bc-cSUf2tW~lA^=4IiU0#eBwloNq5lVI#2YzWM8A(ssCg+h0*U|> z0lJM5vx_)D5nzmn328Np{XP+m%B2WE5r859MSvO+ex$e$9Ltbwxcx=HIO`uuGMPYx zDDx3|dJ%t%I1l+ZfZL8;fv!v|b$jiuJ?vE?oQ*x{Vjs1^I>tNQBCbs1)OC~Rc@ZYD zVi6*N2yYm?CZw8!Thxr|OCgln)P<6yaAu z5nEy5^U5z0a|?>dl;O%LiHq%*=XOhkR91FcPxNPFMVJz{ZB&Hrdy9zJqbLGVy+ou2 zy4rsM^tr(@Cju`{Dr?F@5kYknF+c>aYwVSY@Z%bY7=U1Ncn#qh2dEi@bT5+ut zQiOjLMNIg9i@Q(+pa?(_fFb}zfDbn58Wev4C<0Ifpa`(Ch@x5S1xQWauExjzs9`zV z{2E34!!aTTMF5HbjXw_hJ^T{i7ldCAnX9H_;8f{RME9DGfm5YN5#4J#22Pb8MRczT zflE+ogAhUr*e3BXQQ=PBcp>g=hW>+i$_))eoXL-L%yBiAIN8Jt2|`3A6RuwBWm|v0 zA1&bw=P^hrEie^g_tP;53(5%#*&g(j1^McjAmQqzJtmR;OBd;uIEf?*@k5-?rb@)0heoBL2Zf zC?d=?=cMa*=`chu_4UtoP>dNf?4UM-MdRs0f)K4Snoae^F`TCoeqF;uo@u~`Rs<75 c2q8oH12$j}xpe=>Bme*a07*qoM6N<$g5ZN1`~Uy| delta 1181 zcmV;O1Y-Nz54jJpEdzgdNkla3J}3S1OpKaL@*G+oGyZhCk_`upWpu+F5+L0fCvU6KHwY?0uc;E zFh9)fdQ1lf7>HmXf`JGIA{dBZAcA>^hz_lQh<+&+;C?H1zWaZqxaf8(wjQDCDFQvh z<$6JnaCJYtM<^nc-crfFBIGbiETXwx+le6J5%}IBb{nCJMaTvyy`_?U3@{MEzafDu}2O(U2`nwh4VjT>IXJt0LUe_Iy_|*`jcb z^CIqM-B3j5x^I6cLUe>Nb%%%%$p#`sSo(_CWMF2zh@Qy?0uc;EFc85&1OpMwsUo6k z9VQ|@(gqP`$w?w|A4`l9vBF~k6i!VL;ZmM1Vv`<0+TFLMPmh>CX4xnr=C$XD_^-xz z5o40IVHy~Be~4%k(UplKREvptWGgBV!JIB4`k-d`NPT}5(?rO99e;@RJWq?T?N>!i zWSWRIn(u%J1|pb=BG%$?5w13;i?CCViBK*d7GS~%)tVx%=SQg46!CbEP%kK#Vzh|3 zBP^+5un2V!+TC<|q25|?rffLbY@atGIXqp-&=IQKXgqyeN8E4{W=xq^@{P8oB(emv zL0Kiw_lSSX&Xf1zb~?GGF4)A_rMv+l(-fHaCLR-^E%QalgQrr2@!^%+IWT65NFEw) zuM&v{I}Ls_$vZE|W2ec*G!fqb`!XGfVCITg2#8~MDW`NBF5fyRfwQ~)biG{ zQr>7YJTXFqtU$6NYlxtsJz^&jHsWv*L(UO)yH$T8!ZmaAEoCjsB_l-0=0im5nz{Lw zvX9?`g#nkjP<%$4Qx=IHou#ixs~)qn`Pd5*NJt0_+s zk*aLi*p{+f-W(9YbQN)D)lxY`1k*=}&`yNWrYg%?>mo&vR#;?f5ian)2z!6Ivxv*K z!?k}|q&rB2(j#oT%A2qbB9vwQf^0ssKVXN+Hb{%=19O8hf{7fq?SQu0)=d=R1VC`My=3A!%t>#Tps zR9Jl^B#I`k4|(65lud57poNRr%Z8;MPKm?6`R^IA4d;BOuKJ#qjUe8(-F{8Djn*GJ zAR8xJmg=2t;RWPQlJhwc-n-a-IsDsoN+P_9ltomAm#~L11@n5-{AjbANf)7nn;xPc v8cIcSBAUXNWv|)}<5f@R0RR91ui_OKo5ci;|=u5Cp~l|LD6N3uqWna6lTV+&IHkKuHnh z;oi29As7?V*+-$@o0Vc++T4GW8Kiw|8YODQ6^FSoxWjTWcay^i=CMZbtIC<0If*g?}oQPsZuJx%?gcw)r*&i{C8WGW0>%t=bf^-ytrmS1EZrPq8bANFk^{*p# z`~-{ktJ%Iia@emXNRuzBo{j%v-eHJLfZlnloTv~*9 z>PiJyhTM z{`Jn7RK$Pj0ME??=MnMC{Fm#*C#oa5iui&e07U@BJyh*qn$FN@08j*=2tW~lA^=4I ziU1S=C<0If=q+N()@P68r|ggDll~-Ahgc#2>j=Q72A~M=um}}BR3gW1zP_kOM~R>a zKoNimkZvW0-fjDiP^!v_12_RFSYYszg-8 zdx?k!jYNtl4WJBhzCrF2TW=>k1?k7&4Ap#NMomyr2Sosi0JGI;?J)YL1q?&mM3F)0 zn>sWGg_Fs~aJ)0Kj)t~3 qdbpjRcZs-tU0+uq2qAoAQ6RaaSTV@3M%XVKwff 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 W9PQSMM~`nySR$i= diff --git a/tests/images/test_264,176_GBPJPY 3mo defaults with entry.png b/tests/images/test_264,176_GBPJPY 3mo defaults with entry.png index 04c43389778f726c91f618fb933c88dd61fab87b..b6980ef6a562104edf72e07fb1a1d9b14f5f0876 100644 GIT binary patch literal 1397 zcmeAS@N?(olHy`uVBq!ia0y~yVB`R@H*hcm$s@-Y5*Zkn{s#Djxc>kDA1DICqhK@y zMpy`hCLCG}%m~JwE{-7;bKYLLShUE1!6ER+|M~YKt6N-hrORWt^MCg{uF1hEqjWoN z`nLbIjP^_Y75-gHzrC#Y_~P1a^?x_?ufNvzvuxJsjN4^(xBhM{z5D-3$>W3ZcaL9g z{(JIgcI}-PU$#dJbjq8OcNL+VU4hmaUHz?5=d3XTSaLk3=8t zNAHBrUp_Yb=6PYZ?aBW;Dn2XS%+LR1ks|f;p>FVdQ&MBb@0CnB? ACIA2c delta 1433 zcmZvcc{tPw7{}+wxP~#mSx4jSXKct3sv)w>Z~U03WZgMJYVAgj!8Q>yCe_cC9ix+y zBcTRaaCgs@?wE_j&*NKJWW}pXd8LpLYRQNvtpwXGugjAg~)V z=WR}EW+5bJ*ZO&l9?qBi?kY#@U{v_P4zuzk?R?VR^h9ei*>bh3lglV%j4z3HZSoWp zMT*aLm(Oh`hChm7FHh<^&N|p$j67{*lwOp^T?q=UlHZCW+>>K(OU7a&!%xX`2^__? zG)hg)&;#y^GWqJ+bD|oSCMrbra!J+(Dj=)jZj5cAeNwcuMzoJp1{!e|qR_LvkXy`P z3DDI};Fw;AhbOS0Av<8@_JQa`FVEbjd6V+~m(|K7BBoJHTA8Z1|3-O^@#LR(xXRQD z3`YXIB>_+9)cZ>9=7ls!{X0{kj3pMGS}uvLtBNJDzG>otADZMRtX;3Us2$!5M856b z4#I5uiD!6(B$vIYm_1zN8>%C%F?Pv}tPgkaHjWX!QrQu~hAI?ahe_fB;5dkWS}sq7 z9{uI3s93J&7^%%1>$xmN4oRNb6Lw5V+U55@mhj-Ip=7z(%&4JSV&3W2UEm8bmeppk z?y5TP{Lc6S3xRwpaKO8hM5NQVqjq7zKQzc4ydrBrtr!GETX{u2l8Y zLI)tQ-AXbrgoP3QQX+{kSufqZmkm*yg6^Dnc*vqjrwyqjph4y`G)7vXyZ23TB9_^& z?h#Vzp2{(S*)1#CaLV1kwpwjDj|TrZ|oXA4hk z$0iMvCX8alpY!K|aSOBy&@|V|kksP&;gGlt?>5&(?WMSM7DT%c#&$N>doEVva$%A; zaxSAW&7VNyQv_+jkbOGJI96~*KRnUdY!J{&ozC18)2?yIP%3}C_7yCQ3TR_!B4$22 zgFCz-j*}DPxlvh)0 zzr|(Vk|iC_oxurw*3(7I5C5I$Y%%VxfmZG#z*XgW7@B8iF&>HD80kZRv2l3&sCwD) zRWC4?4BjhH0Ta|Z?W5*k>bjjA|o1D&NHKvyL{RgrajoNHozB~F@%TN znQu#=vK-UqEVv5Gtc3bPuCGFwra`7G4~Bi|4aE~DUzG|Z&_f~_XrAw=f_PZbbNIzA zbO~@Yg*IFo(O@jCBsGJ{|Jis@11vje({ey6@4Q?(R9~Wr=*G2T_NgZA*a1I=zjtlW zH8$q_=EpX{C4HC)hNNS`=Zs)7fA+}|BYkl5|Q#z^xpy>%;0)<(z+6KFiZ z;Cm?v(Zz;%_9M2JodP^{cZd&r`8;XyFULVy7!IYcW?$me5~Ba4>gifM_#;ZE@H;+R zqb5Qg&?sXgFOU@#7gb*}qLO4pp?KOE<`$}9X|gAtJ>=JLzw!P4M2zgZ(N{*la=Feh zfL)iq@%M$*b?qpQjLuy=3Jd)wo{*B(C?o0cRB>|`l(xngErZAawmq)Zt+lqs>Hg(m zoIrx9{HDnOQf*(m_22&2oBw0;+W5ifO`EE|DN77jPZs2b?ls4P=5H_vD}QDby3>P4 zK`d;+jn8X-cY$mm_^B}AUWfg#y*pzvE4KhyR7x46q@-HTx~rG+2Yg$P7nwB`vc#*E zldP`|d<=7&tG6K~{jmAtjezNT#jqnsTH}1f_83ygT@|tK)t@KOY7T$-Wc^n}qk5{= gbn3d*df#3JK0Q?+F3q^60GRc1uyaDnXaSsm0Q0PARR910 diff --git a/tests/images/test_264,176_cryptocom CRO 1h defaults.png b/tests/images/test_264,176_cryptocom CRO 1h defaults.png index 89a5d6f3897e2756aac0aa973996c16c99ed0b58..b9242ab88a10ad832d7acf71fde992bc559e7abc 100644 GIT binary patch delta 1315 zcmY+@Yc!O300!{U%&vF0GV>PWGT7-qE-mGDa&5!t9a1i}sIe&~+QEc_E>lb6-e0rR zu8O3Q%NA*orgbfYnOQ=zYt>AX%W^1V2z64)W!qC<`u04}hv(Zbmn0_DY{v5zy)k+q zS2$hBPZLttFxpmDCSpz9@28M3thqcuj;@>2F51o(XskXoJ>1=-U;pn+?{Zh}RA#$E zuO;Sv#M9?X>Qv?%d0g`xSwXoHXzFMyC7*VpSfl9B%o5dHLSR?Z8pJidZ)4}M5P5x8 zT-ahTdi&00YB;4a`~jI49izlY>OVm{5LLT9m!>(?neWSu>@^@_Bof`75TB0h>d$*V znL9Z<{xX^J|D=J+BG3fd&hf@mRkv#opQNUxAgch>%$|L9J^e<~iZcCr(HR7fZf7tl zMM6(wvr_wBmi|vBWPXdKq)%#Xu~LZ)n^Q-5oylOHcO2q_r(3z&mf_q&8ofoRQ^E{F zPBy}4KK!#(CGGnmT4{51o)*fn3zd~h{I+ywWrGXvTl%nWSxdsEI`PWDA=K!Bt)H&?gFgAn~#tyqL}$U5`+1ihHwTd zAHMem`h=xn33q=-bdz=g1<~1`zbCsmQ5s)ng$A4u ztRc~5so*f0B<&U?H6f3SZCH$LZCYi{} zi?4u{vnO&lPIr&iI(GIrLzZcdjX6XY!}y2PQOAEm(9UfRUp_I^`kRo3$rkJaf-t!Q zorjf}(i)hAyN1553EYdwiQrWzDQ8QI7v^Lq)TM`GGR+2SQd?rI%A|K?atq5*%&vDy z_mKHV3Vl#k_0lqOy!jHx73*iz7!HD)nqR9A(iulyMYd-n9c?+FE5_KDf$i6Fwisa& zS}0Z12ICID{Fsl31#YIDrghpSJn@neIS{xxN-1K)zk>Fe)T*W)0Y!nF+%}_sC84H# z>$~$pSo1Iws|kkrG*G`Vj!nt<;=OC*$Qz#BbY5U&>@+BY&^^Od6We{x5$d&hqnrWG z&o}@bP|Z2z>u=TmcmPGPjuQyOas$-?kBh$iU~8me;96~HCC_qiy~#&agiqpfpp9pQ z#68D01fqr`bJiO%bj0$0>%?=cgwgkzC%%IbH0=l3F-&QrvI~=eY zU4PVxfJ<4GN8Hh~)^9VWN>?~uv%l5hRUvH(8xHuhoo4Ly7Cm*g_$tZPMdVzm$&pT8 z1eNv$#aDl|Ik;Emu<%H&-$BMvMw}6!VKIWLDI)c-wrV-x-Gx>Y5mQu3O8<+r1Kb#xDsyK z@7+j*+UFvw@)G1R99x4Hy>r#y3lZ_ezZ@7#qkP2o3BF2V?L>clMC`_`ton$jU9=K0 zJQM*a0#F2KC_=#5^0Rf1mP|Pz0a|&`3mFiPZAkipR_QRbE38fFb}zfCoez zRVbc+w!Cjg`3FS+iU1S=9ukqNOsb-1`5etFEU6zX3UZoFgdHq5aU+~egcv&%xHStu zUO1bGzw|Z-=^%f?ZsbbHo#~XMic(q|eOko2iAP1WK7mjKpa`&l#@Y5~6Va~R;~4-i z6@f&Vm+BuAB!L8EGfdMLxUm=MHpLsieQUy zHzE{45r859MF5I0#y;jt5flL^0w@t~I$MN|?U-o(=X)L8FzxH6LFgT5V%n}is&n1n2;Y^1aKmfaSV#E zOD7Ov;}#1=P{hhkL<))k6al6YarFeiJ4Lj6(97RjP{i;eG6zb|R~=V`xQ}cRC$~E4 z-hv`5St5V#S7$I0hYT)4T_PMW2NaRT7e$EgA}J!sDTf6QKHsiS4-x4HAEP??J>Epb zT9G^v+fe>4RF=J^EQ0Fowy#U-YpaWoVW^%WkhvJYDVx3_LG_|VrmF~J@+qo!4Ah23=ryLU>Gs?}tiLw!vPZL}glZ z$y8@~BBFxVh%jLf7?*5v5vsv2ex+&qAza~(K!EnD8g>CRzzIpwn%<)@(vxx8^zk|2@CK2I6em1aV!y6iF6=Bf|+M^#G!P)(!*4W*e2%{ z5r+KY=${sm%>O$gE*6g{;ucr-)H#_VaIKUK!%QVYw}@#)tfWP_7~Xp>t}DnFp)a`H z+HV-9=2n4Tppfa)f_TSZr}%EGJEA68BhMVKN=eFWFi#K49+O5Y0?gmgHWt zFmzkCwKBwQtXM=@61zjolKBmlZmpE(T7-Qn??#IdV@kJHj{4`r1xIdqlHgx5m-P|0 j>RtN?LI@#*5R&ExP2mx0b;+$?00000NkvXXu0mjf6}COq diff --git a/tests/images/test_264,176_cryptocom CRO 5m defaults.png b/tests/images/test_264,176_cryptocom CRO 5m defaults.png index c6e8e825e34e803bbb79b7b49e995cf880937be0..f7854da87a548156f1d6841a6616b1a3cc7674d4 100644 GIT binary patch delta 1303 zcmV+y1?c*g5wQ@kECYW8?@2^KRCt{2oq>9*APh#K@Bh%78XzDj0ih}WXZP#176_ao zQl*Ubm$5%udu-eI<)6SBs<*4W4bS!xZ7WP&iCi``Q+}wB(J5yWAuu+8bIr7u|SW2 z2m=uiQIqa&UmkymARvN(2tt8~jog4&+P)hYwGEb{*&Rf<#1KJ=AwmmdMSS_=oCF0T zD3O2ojyw$_=qGxZ&ajaCNCgpc5$w=-s|X!DT~F&CAi|tP{DcjNAV!GT9Y6#*pegoo zDwrnXeqMjPNwmRuorq|m9{XH2PDChQr-;EffqzGY(=dNY#2#bbh`9&84#dZZaU#MA zgE3769r8_qW{8+}d}tGq4WeE|%d&v-kn}wfG&s%e5mFI*plKr7B0VR<%}`2#Ac6ux z1O2imGL*qdaKIBP+wDc!Luz~6> z(i9Pt*M0^ZHd{+cN6mpfg${GT9iui=`)QAwQ8%ssB4^e7Fq^Hly ztRZmu(so*0l7?T8(<8#fTf)c}B3N^CB0lVNJXwFlX-rTcA|0?<>4Qb^pq(Q2=rfCvI22*1`1A`C=q_(gvZ0TCNvts6u@#0FaryS@g9@IVAnCE^W01i{*A%CBFyR{*th%3cf(&G!ulJ2XB+7>!Dja^ z0>9gNckgq(ZoqKs0jztf>kp_;#2*zZ|B}28AcBAhqW(+rivt4$L=X@`Km-911Vj)J zK|lln5yU6E*_2;lCP5yEI49NJCWwFN$pjJdJP>hCs=H0YMZAIrhX4Rj!1^1chJLBK zD3klWBeF_VOka;MGJ6zh^HG;6dW$CY2*DVU^ayDt*%;9j3jhEB002D2AFc-wauW~stx*5~ N002ovPDHLkV1l-6LB0S0 delta 1404 zcmV-?1%vvr5S9_JECYW9R7pfZRCt{2or|)gAPhiB|No=!TnrFi@)8M>vol>qL*Z1Z zM!Kt%QUIV|)&HwH8~8T>mkqeYRE2?Ok=B#g;_3yj3R40YJKmjMYzu(=RTHOdoHECg zS*J_Nbr5ZUSAp+foe0uw{YiF z<>5LXLMSoAA_5T+h=@QQ5@D8W2F6bhmS&l|2(b6dVFL~m zp-7U+&n=!Nf+T;L{0!BDBAzIl4b9Q1qeXzpS?Z;8MdT3?NXJdr-SXYwnJeQ#Mb7d? z5exP3IU=qr9TBmCh?j68mb6JkAcZ%@an!y{d=!)y@rsy|2>j!{%poZPD%$uA8;E%4 zfn=2ka%!9^;zdNn1=zHa8K8Bk@fR$M z!kj7!*TX z7SWflSdp`QScG@i-Y=pfW|XvuYRI=na05a`w03`Ntq3|;RwE*iPl(WONA4in6kr`G z5!ew>2Zu|i3lYkG$I0- zA>yJ*#QK~i6A>h5Y46(;@e`RRLen5ZHvpDps2GV@o3orOBA{?YsD(L8E+TRPbJ`JO z?vQ^)1a}dWbC$MZ_9EuABd%XWAR+>x&tB$x5E1r$MFhU@gCZVj?zcn?G+ac``rXsL z*F-#-&hHoT3l>+1Xr&~=cBHdX7w@XuNJP-`ZV^B7cBD`rlemo-)+JLd~kcgmrB@qmuW5g5@ z*Ajmb8N$>1!d?MI(|xld!f881MD!~qj?{}tPee(HpxKvwM7W$~R>a*Ltw4mEq_Lfd z#3H!q!6HK4jDwUK5!()yMG?VC^hpt=7wQne!J2U=^->q}Emi@9!qynuZMQWIp_ z)^kLFEvN~4<%qaCZw86_F#<-%h{{vm{q%7D7$FFPAP9mWB=`dcvlRBqcjVRp0000< KMNUMnLSTY7nSyHo diff --git a/tests/images/test_400,300_APPLE 1mo defaults.png b/tests/images/test_400,300_APPLE 1mo defaults.png index 80745be5c41307d74b9a598031baa715f7d23b5f..e6b5019f8b931eb334b555e3eb1c1816612e935d 100644 GIT binary patch literal 2621 zcmeH|jW^V38^;GV{l?q;W+akl$FD|S7KL`Vwio8tWQLXoW8|F~lA|;vk(Y|!NQ_L5 z%3_+3+9~W{*&NcQiBUqw+hT@9Bs(^5i>B5ys@?PSJiC9vv-dgIxzG8Y``q_+zSnhq z?(;Mkik7;8Itqo-a-@>oP$(6iGAsZ!rP3d!`x=E(eMkF-zHfPXS*fhVKkFX{{?8on z2y84yq0kCPGKn5rAm?Xf7aOfzeRpX&YcS6Pw^sAfq<-CPCRg3_C2-+lWZp-2Y?io# zDgY@>AHbG|6KdyB_mZ^PuT^k==|mVpNQr`LtnM1 zLYG$FzS!7PM@=VDbyu?4##RT5RQ^ngnFCm#POTf7q#22i9_3<%&52M1kZ-9Lqd({6 z5;z>S<~f>d+ay}2i`2(VFg>s~~gF8m%atwR&-iFbs5hn_iT6^VQWztJ1FZ(0oMP zg1sc{mgLd8bDTA>i~Byt#$YTgerZaqG=sIJ;B&vHZFlZu^1_YC=^A!JM?6j*phmkR zzZ|v{7YU0d^IvO2oeUb{J68V#F!8}M7LxFm4D>BB{E=uh#H@EnQ(Sx;pAXu|dl&G` zVZdBA4Q;_O2Wm4GueCGah7v+oa2e&?l>USLaDy)~A(>b50+s~T3SN>W^vNFd?9Jac zB~pDL;oHyEr?qtuv0erdwmad; z_@+7eVsSN(-hI34%%i03=IV|XWQj4j(ZK_nHng&kXDP)9Ol|a840J_l;S%iDyK}10 z4QH+xe&0W=98g)mrV)gE%+sE_^FJHwlftib+Y;Q^H`H+!+%bwIeBV#N&E${-Lvhcn zC^W)c+^|M@<>P(18$_)1ls#Mc#$mriS^xeFuC-1DND}ttHtDgN-#biY@tkk+_-_FRa6<%t3w(V#?8817o4ELEoRXe9f8`ujr~klARfOM-Lx)A^xSvKE=&m1?$gZjWG4 z1?sE4$B;0tiwqi7f6b^LvbvioScn|h`lR6$E1dNdOy=Dpa>V0It@eidX&#QI#Ds?i z`6qs425?`y>sO4vT?GNtKO3%sYtnP=2pq!cxq^cYR$-$b=Hz6u; zDswhGPN4?v?L+ioVs5xSiyP#W7H4?Hu=j==f800wz-}on8MK6MNYB-~N)S*B%GxeZ zyu?#eTIb~Q!cS%ss)%&zZz z05mKsYu>?GbCv!;8Z8uBKm%hCVD?a&Z>E6>n5Z4E>gs6G--|?tgxv;<8qLK&D0mB) zZ>=<1N-BA=HyfM@S+cL?cO52PEO=se7@3aB4DW?L^ho338}Bu~3Z57fMe@;>*6*3| z9-G^AReS#)p(*`3e}mQsOQ$E}XAXtG%;aM!XWDYxQjCMVDU*kHHG@%2`mpC^XoCq$ zvv6nhE2fgBS|90GeE-@3)4zZz1=_89f;*o>18^D~u;RZq!eIx?`%369L}Ep&lqs>ROk8dr9(7{ySbeq#Tt@Ta;o2`<&b@97W%nskV)tvqrl2j)(rI$%t6QJ@Q zsfzm+1_4?Zf1E;nK&!4C_`=5-DV;i5{S>CgQn`SK$-QeV>_A1-1;3^sQki!p`w;oN zy1p`O?`(LIAMG8|cH*Xg=@$;&F~OJ+pYp`L-9=F`<`qe{Yd`tnff;Q0Zh`>yW^2TX N?zqo|Tn+~&{~Ioy8E^mq literal 2495 zcmeH}`!|$%9LHzI49{>#gj`yq#;WK#Hbtg+#A(K5np!G0Oqn*eOp(nZGkLVKmG$f- z5*gKOswv}AAu%qgL9&e<<=&b>h!BemvopwP&)NTA`=0at<^6oV-|y%1`n*5qJipMW zJG3=TG!Y1dHihiG8-YN=%54LvDV63RgCPV0HBEE(bWtc2N=3E5tSzkL74!oV(Hpj^ZeVhy(- zETOCa$*XKG(bwwn;OJP`VDkl2E8tEq)1%gmHAcKDY&?}Ju050Alae4H_;*f(vM+Yl z0vn%n81X`iicQ#;T84QJ39WfgaKl`Ar=rc(-6$iCHAd0_k9#;=JOod+4I()Xhoe)f zq!U|+PH^%!$OuJ&+$EYiQTkkr%39j5W%52x983-m#2bQpZtmZu2H)Nx^vp=Y<)C9M zfx9;d<*8O&PlMFPiZW)pMy);`_XtO zNL4lDw5y>ve8R`CvIT0LBGpJctBWCbQwspe=+QX0!Eq5o{=&C0nItZ%haJqPd}mWu zr%>B5vOxulT*&+2Qo2G^Wfy4+(yyXJDNxxD5uWi4k+vdZzMuHXUe0ix z5D^h-hcM2VW*+3=a@OPc=F1k#WZeQie`j4Q75Z6!c*25N&Y$~e-Z+nR7}F_r!cEFZ zr{3lp9M)LR(!2yH(XtH4_bxhB)Bi?$hh04WA zxr7X2;6>TZ(1f-6S^c>wxRgDUn~1@N7RKSKJH(oK{9yQ?Dd-cXi_cHwyrC_4#Y;O+ zUT+A9m(SMp_QKz`AX0^rmE?{)q>*FhA04)=(MLBfhRdY^_jl^<(*QZ>Ev@C| zQD@H)?(zC|UIoNZu%Zu@x%Dq+DD@imb&Pdqct|b zwKrClAb>g6r1@#c8ubJq~S#; ztb!9TOv3St=!ikyz1*^3b>?n6-Tpo18wiB_D}KTuLo@2|_>&yzdYvMQz*}2=z@b9A zRL9IOd~Ld?J%JDyUvTRsa;3l9HtdB;D*TS;*pk}83p!YLt6svPyi6D{OY$o=7F{kH zmrj-2$_8B~c|m_18Egm3|Dv7k%&OfST$xL00?QvqFG{IO)8w+GJ%2x&-2Q;EJ1;t5 zb7#qmV)dUBUv?fI>KSyu`1I|8J@%^zfhJ-kKEqy}R@pPWYg6xs%Ta=Wp}=)5GI^%a zVOs&C5zbaV=4;ox6@F`BM!d@hZyIn19`=z!W8;GUkWX3XSH$F(cvSJ8XTE9n;95k$ z9j1cf+o?`Nhq?&7Kw2Gvf#l5?i_P&f#)Q__A@TnEYOFAOBLo4qtoqFQ_&Y{p6Rzc7 zdr@l^MGB~G8@(h}olSK5knwAd%_y{}M9mNlc55EoXIy8;=Xyi9ce%2Cyi O8G_n@~Z#e{wMGsBd}>lbq)@v zrsP6(-WZuNn3?=dp&?N<55w+y1s+=}GD+p7S3af3N3EjYwR5h}d|?x7W!0`?EK?;d z&JTQ6)iFX256cR<)_jYl`D5CE6hM7X>yAL5V?Wl*5_K$(#2j!ul3QpxUza zwU$5Lq~w+h;jt~_7Qy5;GQO@sPGyjvZf0BzuXnhzS0Jrjb23W~;FjaY$XM(1MWZdM z{-@`PQhXAFPVUVe)nEmBwJao-85&8FB$J!ZsIUfD^HUyj6^2wUBAn{i&yBia7HU9SI*$fznq`B}?rV1TJE~ zP>8^6 z&2M*B%X+&|b#@y6`IJ*oJ{@6>=!2Spok;v`70|{6pq6QL^!-S%$bUv1aXoquOjB=ZhYE2a9YWz`01gHNz=FuKPWWVW9AVfHRVZ#r}P`X!K=vzc@>*`Gjz2^3>L>ee}b$$Tbe&Q6>uZsB1<(`Wg z_64`k#l_$qQu^Z-6!1mc5RQu$l>QM?W<8`0v>s}Netb+7cstS=*_Extku>M5RD$g_ z<;&tT4sFe_E%800PP26iSBAHV=b3x-Y5kLPXkGUpHWc9z^u2H1_Kfi`pSoRJ`7Ks6 zVMHdOQ|{eLH)CQsu#-phLGe8{Q(q?D@DI>iPUOI6tFQ?T;mWnhGTbLp;LtH0AU+O8Cn&yNwLv@cF8Y3^EdWn?W zlmfI`mk;%+A^iadt*IOzE?SXAg88Mz=wVw#ESHu*uesl)iE9^(5o7_tC^-&&I+Kel zDX5h+9C)zuc>A;W5o9FL&5S7RZoRxBz_5GQsR#M`bMg|=+0F#M;%9KR6QUg*hQgUQ zE^136y-3#s-(CkAYQjUQ0nn9P&0#?-RZGf-dpQy{>CYk(#n{dA3|w(OhCf?F8_>l|FojEXvgfyhfl0Ss`v2< z`)iI)gwx%d4SNC%u9hz`e)P=VIa;I%`kW)Y82s=wHn)}V*wmyb+oeg#B7XPE=UpeN zlKT>V?~<@3n*Dlv6Hb&=>ZoryvcIrERbrwXYBUuhAZMm69txc&1_OxCLs+| RH7Veg=0bC&79%_2{{W_mC?Nm< literal 2657 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 G#{UN>F-|N1 delta 2002 zcmZ8hdpMMN8|Fg2<2VL0A~i3w4$F+gs3?WkX~^lLa*QyYB#q>pUWa#>KIF||NID{f zYRHtP$!=yH)~S`U8>WV7YlKj3X-B@P-S4~h`ksG&*K4|1CGDftQ;=n zbDv_4+~~O_d?w_Egw;#Gh&nF~OHI#C~DhZK5K0O9>Jy+eUw2gNbo>s6uj z7-%h^IjspjmHco?SBklMVv?Q5dB_TSPo#C%=IbEg6MLzh4|DVHq72g&I3;-@asP5M zIceC$TpX#q8H0qc6b=mE%pe~eV%^5V;5v<%_@6^}27(Di)tAi|ygz9uL-TkWCUuO8 zl+~Y;o+$O*-=UjO#6wc41ZZB%hB+*0+u^e3c-JdGXOWoOK1;S-YwN@cPT7Juyg0v1 zka=^;5gxm@n&9UEVdjYjN#>+cMMCKnB?FQj(REe>P`dc}!lr*3{Ff=h@5P)>pr=bp3tKX5>n`YCUfNWg57hBJJoqV8BgLsf1cT#O;4C{lH;NCX58rBK$pRHZK5)5?I5m z91PuUi%1h6Xc+&Bwsu(vlzi5^y@6;kT?6=+ znlkrL4VqZYg|3-agfW}@_aQ`jtX^m4ge7U{vJdUBu^WwtK5W6_7Sh2e?j|rH6$z)1 z$i*32NMr z6ecZdAFZ_q-~Bj%nbVre54E?T^Fk$`ATVO;xmG~>P$IwYsbkb{ZzzWVPj=ThG-GJq z3p8e7D-58MV4X&y4p?V3&9t!H<<{$t?|OX-3ia>~W05@os5Q-2Go@}bbQHRO)~WYF zR=sjZTKSXpJKznL2vLxYV!%OB(|vzhqZ#C$gJz1J8woBH<7{+>^xIm>VRu$$Kozqr ze#>9Iks`>KcQmUVjnf5w8{pc{T46_mBMxs?MQqtYRcZ=g(aZ7!T`YyFtYt{Fbkl#_ zwPFw_K4?R#D7Ygnr)qW-qLzUDqZ12dn_!(GjUls^!QJ)E3O<@PI0Micuz&WR1m-%^ zn$Q9}&tAq3liEFB5)6BKx)Y|4tX8!SdrsTn?&)oZQXgj8m8M1DBj=D)50*%>2ZqR4&>?^O3Hc zzmTy?W#O?S2qyWv_P1wdO@kCbvYq}PF7z+iC=Yn`{l_w*m@?H7n^u61Gu}+TqznDl zf!DvqZNe3_K@V!3{nePO7aN&`&^x|hI7E`l-vKoJz_AP@75p4YiIV>s_TRFoG)>6~ zwt?KY>8*eJQiL_ctAo-1_nczr87V5r$-U>qk@dg8JgC#?Af#R)F2SHdZJaO(N#bsyuM9B!WO)LC3)h#V<= z{`Tyo$0PgX2DRb%L-)+D!n1|1sw$l&A-tOOZPo2PlAkDG%v73>_eqXNZv$gGWW&=# za$_c`g=p8}ePiPXsiypD^rBF`C)F}T_|f{6U)JQ}6nj#_+&Hr$yWE-3xhkDA1DICqhK@y zMpy`hCLCJKz`%Ui)5S5QV$R#E-FdeR7#uD>`CnfZb@DLVtxLR_>bLf;3NS1b`K_{H zjqBDwuen$3^mq7oDKm1J`T6tTZvJ@Pe%G$*tx0(1&xos==B&T{;q6_!e}_~1+3UB? zx3{}F|IGfd?Y#5e(&zg0Y;@bk2<3Nyp3C)(L4_P_c3uio_2%{33@D&PL_ zE~(L8`}^*;y!eR8NB-9C>|1~P$8X1LFK_K*-)a4C&n@oK{f}-x*l_6YhQece9zE{h zOu2J=eshgY+xto*{3J9~Zy&rNJiWs%5UU-Mfp)-*)-i9&yYx!^X$L@$yh-ge;Z4%`O8)b|J!oa13 aYx)xpUJBTuE#3tx!8~34T-G@yGywoqQ+750 literal 3061 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 Tz^bmoN literal 2793 zcmeHJ`#aRxAD?pBj~SjmgCP`i+!kRnN!zy(X3@BmvRV=fBlj}%&DSO5@|kwN7(OmF zYNg$cblKKY8ltg@j9W@AHH5DrCbyzo3iBOS&$d5&|AOzH=Q+=L-mmkV=l#51=ly=2 z^Y8up_9$UBu^0?S$%$s~j=`)$rPCCWks`uS!W#@`{nCC{4+n`vB1Kl_-{Wru{?8OR zc(nd92J=O!lf9isY~jSkjIQrZROL&iB#%dKr~9bNy%^xqkKGKpUUlHrh5?Q_4wIlb zdAdv7ALpf9>Sg2aU9+NVdoNxGnu>TIb^A ztZ2-Ry)j0P;dA=ivp%?H-rU%riJAHQtzny=WB{{4X|#Ow(H3*bO*g?y&35^vj!{Lp z^I;U=uQ%~@3cc&`GMYEHug8L^X*{K96kJQhH*bhjvSasf?MX^Mz|6j@-(6FM@Op&7vP7jRmDdCWyDCc|4?uBBYiu0NF@W@d z^anfR`amj_gIUS-8QT>(bNo-~sQ{BtI1`AOh^t}zE;WFa#gAlXU4Rs(z9v=w3!%5c zxg7cYV+fkBK&^O^-1{L;yhMz9h^OoR03Bh(W>WAefRWMgG)4H1XM?-obU0ZlnK|^CvkH*TkAHRkt zYp(II+YMu=e)6j_RiNQ88T#|Op!J=*&cqPuFl6lR3BRh=EpCVa-DO(6DX857D2Aw= zijMMS_0F`39OBTKz9#w5Xy@*>WRw%bk}bk&crc;RR&{We0e5mZ=%TKF zk&T+%>%-`O)R#KfKU6&6_HUaapigOPBA)GFg z(t~UXuMp;$HfIOoH4={HqY1~O&lJu02>R-Jxd~Nhr$hZaF4!_eGCxmjNc96x;+{`G zp-!u`P?pLWyvSX%y-8CITg@JStedZ<@+Sue6F?WS*jd0>4y9T>v?u+uJ95bv1lIR; z3XMkYnOXzKg*J8f?#N0Na(cq)Iv-ln50HkVZ;CEm)2%1DW(JE;WC6iHIKV)E#1}MK zm2VlR2s`wq-^YAsJ;&zLXrXQ}`D_yKmKHEcZSaZdyz*+rN<)P&&y=iJ=+2Ly{%8eW zaToBNxX*hvQ%vprsNTWKpDgL0%CUm*A_KtRgwNgPB`E(b7`I@#+P4LU`t1-ffOQ|z z0e=y8U+pSsrN6ahl8q6ZihS02Szh^Qx?O1zJ= z^09nh+UTaLD-*lrL|S1bQP8!ZyJ#m9`B_@o;Xo_6)kWNWqU4*_2WsJANG6s$$4~NQ zTdb0&5R|bS!IkF<#e;*knlIO2@0Z!5`3^)dobtl%r~=CiI^b6FC6Z$o0$UIbl;c(7yqa*;lf z{*Rtf!y0Z-wWg9l*QTnzF)ehyX3ucWCRZ{-KIL1vB?^jD;oT825?LtENh=zu-8VYh zmn|<#N?Y?+BaSpkQTW4bKe_oQ@A-?x|8J0?8gP>xd-3~>iGi}lui0J{g#Fo4YqM2R z>%R19-(0x7qrO=nb8}tZp%}{8(yq-eKaa$67|Wt8+|u1U$>v4TO}F~$LbSM~gp;*h zZ)HZn>D*V3Xr%meuTJ*ufFKT4nJ0XyLBvGo$GVD_Se0- z#lez@W>y2v47u8P%f>How!E^J;cq$ltxE&FYja1?%%j-Zrtr2tG${JrjN|0(me*m( zO;Kadd!4fFhju)6z+E~i!?Ue;drm*gj`G*f$m3y~ya5BF0)zILl?^9{efGalkEZ?? DDSUQD diff --git a/tests/images/test_400,300_cryptocom CRO 5m defaults.png b/tests/images/test_400,300_cryptocom CRO 5m defaults.png index a003a2e786543cac1a4a828eec41cb1e83c65f1f..3f08e88e2967d76171a1d56f65148b5d230750a0 100644 GIT binary patch literal 2843 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 RPkk$>^*%dunko5*{{o6FBgy~( literal 3386 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 O58EAZvM#rzp8prjGGG<} diff --git a/tests/images/test_640,448_APPLE 3mo defaults.png b/tests/images/test_640,448_APPLE 3mo defaults.png index e56e1f75e36fe06a1c1f1fa3fda0c3c2e53ebead..65a2517da95b2fc272185542b4fb10a7984611f6 100644 GIT binary patch literal 3521 zcmeHJc~lc=67OyTB!qCT9D?B#WIzE0LF7JEifP|_5FU;RsG{O z@69-w?A=>7-(@iWEBc8?g@8@p>{?8EDMYvf4 z05W8ESErpRg_G84=LPq54h}$^3|o9J zWPLJaj&=R%d`Mq#zcX2|5Rm5vXJ-8#mvpS2Pxgi#0#k$;=oTFa9lK^uPsf+H$R~;baifk9tX&i#K~E z|H=w%dD@o%`%1I;8LwxFuQ!^5N_8V{w|h0TnTc6^(V-A#px3Y!zK_?NV!}Oen|B6v z+sXPOPUJ4nA)&1G86zKr;|0`~Gr*5Z+S?)ht*|Sm=2Q$vRLJ)jjj21_X~{pW!`Otf z_JU8K*}l;NqY+r^l;VTZ@1KCC=F|i$gwP`={~~M@p>#@h8?j=T&eKR z%6)q$m%2Fzik^52E-WY#jswN*A)o=e##TbcjB9u0*QRl@Qnz7hR!^E7XLN4C!$B5Y ze~<-4U}}uOlOKi1sE6B#0Z$rbuL6};{t1Rg>XAA=>19>5WNhPIb*PZY48A|B(Z}l) z{+8CnmMcTY^-mJ5-QWi?4NN0snYzMTy`8_Hdr>U#UUH52FX6iHyvV0qCI@^U!27ww zYD|vwQn<*_HRfQ?(N8$YL2~&8Q=?Jz!b*=J*u5p1UPh0I&vuKdP)_ir_#{##XM^&~ zjj<2?D|l6FLHnuZTE79do5VH$q1Fnt!A$vUEsrD-yRlWK`dKuXtGwrEP-`Tl8Qse= zQ%%T6FyQsRORm`wRx!4%#iGvQ0n4Ry-<82)3YJ$_HPZu+QW zbI41@lXJOq-hWHvG~EVY)}jUCeGkGE`3hj}<7Gb<+G2!*t-#%_?!i{GJUvEOGXZ9g zZ*_l!*>G)K^6^Zd2-g*wxtT}<1eFW+g5AbbU28N684bFDJjoEWfWjZ#EqqctdF_Oc2jGMT&(sH5=!?6BvkCX)>vo~UftEB7o0yst!P zvl`^lEWmHkH420*083ehXxsK6+LG&kL1_z?m=NX)!x|%Dgt+4@Y2?-w1ycSeX^)Om zsF84Igd>>6wnZ2yW!o~e5Z%HNVW~A(;;R@Hi$;0t)hh-)*g^EBqM{JHd4*e>b>J zWk>@Y0H94LTs{MrbBWnWJjr*J$^_u(F9|Mti}#Jh!a| z{mh+;^F2HfqieID*l_(DfxL>b@CSe&nr^Slpq)LRjgB)lc%cUkP%!gs~q7~UWE?VKQ6TB1+a2v{Zfl`c72G$@7mux=GBbFiK`g;C;+ zol8kqx!^DIt%sr~Zy`sGt*24n;W-K6ewO{2fI~A=3!HL=wb(=1KypGmpt>Ut3MVY2>m!XH4NNb?Nf;{sRbk(zW`_=CDSWxGqA;D5gHUpc0aeTe3T zHecP*)9rV+P}EWhm|p5lzTPS$nS$-Cd$tx_6YU8%Y%_4E3n&FrH8UlxX-%e9xA^I? zOmq%1AdwGwp+aDKEl~ykbQp)>m98gA1*vlIG|ge0cWxavZf_XN9%~v)35#4#pvI$l zCLem9u~r#ZY_J_H%6Q)!UakUTyy4NBk$4;La4afC4w=nk@vjRGJ!VJ4q=d67eo|$`IJJaY@}SW?%Tfu9+Z5s_N7)XBCnc OSKZybU8|f4>Hh(Uw}evw literal 3653 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 literal 3947 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 A@c;k- diff --git a/tests/images/test_640,448_GBPJPY 3mo defaults with entry.png b/tests/images/test_640,448_GBPJPY 3mo defaults with entry.png index 9a60555a33b201f12092645fcb1e41ee31ae41c9..f82b021609f3abb5a8f7c94fbfdc8f41f5540d8f 100644 GIT binary patch literal 2241 zcmeAS@N?(olHy`uVBq!ia0y~yU}|7sU_8LV3>0BqtoZ;a@HfCG#P$FG|3DEC9tEQz zFv3D0G~v){u0WwQRe<}riJ&EA6>Z`ZHCrhBSXt4v3BqulXpKWe!vMQWq0?T^;%l_`(z zf1DR*a<`!V`xlk>a+^brvE@#+;VhG?Fd;7EJ z7w!6d`F+D@&VLs1&Eem2%GYg3-t<#--OlrUYvT{QO%_tnWSlfgjE2EzIvC9cWEBO! Zn1h{S_qJ{L6A7w)JYD@<);T3K0RS4Gj&1+| literal 3033 zcmeHJYfuwc6y6O+APT7RtNPt3IG6|O`h&s0RRC309dc3p+=BYOOYCY{k8;nOifLxk?H5t`c#4cSp~L- z-lYP7R_-Quw*cb#LBYwx?G8Yy|0>B;bHRPZvTvXK8lo+JXe&bQ%UQFa=VmSEO?{dR zvPMB^=Pb`Nz)3w*f5eK-kh^xa1*m6+x%hryBz22@xYA)YD%-B)*;D$q?-9kvZD!kt z%+>^-@SS9NDJOT*pnC?{z_jm_#?c`z2{XCub(G0-#aYMfFFF0!n6fJxR;|dy;SNNF zEv}cnV7(PZOF6l;mA8RSA0}y7b-cI?o*g+$aUR}tq4UrfqgEbkz>}O#zT**_Zz^__ zBPt}@jh=Ta#~TSMUSOxcE6tqa+Qk4n9a|@ZTUYaV)HE==pRKp~`Z zn&FW5iH5W^L3N%ns*GY^NZC$Dhs%S|*zcZ?flidx%j^IS&RqQRAb)#Y?#q=SwLUvc zUg^+Z4mB5&f3sIKfJ$!F#B)D(N2SDpZFftB$;zA>L)Iz0ntcgM=Z6_QRcTE!a!K4% zK8ZEv3ZovQaZ|p&jvQqc9uN29m}ZzO=qnvINd5QxrHh+{ON5xnD%X4h9w& zyhT_{cuj8(;OOsimDxe+cj>QFI5T(glD)omZ6L7Q8uryh2yR$Yk{IWD&fBFQ18RoN z!Dz{kT-CkO?p;^?E7loRwx?DK$+}V{Kk5`t+n94XT<#3gG)?QRS%FagFp_`#=-mq6 z3Y`8x0v!$@1vyG6KJkS_xxTbILJ(G?N?*C&_`$1qm)T%K7f*AiS-o|TcPTHYS2hN_ z@LFW?5UJxu?^>QrSX2Z!F2&rXxuga%jpR)IOk5~OclB|C%l{0%VLa`Ia2>D>}uPuFh&fdyscfj=QUWBVi+z;4w!=&IPvyT zSuDhed93)0^0@uWeS7DJVrTec7nPX62MeC9^1li}0oPdNb{sO% z?(dC^aW$iP;q-fs;%gHh66yE8cG>_H%rkY1br6@)#%kIVWOHS;BeVDhpx$+#3WfG4 zD_IaG7^Cm!yG}Cpzp?@o+@QEU1sG;i$E8>d!*aY@R(%PL7&rxJ*W_WiEqzqsMW?(J zQj;$vm}hFc0@Kcit&?hhn3HWjQ*e1lsEFc>!L;Y$x?7>D8$n0Men&mfeE{SX^>A2)@`Q*U0eFN#$meot10pqzUP6 zixE1fO|?5(irB*8VhQ+(d@S3TJn6&oNUG!-Ua*okm6zejL1v1^*R6Xv&V zSi7MbOJd-;644HhN#@?dS&K8s#KlhzjM_|{mr!?=hz!xfbokPtTa@d!Tczk7>;t1C zeawaM!qDz6M}J*rk(|e@&p@r$X)&)qOpqk@cx?<33*|ae;>`x8TNH|Ka!-~&!pp2n z*1s7t(caZW7>5r^72dqtJwGwMEgsV$XKJp&v0^i&!-rk{A Y6oAve#DmkPC7Q-JdHA@~z6nkF8?cwVr2qf` diff --git a/tests/images/test_640,448_cryptocom CRO 1h defaults.png b/tests/images/test_640,448_cryptocom CRO 1h defaults.png index 4f93665215bf333760dbc9e64fcc97df804f69d8..8cd204fd4dd83d9208eb2835010136855bf591f1 100644 GIT binary patch literal 3874 zcmeHKX;c$g7JgN!NZ16yW?yWf0b2!>RYZd=iVKUV&2m79qr%7=JAR7|MRMcs4PMckg$<``)Wp zw_c_0@N`pE(o+HesBYcjx)T5x1pvZG1l&R_T*kucar`j@|7SDs zE#+Pz0Lr|rt{ZmKaz}ept zvxmuXENAVji1_Gz|ehD>OMZ^#eOz&!T%ATg^;|Tn{7i~ z70*~e8eh5mgy=Z9*Ca9rdZN0A#F5*w#y6rdu<0klH`@+IRLxFBhKr;_<#C9PsSC7O zaR=%RFQ#MyqRv-%b5xrrI9t5(kfe50WRjQ%jw2SB1*BxX4TaM*E`dV4d9{{MqB~q0 zQ0Iwmm>2m`Na1Aai>&CX%Zndg2rq~(4^8xi(=?ZO|JIFf(m<*Pg3uTgEO{yPL>0(2bt`4gL*s347*4|P7ba0_H9w@5_he+6sSe$;fsEeq z-WK3mxc2@~j^I`25pAV2NvfPz``Kw5`bcN?sAlbrjhz+L>y3vJAGU^g-4!d`z3Bqo zDtjqz%0k$~YMjT9q#h4P3&FtybB~YA1fsWNW~y2rq=LcwM;3HVl_YF!+rA9be4DV0 zNQ2kO-kt|umj-@b%u^K9WWvthxMD#LZV4_9Pnya{0xMNE5~ z%KIfp99NMU0FOul{+!?+I_yW{ug<#)GA@_J$*HV#&d>ntoU*XP8x8Ha>!ieQaq@G6 z^8FQtEijv5iXo8}VpviL+DeYc1*%aKHlvO0^H_<7+NA=7W)xGW~Ud@6ot({%Bj6^emW-$c%z`lk{%rLzdM!d2n+ohOZ+lA}=m8dqd%Q=6A_j0wCUrn&jSa-SSU!nEAb^OKE{#T%&8b$w!RABYM z9e<_BB&ruIJqN_57@0ekk1s*;CiMJsgq_fS8lmajA^P>b>b|P4$hWSu!JbADC2`5g zkFJY0d+0lKr-J&n3Yq3D=Uv9u_ne=shrqSISn!}FUnM~A^=Z(|Je*l9&x1c}d-2Hf`@ax!`@;62;~xHK9FzX| zD0Jfm-qrpQNUQmK1<8o;KK=UB7Njc&5G5kl^&8MeCB7;gSo`Yo?cFh+QdkC^uV@XM-n3egbQrx}<=F+X<2#=2?H$I>&Sf25nF64<9S?0nJ zD|j)l=y>-jKx7Y6L`$(C!iwZ_FSJ))pu-5cL0@9_2(2BQQZT`KZI!A0hdbIX6IQfE zBoq-LB^K>7Jh73;cFf&7s|P7j9q@9#yB_ki)S|>)%X`|3}l^~ zrmJzR*XUZFI|V}jXw{nx=!i0Z zXN^sM{(bBSgYBAnVI#S$xxn$xW^@o_S*6x9fw_Y;9rP@$bbvgg{Q9zh zcrq3(3wI*1;%6eER&iz5)bc~c`0QGWq>loJ4A)?jc5v=k^vwa^H#@!Fi=VG*$3HLH zN0Sd&3K1F?RLZ@b;vE~`dxh)T9X(K+4>9wt>b$k3J=aOpB*8|SIp*O@KLa}5$OzQY zRuZBXoz@-Cu2p0uhu9sZ?Q5yvjC!C#o9o>i{e2aNQPJfoCN7ZABFbz_n26ty9huV8 z<6w{uLf<=IP#xji)AINv&Px*2KBVWRNTix#f^~mJOwT7sG108r_n?rl6nl%3teuwJ zS>U&>Dr2;`6Iw($?1JbRszaL z6qGS8($7quUHTPdmb(lKpmoZk%r#+mM{kt#+K9&|QFR&$wJ7&e;TkT%z$^ph99Xdf zRlK6gkDZOofmPP-MLD!fa0`AFdqou}S`WEGeT)-A$$@McS;>0X6`I@h+2{l|Gk4bA z{u29P@>gU_=7){OyuH*zK?aQ1+v0*;)$Q zXN@flVK20EH%`?{XBe-to7>r%SL!$ry literal 3646 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 diff --git a/tests/images/test_640,448_cryptocom CRO 5m defaults.png b/tests/images/test_640,448_cryptocom CRO 5m defaults.png index 5de283bd7ffff500ff656e982e52fb0d2b4873e8..9ad414ff488f1e34d3ee4c566897d0a592284dde 100644 GIT binary patch literal 3765 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 literal 4036 zcmeHKdpK0-AAiqrXwWcjxig6F&8%B;oyw&PQ(JjRVp1DLA!;U<=?FvQve7mr5sR!s zyM@Yfy0Mj8DWlwm5xM0SM$Gt)+IHLh?LPbb{{HQGp7(v;_w)UHzvugY-}5}*&pEw~ z>VTJ0lL7$XH*K`t4gib-0AV;W5h9+wj4J{J+Z=b=&CSh;koocN^KS+I&nnjvbn;OW7!p&zw`}=*`G$3imSA#}!L{4E!78gB51Zu}%VMl#gt=Pl014 z%<5<|rC%0W-%naSw<7$A zu^2Vq0m0=*h_za`%50@tQ4dmh5^tM|MjkeHrrIl3PYDgWXWKJwmGiXYgcf(boBLAj zje^mE2kq_djMHH6;qal-CCVPU6xSB5sZ+`*66;o{%$!L}js{=X3msV1Qxi9m!83`^ z$5j$)5-#r)X!GC4j$QK+e!Gi~8`Tyg8w@v}ti=${Q0xQ6M0uqVNv{Qrtp&NcH2 zF+uos7Mu45U^RP+#t+Fu9=o3gwM#lUuK8A(7O(e`I!?pR_o6(1GZazLz=Ux1Z?v4| zk5}{H(%lLI^1>T^jo`>TCO}HTL&$#aNuCOHyz@3tp7WqTGat=vfAm2XQMtAr-E&ou zD}O!chBZVzcnLJh-jPDseR<$~x93lU%;5KlvuZRHsH^_0hxkMSBe_gGTw{xxiXv0d zXI=<9;!8{cdQHR}PXn7hL~J3#-lWETq=cAV=!bG$3^3K-eLwNi5q4|F+LKY&Dd+`U zg9OyWe;;TB38O%er6!HRi&o!&j_Xj25OyS}CD0Ow;hLXE@4t}@utt1XAc&Bu3fHVd z58%i#2hkjy2<3~FCiSPgA69<;8c%NivAd&q^?gt}(o{6mee`a!J?hya6R#@qHZk%W zdDi<13JXgj@#xtraX!lOdVGvzN!~2(%K~njF$fgi(DW4`HuLSB1W7u0ATv z`wC(Bp9MTwr2;(+fv-gZ1zfQV?8rC7qzuK*JUL`anO|Bqp0x0swG%NcjfZ| zB6fE{Z2@(K&X+z!%p6CK03stYQC)k`6DhN`F!zWCEeZ=%Ja*A{uSd*^-*=orzK5!C z0Youzm7(46APiYohG)o$?jxh4q8>-4p!NP8-iQj@0`n0ppWh>{>7I?jkOYU2`A``$ zjRqE+P&984oFDMTZS$H0DFZI+P=xJPDFrXaUVLyS(7Nm_p{74#L@2kZ=oFA7-(o5u z8`1oU0wNXxpCQn+aU-rQp!9b$3opu`Ru|i+3hyNT*UZ+#G)$qwsZOS66@3{b&%L)8 zo3IXUcQNaE@ZeZ1pf7@s#5`*4YI(PnuCX!&NRI61E0!;KYvw+n4!5dSN(8ry=|Gop z0p643xZ?bwjCwj`dRI)L@$}rBUhR>&u#ccDWO_?5u7l;4oU}%oUrg5LxuM6H z)jX4)xx`42W``n6?a;m<2k|z9T`Ee35f1yY3^0{fox?u(yR`5 z*B0KG5L!*yF-|HFq1RGL>Ak-Y-A&-ItO}hc5qfRh&9sW@N{D=-o~hG zcR$Yrxw>-+#xMFBM@YK@zbA>lp%7Ve84Jve$F+;b zJ9ZeRiaL8Z!haHaR38(5YV@)QJ1_`|6?OJhA{H;r@f9d?$Ceqve)b-yw%Ah5r6er) zKu3ahJD;?Ix9N`!ezOEy*u5VG&lY}el=`@U6Gfw5)4`~U)4=TbMDdw2IvmR6z0rvW}#k5p}NymV_zS91J*Hp`wLM^h@awyTyVr8z& zijMKsr-ThL@Ql=r=+$4Qy(b;+O^Uf^xfCGHD|*wlNMe$NV}sW< zGVYr>pgs<3ATP&Hf@eT!=-AvHM*aj0b*;68=XFeuB-w-rQI`z!Zf%C_(>BZ(Z)3Pz zrapYh>G;lLOrwyg)<%>y4wR(#N+t)8?P03m^r&-J2FNjun!>YZx2Xo&ST7IK8 z;&#;}V_%wBP{Pn?mFa>WwH98&VVRo$!ErF~3n}ymsr9=;`ULMCe5#i#mc;Lj?ZfKt z>*W?XY^k^MG9N+7l-~4N9g50$5}S%%t+VmE6C@2~74l>Ikk~j8(O>%kf#|mGvm&$B z{7RGTaAID~{rMHYioAb-^S44j@b=G2RxP1aolo3~o*`*w098+OYsj!7I1Jt&*2hPF z;Xfbsq!g;Hg8`r&&)=YNr$D<&&F0qEyhLry4wBhycf1=zs zt*)}LiqCL|D&{IeqV7@TJk_1R~2qeG#qT5i62qZ7Q5u& xw$LN;i8bpLsciGOXX3ZzGnGC3fBLK9ww=8FjUCMi_DY|pZnC4=7OtnA`VSzoeeeJP From 20bbbce35c8277edbceddb9badb4dd80b8b58c41 Mon Sep 17 00:00:00 2001 From: donbing Date: Wed, 26 Oct 2022 21:17:13 +0100 Subject: [PATCH 65/66] delete old images --- tests/images/APPLE 1mo defaults.png | Bin 1832 -> 0 bytes tests/images/APPLE 3mo defaults.png | Bin 1872 -> 0 bytes tests/images/BTC EXPANDED.png | Bin 2114 -> 0 bytes tests/images/BTC HOLDINGS.png | Bin 2164 -> 0 bytes tests/images/BTC OVERLAY2.png | Bin 2170 -> 0 bytes tests/images/BTC VOLUME EXPANDED.png | Bin 2336 -> 0 bytes tests/images/BTC VOLUME OVERLAY2.png | Bin 2427 -> 0 bytes tests/images/BTC VOLUME.png | Bin 2353 -> 0 bytes tests/images/GBPJPY.png | Bin 1901 -> 0 bytes tests/images/bitmex BTC 1d defaults.png | Bin 2087 -> 0 bytes tests/images/bitmex BTC 1h defaults.png | Bin 2130 -> 0 bytes tests/images/bitmex BTC 5m defaults.png | Bin 2337 -> 0 bytes tests/images/bitmex ETH 1d defaults.png | Bin 2177 -> 0 bytes tests/images/bitmex ETH 1h defaults.png | Bin 2088 -> 0 bytes tests/images/bitmex ETH 5m defaults.png | Bin 2312 -> 0 bytes tests/images/cryptocom CRO 1d defaults.png | Bin 2193 -> 0 bytes tests/images/cryptocom CRO 1h defaults.png | Bin 2069 -> 0 bytes tests/images/cryptocom CRO 5m defaults.png | Bin 2182 -> 0 bytes 18 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 tests/images/APPLE 1mo defaults.png delete mode 100644 tests/images/APPLE 3mo defaults.png delete mode 100644 tests/images/BTC EXPANDED.png delete mode 100644 tests/images/BTC HOLDINGS.png delete mode 100644 tests/images/BTC OVERLAY2.png delete mode 100644 tests/images/BTC VOLUME EXPANDED.png delete mode 100644 tests/images/BTC VOLUME OVERLAY2.png delete mode 100644 tests/images/BTC VOLUME.png delete mode 100644 tests/images/GBPJPY.png delete mode 100644 tests/images/bitmex BTC 1d defaults.png delete mode 100644 tests/images/bitmex BTC 1h defaults.png delete mode 100644 tests/images/bitmex BTC 5m defaults.png delete mode 100644 tests/images/bitmex ETH 1d defaults.png delete mode 100644 tests/images/bitmex ETH 1h defaults.png delete mode 100644 tests/images/bitmex ETH 5m defaults.png delete mode 100644 tests/images/cryptocom CRO 1d defaults.png delete mode 100644 tests/images/cryptocom CRO 1h defaults.png delete mode 100644 tests/images/cryptocom CRO 5m defaults.png diff --git a/tests/images/APPLE 1mo defaults.png b/tests/images/APPLE 1mo defaults.png deleted file mode 100644 index 4253e8a7cde991decf76f80e5d703f0833ced538..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1832 zcmeAS@N?(olHy`uVBq!ia0y~yVB`R@H*hcm$s@-Y5*Zkn{s#Djxc>kDA1DICqhK@y zMpy`hCLCJKz`*>>)5S5QV$R#S-DRs41YGC-`R~5HmtEpXU`X7lo8@amT6s2@O0-sN z@3mnO%=cA4Vfa43NNsoI{rf+@E5-HgoVd5N=~uUr@-E-B)AMfUiOyYM{A#-mljGXA z-M3#p3W`meoPOC_hVSUQTaRBF%6+^0x^qLRzIdTU$d}pj&c7BX^5!b7I_P(J;lf3W zW*VF?did?(rvMhkmM4M>rU&0Xc5REH2%`p5K#P<4E|vS)3ppGF8lW^r4N43U#{sY7*M?O+E0sro-tR4N33;o0tLwy;uYDaMp?Lzo-$kn(YUOz4 zDtO$()+J17=sw!PWx8Z*UF(D9~-pvz(oI1N+K@vFL5^7AL_*M`kXSyS8v zXX`7O$>~@M8M(?Q&h{0|7gc=sUr8+Z)Fh>(^LysT zxG3*)Z_f6QY1z&GJ5BJO!`(|tM@mF)pHkuj25*PG-M=fhOI>sRdCpQgQ`FfZ*uV3= zQa()YBQT+ zi^`4Xb~kP=U%Q-z_2^lXi-&AKg;t$m_}Dc&;}pS_GVQ?Dd`rIJ59Ogn|k=Pgg&ebxsLQ0MuI01^@s6 diff --git a/tests/images/APPLE 3mo defaults.png b/tests/images/APPLE 3mo defaults.png deleted file mode 100644 index b1b65620bda7ef2db44bd50a354e7894d69398e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1872 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 diff --git a/tests/images/BTC HOLDINGS.png b/tests/images/BTC HOLDINGS.png deleted file mode 100644 index 81ce25499274a5b51d3733782e459b7063a3b7a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2164 zcmeH|`!`ez6vt5k= z?S35qSUUm0*pwbgt9-&)QBknq((@K&Ho~}H zY4eA@uwTTZik@?1zZ8qg#ElqCw3JaujBeOJ3p4U)fL3}Meu8_^X~ON%kkH#=XU(9%>y;G__I+NhfClKZ4zUt)Yk22& zzpy)$_VZLfr*rJ}vtcY$@&e_RDZ+*%HY1;lgv$<{o|8S2-D}NK5bcGmgJ0F*jmLV> zL!CApXM{e&|GMQ~;gm=}uuehK(Cy1-%PNEywPj_&S?PTgdF0cH*}M22&q7TzC|w4* z9o6?*WDq#jZKFn`YmVhNb-wGiaVg20@rAWT6Nk;)yR;yam$HZw7Bs+ts`s;ZP8vX` z9#$NehYf*N^94Q2>v-=3^c?_4hbDq-MGBw52xSIEgUNAv!YkHN{U`(W#p!9F8^l?a(v?p=N5lo>*+6GPfO_l($iV{+9|&L9mp~aV-&`BEe3EFEIcEW@O{;F|==`GP z3hIAkL!)E9@Z|oe>IXD4A25914YVusEg?p`0swOl;>wtQ{84o(4(4SZ4t&(J-5GA- z3sBSHT$W=wDk3jd!&Uv}ju7>&3u5Aka>@#JLh3zb+#E)PY5V6h=<?d=(79YDkO8 zuBkBHz=ohPIgmt-JEfs~_DwHKxZc1c%IGX!V=w?b0P}~M0Qwx}J>ejG4PZLg$& zd`;Uf?v7eOOt<}FcNP1H7#*=;HPfImP^<0O()RghrfhBn za`eI;HtK$icN~LxtXS$mYc>{_%(7Yq-macH=7RnXW0umO=ql zpDGQuwA6lUEq1uJbgJm-*G%W_U>Q;qpAfG8WtK@5-Fg z-gGceEFUQaV!8uuO$a<`Nv%D)#8q>duWk#lz>D4ca%9xcZ0soU)ac)g$c^qv)(<}t zc!ma@fEzquJ#6aeVGomBzKuH$IH9f5D42X#S**HLM{McL4v|Fx93V;Yn#ICdb4e^& zlbN`SOt@`O)KQTJQ%mW>A&Hg~L`u(kVM!)f30&sm&lM)`zQ8vaUjM@>+aCVvj>iU) zRETbo)n*)MlGH};ghJ^MV^2rU!gG`Rc!MLm>+(C{8JOw|_3%IWL*hb^x^~=Ou6W-U zw*v5F&yMjEw~R?rWP;zrD@=b*a6C@MV5Oy6%=0vvrRWzl#Mmq9&^V^WdvaVLat=;X zRsO`RADYyTx^6~e>CS)s^LZLrr~cr0|L2ePA*l@?nL3Ty?*l{~YJ)xSH}h#kz`sak zfAJQb?!}*WQK9wy8h4lMsKLs{1IJU8O+gn#Kg8_ay4=x~Y$Z$6=3X2dh~CSfi>}5> zJRt)zLEz09S3ZpJDz9Sa;cj`!!L6Ripx$5+Oh1!JI{9ImeGWxp*pQEd4t%;d^`#|F z`lQQ5w$I|17Fuo?l&B{$Xq;m(Ts`VxOxUzQ3PTvtYJoSM^N2VQjd}YnX6Hs+z)vIC z?zD#73@ANkS5&JE!Z`o781`%TzUCDq;G^Ac2Bw4IP}|U(iErg|#Y?4Hb^4^R8S?JJ zd4eLUvH6IS&kAK~dH8HWCA(Citt_qK#t6SQ9P0`|20e~#O?8#sC3-J0u}vjwx;1A# z&#wke9Ljax3GZj3?SbmhomB-|9JFW7UD42R!tlO6GLmjW69#gUURa=<`0xQI3oyYB!zQ|3E9+Ux>%t97ZI^lic@j_V!kuz_id?TsW;e@>N|GoP(g zJ28%c7ePr)1sI=E-hQu&?w(n&sG+%|nTsMH@BI>K(8$Z8#Y6NAl~uc_N(3tfSLwXJ zS?4fm)lR!#DSV8|(t-BBjX-!+#4@MyM-{V2W_k=7_gMMwl+=cvf5GXj66ZMwJdEEK zht-r@%L;YHDTye>jg6N&B|~}nQ2Ug^)N9#`A4$j)U z2_W-*RwXN1k&BL#<2VI}xwgGR*Abf$2Rxd@{yrS5PmuNX^x z-CZJZ3b3~@JZVbsmcAxDQCILEtH2M~$ppRB4`I=B)-06=b@eu9Y39TPW>0t8#-nm* zsWcPipX-}8tHO8!Aq+oLEm!9#(WzMxs4$5-xebrBVn1!?g$jN+qQh1Xs+}fDjRaV3sJafD#wQRFqe+nuM6* z1_qUas1YQ*DM1vKw+am)uLSCYu2hQA)<+GLH^oU5=Yuav!TmzE+t2q)8#wEAsqTq(<-(o7q=%;K=#qvsqJNDy zs)&TqPJ-Vxk)f}2!{1u$UWzmGopB~JhdgJF~Y6z9Yf@svUT0BE+u6ZFk6sKmR*$4jaT1} zsOC$i@^$|@yZ^}hg1t};ijg~7=muKR^{xH%*?U%@Q+|0@8jN2Sz6%P1(LYnjs=xWOPgnoT+ak&veTtMTBawfg*)0{0Y6T~&6A+=rsR?j`m zyH~QX;w8L9r!ZG1e*%f-e)}gRx^yAn+2Auzfoj3Qw$I0;LsZ+H#z|{R`p_lMIu&Bi zjJ7l_&G&MYuPO(#FT!p+$iC&XNAt*3X0@M$zFakm!lV{Cyjyuz3A0JCd!0P``7eC- zen)an;hKX-uYqvpSPB>W;`U~+Wabwna`_c9(b(j2RumwhW?xaRB`vBePalEg0yvcKy4_J*RaoV&*Z zI_;Zz;&z758OO8m7jF@$Dh0bFlo^*hv{P6vv%QA3M5KTFneuxO;#L+wBUvOM_WQhW7{gm>XG4h?&G#< zAmM0CCn+5AsBA7x9Nsih>)j`w+H=GFJIP_Q8*oWb4DuK!G?B7WFSTvz%&$-Wjf0S} zFaBGQ|Fqah!DzOp#kN4mta%XjJapl+^}kMYpu;vTLp`HHmMci?$!#NcZ)_bX z8J;}egP0#l3#;E=t#AsP%C6~;BY{Qa^v@*VlL%tKYt0=-l;eogq$Lb$gP?n){c*Bg zi}IAow=!?9;sJ@e>MrAfbT3qfamsm^t#Du?PI`F{jojWBJabD;cI6$9IJZd@*BTF> z67PnFu2%%S@+7BI-&eM5bBnRN#BO-ArC^+Kebg1?K_-@e&n)Vyaq{=zo*#sDEA!4d z&o73&TvxUZQf6>>KFof2SN9gF=*fz7yl1APM`LH~bEfM^QdZ?&!@TJQYingvAIIg- OaSQSfVK(fDll&Wys=rMD diff --git a/tests/images/BTC VOLUME OVERLAY2.png b/tests/images/BTC VOLUME OVERLAY2.png deleted file mode 100644 index 6134442daa59082ba15b69454f941f2d89853935..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2427 zcmeHIiBnSt6Msowk_UwNf5sYJ3GIb{q4?gXJ^ms3i#Sk z-%K9>07IW0>_7m(K&$yR2)7!QcY!DXz^?4_3-;FObgRfm|74#O_?IcLC$ggw00>MU zHY@l@(QMI~JUK%07V319b2)&XNK^Q--?TSS@*))kooJjHyQ&uV9F5K+G{QZ|s3~WC zQek098tC@+%+9ZnzbuidZ048JRGve|zTA}DL#Obd6vMEyf1OH%ecv1& zYvUyL1~MR649tR_qQI`WdY^H{p8eej>dVsD5@;Gl$O1>xGO}}Av5iE)@L`02$=R{9 zOB=6U;dqp~EXwzZu7gH#$lvJTYR6lSk7-e#3WJg-5j z(^*(C z??O<2n2@ow@IGOXI;tC+SgWqmfNp1NY2?s(EK(<6}7kvnLYKYGDU6rQ2MnXma@aBX`wS>05$&p;wV+4j)|vg|H8-e!uQ;3==kW zl1CT~uVJrLyar_V_L}3=OXg&DKyca7SR!lz>$;uB1c8q3ON1j()&QHP1hNc^DR%*m$&Sd|kRJgvlyq9^vMeOM*jJ28}f3GZc_(fc{B8wb?pdxJoJiqOt zn;yT7uEfIKeSWK}%(B9l_X&8AvOrzX_}>W;dcJzS3=>prz*6RLE07(D3QS zdHRW}br_ky(7te>iUWAk)k2Q@A^%{*idqA0uL0xhnSMKr-Pa(DOW)iH<2reFs()8T1w}vP!}gt_myN%g{>#MLx~3MzDr$drY#o@lL~V_+<-udZyrAFb z=a2wnF~EQZR499c^9SyKFw5}=NlWUz+NKvo(I5X{yVcX`~t-vkl>0DKdq&WF4r1h4}`&l82zr+FvcuHvdw1 zo&vpHbfIjn*n%l9PsAcawdgv&V6X{`Lfud~BXq|fB17_~YAQOn2ZL*wI{=(_YW0*F#*s4kwPR+<% zHYEv6Y&cxtvV8O0&}z5w7?*DzO>QDi!C(}N1lFRFB(P~2y!~mR&+SYs&l#%t4we5h zu@`wBxW~N)1x1$jni@3n1W)NLqAc%Ld~j6F_~EpG(K8P;A1AXB#l??5!$C(JAw`@A z{Hbcf=T}k?HX@-$4A5culjGQk!HvJG7SDM3TKrQ5c2J=mKo1+JqL3_}M6`rqre2?8 zT-tY)7q-5eZ-deU=$x7ZncC7F*huO1m7<5M^5Y}L8=AF)M5Zy`5{t-8&PIG6#2UBT zkV3$bXlngD$rXFia9KeP-%iL|1Lv$rE;=ueO-v@Xr0qIAGt{2IMpe-puzNPpKu%6$ z90-LMrY%kKbiUSb6(#)L!n>GEPn;WoeAzmt9oBib3is)9-@=Es|}u_ge!=Yghu$ha3$lw zK$6O0-M(0q(eEv7LkA_hp~SliN*!GkH?U*jG5yLmP-XtJK5zIS<8e+rDWz_H1p(h_?{7%uKcE zJsB_Stn5aX*Q_WCm!3l1%BIdu+5}H|{2?B2jqK+r&%L|Q znzs4i-;V_s0?FX|fY37b?Qm*+XqsTI2e#+u^#@EM?TRCbtLz?QrUacSD*4A+^hjaD zJ+^&HN4!b2<@4nUR!M8nTvb6 z^AK~h-!b7&OPmxSGV5*4B>z@kl&q3$-F6pX&h$e00iCYBQie2FFvdW^{l?bIy+z;n zpX#IXe3MFLAijy9OC7H_oLCk-=Kq4nF7nLK&>rOldnW|b_NU2%zt>%HA7ZELP^(tnV z`{b=zKes~g+uE*rr={Doq0Bl>{4Lj@=OJzy9(T8-=*FSl)+)bEJCUU0fJ+=*2aV3p zsyl!%uN8-$sFpM}SExf8c7Lhn^^a0Jf9;ciI4_MH}mqWL(-1*0QWQlhiS fPDX-D4Ve}z;VnwlUmM8Oci)Z`9Krl9h%5L9-ZQ`D diff --git a/tests/images/GBPJPY.png b/tests/images/GBPJPY.png deleted file mode 100644 index 0ae124f2385cc1b8509f139c89427d5ad860f50b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1901 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 diff --git a/tests/images/bitmex BTC 5m defaults.png b/tests/images/bitmex BTC 5m defaults.png deleted file mode 100644 index 6aa99f4afd32df79d3a8e9ccc6bcd8f7ee3a0d54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2337 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 O$a}i_xvXvCV3&UV|QhB#(fak7tL9ep8= zr0EMOrI5ayqYk^7E1?u+H%&U16p3;or|$lXyZ7Vqem&mr_m8i~`~7_H4+-+4kS)jn z08so{%rF4JK?`*aL|9Oz3g7|&el8@C?K3|=zcBfb|HuCh{Kp*F8r5+zql73$}a zeR)9ZpJLf0)_w9b6FsIkTk8Y<OvmLr^_u5eaLYqD z86fe;r$~Hk5;ci}j9P=_gr<1km}FD?!p&P@@)cDZw<2}>8X_77uOQ}iZC%Mv(me9ns?fcX7z<0aD!2ap*4#2zF?*(`qR^nS_w}%{Nzd z$8Wa@7}woI*T%J1d^CF8_s=D#7pFXmWE~@OV*b?lB?0I>RAkSiOB43j$^|SWQ?EPNXAoT)DEegoIsEkzaWa)wy@UrD=X#L zlQe~^b65Mu6yG_yNG#C!#`P2BXg*|Lzo6=y9hTCGa#`^J;1JnmI1>)T#DY>Nz z2d3%C61e)u7n|QSzz_NqyUpD)g{;F07|O4l){m&uYlc;oYR|x0<2<#@LX8Y%MARlA7>5AQSI`VJfvz~_z$b5&T4e(cmS zbUgJMVfw?R&zQ4lDz4y-4iKzU1kr9&s+Acg?|iX?i6iy|1j*D98;e=!{V>Q^f$> z(~nod>W=0H(IyOlwJy6tc7&hA$qXc9&}z=e>+?&^&T2Nqh;oyY{e(tPzwI?Xn7U8d z88b^7+-uiO1r_KCLTH)6gu8LUJ2?$58lelbXT`b$uY_DDp7^jbco6)sQ~i*&cPls}>RUf4>vo`GG}?Za4qZ$b-^0(H z3l$?lSyOmv^R|egFN5_G>a0z=9$2QNv&wUHnh>ho=+`c%k}uuS9?rINdyxDAOSMS( zly=ov{(9oNbcmi?zu9*cbnv+Vp-!%VJc9$WE%@x62-S6&Y>IM&H0V0y+(SsSP`c=n zxAQvmZKdO_Ij<0jeOK`7CIi`$Ert$j3E1p~)sQ0JoL}f3{~JY8P=Lcx5t|F=93Xly z3T%620sGVXF-T)a|J2Q1M7Z}o%D^ihP8l)+oySbzxN%2{K3WrB>j9}VoExjIxIndS zXFzrg+yL86kAv`Oc#})+2QJ4gh1`D`yk`a(qSH9tcl}yp9<~Ta_9~c9gGI3^ zi=j!6Q=fy&tKuay3b1o#eR$hsa zxXXnlhNn0s3zsYpA9X%*_Vq^X;j2*(6?^#SgyGRVzmgR>Q1WmmG4#QAu$?Ehe|7Bi zFe81S@Q+8zvKu69hUigpvi)H8jJ(dKUS4ko`lGYY8YgD1FMSuX-3MnTJMu3hK7!&O zkykD({l7r@NRZELD){ql-%ibfpON3g{hQiGi(T62p z|FEyuejQi+?$QtYPtdQ8BqeT|@JSPsXgMbxOt58ntn$Xdp8OgotGdkI2lp+CZ!u`Z zzjkER*o2DXrYa)NoOg7OIrMG2aS#>dtgO0IP4|wT_r_p0ydMf*oY-a&~1 jNo2#!EPDZ*6;<7v1WijEd~Zf{eRyL2K0(ZjUQyWJc|@JO diff --git a/tests/images/cryptocom CRO 1d defaults.png b/tests/images/cryptocom CRO 1d defaults.png deleted file mode 100644 index a99d267c412c065479c7f39fa36dc1a43ff0ad7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2193 zcmeH|`!|#c7{}ka&`YM?NyuwuUeqaVNHvp6%ow564r%2+uBmVoV%-|NjVYzkJzDFs zg)|y%5<*_n+ zRGM=8cLNR|VBoz)mcjv;(crPCtZM+{oPxI*3F7c_af4T(s?Ulo6}?fFz5U(K zw&74Bw9dkYn-FQj;oqc(Eu8RK`D=fz(b9C~`df4R*1I~j)mDA}a8{*aD9#~5q9F=qMJg+p3jCib~x9i2o zK~djGUim~HP7bI<(bq=oZU_K$TS1&!uAEo}3M}ZjLxiqhLOQXq1or7w1BVDqj`8W~ z(<8-JO$4&WUb4tRdO2NneB&IYF=}pbCjLb5#oh73`NeC9fg-VehQnTEKYLGP$EzA(raCs=`1UayB^kc?5CivTVM&dwz8>$a`{)ncXORVMPiaz0PB_&gsW%U zr_uA~O|}lLLzmDZoManki^uGCh{%&7AQVgKd^Z>7!uZqdkb~G3l%hKnh!I@YvKB4Z zlv$`^VWWAHvH_B$nXfG>OANnIXd!%37}&kI^W-K`sIns-sp#{A($n|qq3(qnbj{n| zL3Ii(2Z&>91in4RLt3W^pzS8+%O?cy3w|8d-*Cj2SRA@b$*Xz{dS?1Dzyu6W=o)pl ztB*vOFZ=7ts#fdn)c-7imNs+vFG=3{qz2V861G6To@2pZ@x+gA1Y3uE)KJ4oGAPZA zP|~gBWjcVcGA7Fog*tk3N)cbD7wrcfEn7mMQ_T#0r_|k$*l;axfP&?fJus)P47Gmp zmTkEeV?>nJcPke?4!7e8C0XaUGM}=Qh;>fsVs3vD1&%QlP{mG`^!77vd!Yelnw!9k z4<^*~A7~>p;0AC|5)D@kQ^qaZ4^t7t^*ae@x!KguqBi?jA2|Z(kqx&%0a|YTVr0&(Z(8bE$v!>Nu=8Xh8 zht&qtMQX$lHz8`RKo(vj)^P38$PBj)8{TF+l z^<^Dw;1tgjm)Lt>)C?`d0Zn?sf%a%3OW|RjlERMWbcRkDA1DICqhK@y zMpy`hCLCJKz`%0Z)5S5QV$Rz+olT1s1Y8dO|Nmm9N8t%Yt){ghxoUDRbGyWCm{hz1 z*H6CopFcP3OyB?d*UH~d{aO@c<*`BM+0Xi)zk{EBw95RPp1oeDHNiRG>EJO{hrQza zfAR|CRp+u>3Y;>Gj&5MxIOBQg_a9kXPMg%OJ;e1ZmGy}KKaYrQv-2lkyDipGyFhrZ za*~<-%+F1hwmKGGai^LVX=M3J-MSqg^?wQnlM+XV!jzREd3(QEIleivFN%dxki|tn zz|q0KS>SWyTm^-u28bf2qw@`Nf3twacbuKpUNNqYEdy84{j>t3*6~SI@R*KEUSueyda}6Y2TC-cX0v9GyboXIut$`b(s8~4D#)Qm5w*ouRCyc zkHVpNb8g2M!U})bzrI#@vrR<6^SiUGOU3E0sscA&zm~tcl2~g~c>>!d6**o%3J7cBSagj+Q~mU(ssA={ zm$J1?Ii3FV-uqqLsvJiiuF>px#%s))Yh4OCA6Xg?>?q$@d+n^d!1We?9O+WOuFWnKyFD_dc#*%1U=e0fX zXMoG(B_WRr1xju68Wy>o`s=m)rR?5o&RObTMT%c|9kDvS_SqA@<*q;196YZ)-)~Xu zs+ztkO|!#(K3k`lwZ1(2XVsb0*Or8789!KZwGJqAuw~h%$yJ)Vo8E^mJh;;`d_RLV zr*7-gt+67~rKX2`MYT<8m7Fxvjl?7fSDu\s%84A>@5pJiiBprw754p tm@6sgXVH?a)kV)cA|nGtTmyw)@bhyEIiE4j+5sxjJzf1=);T3K0RZxBI{yFw diff --git a/tests/images/cryptocom CRO 5m defaults.png b/tests/images/cryptocom CRO 5m defaults.png deleted file mode 100644 index 59d89eff25084d5c495d9eeecadc7326660bb7d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2182 zcmeH||2LBh9LFC;9<|BC8p+pZ(rBA*NMCK{c{KTQw-Qp8t#0Xy5V8)7^u#lhZxzy1 zo0wuNm0L?%w41tA=Uh~-6h%?tstzh~x#ym9|A^b?oX`8b&-=&MIiL4O!VO$YoNYN9 z005#d2U!mQdf=4549=WV-911605iUG{e#fS$;qi?dVkCh0{=4t8zUM@0l)z9MZAJU zvH_X2ppt5WI!#QL)>1MG(-c93zV@q*9+tESX~nrHf<0!!2LF{@qiQYV4wb8a4rD>8 zFn|J?07;KJV>*Z_1vM^}bN;cHz*YMS<14{EjqYAhS0KcOY%$o1R4sGCV1I@%$lODc zdo&NhZ%lSJO3~!mM{|yTLy}u3{kSIbI2EHC4<`?is<(T{KwT{lYkI^`DO_c2N%P#V z;3i4mz#`A;)+X^0@F_1n@WN)D>E1(7B&lThM3eY&KdmO>CVC&C3)@bKy|IbG+O62Z z3!og-vY>rl7hy)YakI0ct6q|8o*6oN#w1qdxj`EGw%wlHKooDC?~%;I-Wxi@JvYHb zCQ||?HifVJr3lsaT1zQWj?f4P(_GnhJeJhkL2QdOHo6+N5eiOLxbgx>f*p|kG8>@7 zKk8b7<3(STYHR%xviHKAM4?OT9N3OzUQ;WPs=zG$b_``Jd(Zd^>lZlL4}niAL}%ekLg}Tz~f~VXQ3nb!gmLP zD4IV%s2dZ}Yov432JDM)k2BBK3ErDmld@%BjigU?p9+tQ2G=3`<$RL;4du|;%iq%R zI0MjqIEhJr{>Zwi4-Pc9d$N5)e>l{~ip8=LBV~*`+2Ga14HnEuWi0u-1~g;TXP$ha z%@Ci!SqF!PUN&pj>AcoFK2!cq(8@KbR<#K9oM1;$5iV7-$}F=SUMacy7Hbg^t<7*a z$I!38uxO*_sLceFw`5L7+8O-g=NFQP0TVITbiJQXOWM2-<*NgNG5TqXU?g-IYyerb zWPh_7Ri$0Jo#193NrS3aEII~1doXv_1GI+@cib{^hw=%Ga6;~Npz26TlxP$TM_FLM>SzUC_$2jQ9!H5ykM;275UV0L- zJJITVbAlf>_<@#yMEd*Y*s~e8gTGoqY9}sMfIraKHE1hw188)ALywHqt%hIgWGN{u zxgF!vU$Kc4DID|U*#o{QwA^kU+NJ&Q+9!XppHZ~!I*m!%`DK~ZI!@vvxUf?UAduq$)S{Xk8t^Nf<-x}<^ARj5PVZ?j~Jg%pv`=9s-` zQ88#mc)Ux0{^>9jYX7-9L_|%3|9Hu#!P>)pwWX(06`+}#I^*#^<8lpR&~@K~Q> z%+Oo<|Fz9D(L41~V-ljFUt)nHjZ2OYD>VS91hKIJBKW(A$GIiltPtQl%t^|Iidx=r+nk;3pdVznxCd>c(!3$5~@41!lIhH{_ zAd6-O1Z=Ww={Bqr4fKCy86O(`FjQY2@3VrxZRJ!ao-brtcR)*f=srf%FT@uOMAYnv Gw7&tzl5!sa From 067296c377c81e1035143b6e495b8afe439b3dbe Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 26 Oct 2022 20:28:19 +0000 Subject: [PATCH 66/66] chore: autopublish 2022-10-26T20:28:19Z --- ...264,176_AUDCAD 3mo defaults with entry.png | Bin 2159 -> 2138 bytes ...test_264,176_cryptocom CRO 1h defaults.png | Bin 2110 -> 2084 bytes ...test_264,176_cryptocom CRO 5m defaults.png | Bin 2097 -> 2268 bytes ...400,300_AUDCAD 3mo defaults with entry.png | Bin 2779 -> 2776 bytes ...test_400,300_cryptocom CRO 1h defaults.png | Bin 2818 -> 2787 bytes ...test_400,300_cryptocom CRO 5m defaults.png | Bin 2843 -> 3014 bytes ...640,448_AUDCAD 3mo defaults with entry.png | Bin 3679 -> 3691 bytes ...test_640,448_cryptocom CRO 1h defaults.png | Bin 3874 -> 3823 bytes ...test_640,448_cryptocom CRO 5m defaults.png | Bin 3765 -> 3981 bytes 9 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/images/test_264,176_AUDCAD 3mo defaults with entry.png b/tests/images/test_264,176_AUDCAD 3mo defaults with entry.png index 112c3b238efdf900847a2e02a57b9f5e45797422..9f49eafb66ef6a2db6992a7e7c798747f7f40cf7 100644 GIT binary patch delta 1343 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 diff --git a/tests/images/test_264,176_cryptocom CRO 5m defaults.png b/tests/images/test_264,176_cryptocom CRO 5m defaults.png index f7854da87a548156f1d6841a6616b1a3cc7674d4..4c240bbc26ae845b5089dcf6f7210f23f505c063 100644 GIT binary patch delta 1475 zcmV;!1w8t(5Zn>4ECYW9nn^@KRCt{2or`v?APhyp|NrQAG(dQRJVZI?wk~x@2)l?7 zopptP7L=6#Kl0kSPW=Bne?p%~wJ#*|aU8Tgj^9RzV^;M2B(Go9dZ8$=1J?BGB;nCM zRLh;syX1n<$7etAKu9{Hpa|Xt4)Im@ZZVSSU5iBpVC5VIo zg7hK~v2rOuzbyl~vFo?S1tpW%VKrp3(cK1WaDKN3)yc$4M)@1Aeg6sf->;PhA z%?Gh)-h4KQbMAJ|->#i$Q@NZPLDV+nd``(X$0|K!FAywM=Z>b6LAaO3To5WTqYv55 zWj2UM#Zz^ZpXrg9c`FE=pXvkR>Q(Oo!Bcf-{M&*^2q1q*070rv)k(Ga9Ei&D06_|Y z_yi4rAl(5W&4Xls00^NMZc^D#1Tiiv1`s5GAT@x{_5dMX2;v&(g-TRuZ3n{oeoRA# z>N_ABGgK~!)5pBbydI!iTu8Rr8ibXox(Px}D($m$eT)Zj)jXsgfFJ<`sWL+qe%d|- zgc+SC_K1JzT?!!72hsO0=7AVf5kQbCK!m0c%n?A4BY+@B06~rbf*iT=^^W$9AUZ6K z64gHq;$jfJu@VS7o7qzU!D4C!VIIg7rs~>2jQP8D@N9B)YCo5%`!tA}m&xKFq8bcB zngl>22qDzVWCf|ZRY9EY+s6oj?tA2n`4x{y(v7e3D zSx+NC90DMg1X1M44DH_n5ey=wPl4cr<8vU)3}zV+xzWM0)sBz&yeI8Xx-~xx!kt;x zI!=GQM&tUk%M1ijnX2>d5_dqP9+BHa&^!>7fzUDJQgus!U^Dj4AXJASEYgIl>$fXi z07U#2ejkLYUttJ?IQ{nlkq9>kLKk#F1bc1M7$K6WIs?LM`7jXt)-nS`DpV64t8^*| zDg+SSLEIbCbgJ$N5PU@K45GHbJli8Y5bS@Zm7dDE^t^E20K%EU_W^O0v}a*eq1xd+ z0Yc*t4IpTmF&M;cWkHxA0Kya%eL%!V*kq`7cw<1gS6V3Z=YdEE@?sEfO(788vZ4rt zZoNMbs0h^wuk&=xfM6F%IN_xSidqoX@{H|PhN}0L1d;J{gASeSt2hytQV<1jNCsY>*O4XShm9WbX z2EmpUQ$U0y1xwZaYMBPYogd~v1oN~x_vIk0RNd4b;p%A+8Bb*XMiAswv`>Z?1X10l zTSlG}Csj9AWgx1({x)yy5s9Dy!V7<=#;ZvBtZ;H_1_)JEUw2&=ijRQkEP&`KfFJ<` z2_Q%SLD~xhOU8K5Ral|VgRnAGl%$!Hp;}BlLzQ`T=-aX~RM*a)Ab5sqcB<|*0tgaY zux!nNWvF%s@pJ&I2p~uRK>`R8K#%}}1P~;EAOQpkAV}MRxK`r+%Lm(mFfV^kiO9=j zyQtIurtp4Amaz+ixc^9gS)0)$`z@hr&0FOi|;Y#K_o`8Qqh$QrBy=5k}ms%1AAfDvWN({B7vlK4l>E z*TpJ~SkZFi>P43cAa3;t!InF-Wk#lGMVq9KabAz8xZEwHip!n#zB(hJBHR1D76^hM d2!fy|^aqeA6;pdQ5yJog002ovPDHLkV1g%-m*xNf delta 1303 zcmV+y1?c+R5wQ@kECYW8?@2^KRCt{2oq>9*APh#K@Bh%78XzDj0ih}WXZP#176_ao zQl*Ubm$5%udu-eI<)6SBs<*4W4bS!xZ7WP&iCi``Q+}wB(J5yWAuu+8bIr7u|SW2 z2m=uiQIqa&UmkymARvN(2tt8~jog4&+P)hYwGEb{*&Rf<#1KJ=AwmmdMSS_=oCF0T zD3O2ojyw$_=qGxZ&ajaCNCgpc5$w=-s|X!DT~F&CAi|tP{DcjNAV!GT9Y6#*pegoo zDwrnXeqMjPNwmRuorq|m9{XH2PDChQr-;EffqzGY(=dNY#2#bbh`9&84#dZZaU#MA zgE3769r8_qW{8+}d}tGq4WeE|%d&v-kn}wfG&s%e5mFI*plKr7B0VR<%}`2#Ac6ux z1O2imGL*qdaKIBP+wDc!Luz~6> z(i9Pt*M0^ZHd{+cN6mpfg${GT9iui=`)QAwQ8%ssB4^e7Fq^Hly ztRZmu(so*0l7?T8(<8#fTf)c}B3N^CB0lVNJXwFlX-rTcA|0?<>4Qb^pq(Q2=rfCvI22*1`1A`C=q_(gvZ0TCNvts6u@#0FaryS@g9@IVAnCE^W01i{*A%CBFyR{*th%3cf(&G!ulJ2XB+7>!Dja^ z0>9gNckgq(ZoqKs0jztf>kp_;#2*zZ|B}28AcBAhqW(+rivt4$L=X@`Km-911Vj)J zK|lln5yU6E*_2;lCP5yEI49NJCWwFN$pjJdJP>hCs=H0YMZAIrhX4Rj!1^1chJLBK zD3klWBeF_VOka;MGJ6zh^HG;6dW$CY2*DVU^ayDt*%;9j3jhEB002D2AFc-wauW~stx*5~ N002ovPDHLkV1gRdLIeN+ diff --git a/tests/images/test_400,300_AUDCAD 3mo defaults with entry.png b/tests/images/test_400,300_AUDCAD 3mo defaults with entry.png index 5a2ee6588e12c4e419d292ec80308a866dd683a9..9bac56a846047dc6e536244702876c77546756d5 100644 GIT binary patch delta 1839 zcmZ8g3ox6B7G_DCM9Uu$TEXV`-lp{|WmBcUAdJ^~HH!+G*0wA~z3LH2`DGjYrq|%)wUUhA^y)*ZonKNhRd}q!#^L^*MBuo(QACqAf zJ5o=3#h0y=XB9Wqs-kSWc5P?2DlCk!f(Mn}p)t;Yb&*pl&DZ*Csd&`e-K3JOO5?;y zE`K1wU^;1GZOeS&-!)O|7U56U=K5_oO3j(8+zP$l*f&f^RY!;hJAa}vH#ZVI{8}w> z!!`l5r0+F(1IceAZ|E?l@5Yd*@*OPOokyN_H1|O~8_pp#P6iC#P6f_AFNo&(;@zW}#=!6c zW$@r09R}v40mgu)ZS7Z=qVxUy8uemGvfvvM^}uJK_hDaaG0R7>$wv^=_J5dt8&d4F z($P$SNmXi}=l4O{#>zog9S0*rUD7H14HW1Sic_pAnOAFx?LB&G4c- zJ{rC0FPd#T25EA?CQ*^mv}z9zZA6!U6w6P38u}N zlbdr_`{}hEUD-ca6ZPkln&>%rm|BsC4}QcFbqn=iiA(YB(Xq!2g~T7r!@toY*4YTw zM3XsG!Sef);Eahp*z3DJrw5gkPZO-IJ)4|`t)fJ~iVko#{o_d^%v);trhr32ny zWM>iYuFIGkfrZym=7r^`BYSy}Maz7lvT8@$_g}UCHmJuUM@-U|`D|BZ2eL2~6msw( z`=n5wLKefv$H%oq_nQh{K~v4y#C9*!O?*1yWCGQ0DZ8QLCTiYz2vUd*+5HO+lo+^Z z#E*7mA_s}`2Lm3@;0mO{!})%8JL~gzB&MvxU^LeNCbs+c=uxq|KCcrWN7N7bb;sUy zfc>MqTE}a)7SUX4qcE?9Do_J7?Jvt*hU>c3&#IG{gnvTqX^1QvYR^Dq(Ks!Tch*V@ z))t@-_b$OjWA&^)rbay>DtQ*o-MhOxcoXr7Dxx7F$~BNjmI4dWAw}C*mW1+QVA`~0 zdwf=I9Ux<_JG2_tqSYIai%#F4!X z={~hNAO9<&4j+{UgR9tTmd!d)bt+)&96K?(qY`oA`?DXl``C5+z~CqlUwn52xD*Ir=Ib50>yRob^UkIxwSxJyZ-x-lV}WgONN*L ziWV0F*HheR)hR6=vA8Jc=|WPIMZNh=EuO_~L5i(4A#CXF%rl(;uhp*ezr9vmd6#q~R7PD8Byoz89n^fT-^e4~}KQq*Ez&~9C1eYkf#6H&VjDb`0r-JyZ; zJ@#BMst#J#vL#FX@V3aZ zKz0e94;aTLpqJPZ67#@79tGMAPe&3D073;;cme){`w_S*(@u1C>xO@SKI$=vsW;{m z-`2@$%0RdA-=h;S*L(82%z6%M8>&Fufm3SP}Hv3L2i3lqc$TeKZdYt0JP*DBFSM+hWp zE)j~_0EWAzz-LezGF6RU#6UcKi`t?FY#{Vhm31A3(!pmQk)oy0nzkufMV-vT-|eKW zt>!jV62hjf=8m#Td;a8?pFe<)7@gJl*`f2C&m^1`7dy1^{B&ZgbQxZc9~xqQdy`{* z59y8P7q3w|bjli(R~#s*$pOzVs&+r=t>sjth@bM!raBXK{g12v7*{uKloFhQ1c;Ns zfew{LTORzAz}2^6_7oJ(rC=9h;)whw}9^{j2Y2=SsZ?1*ZQ8)YMOG delta 1843 zcmY*ZdpMM78z+Nz8u5!kr0KRb4Q)nmdqplS-shgc6M8uph`;>W3$ql$mC8X z*5?1{=rNHV1L|)|8jim4|4dEQN}W7}Ib^stZE%2}DHDMLum`U0!gm_6WYY07o#C;3 zzelxSDg(aV1B1ItE$H$9Rs{0KSxO-E1u@vo!l`Q?Tjy85&R`r%O9oOh!5RPvJr>jl zRgSZTT|$x_f{H^F0RqwdU!JqBs{IY^;)548c^*`rDGmj#?Bv^FS=TYLtaDObPNf|M z;}}t(iWuDVwQ6dUC~GMoxXUgS9sX7i1-Y{U+sSu4X8N%UL}|h1^YGQotXGGobVS*& z&i&Tjv0H`LO9MzQBRxz~<13=z1T-oNH$`9|=Xs@P$9l$}ac=)CZ6jeyt<#%(WmqEy z0siWvl^lNb(`%ltCBL_FhKf)Sz*e6t+;qeLoUJz#JVUrVVAwn#LirpEBExF4xg;nu zbT!m%sK7~fT*k`K(HLc!z3$|pAlg!+#;Usp`AouHAo8X`a9R%CmYQkKsFgNbr?R^6WCd<_@ApB{LKvy|CU^JeZ$ ziMUwZRQuzUKZ)u_FNbYPSJu^OgDzTbm6Q>?WTO6 z7bBujs62ELkwOl)-cF9#ZDMl=ZgY8yrg|YcngejCTFe3PZ(;(hQInorfQ7Q$9!+ySpA z$wEn=s@Idn=+yvnxbdbIBr82PlM-!LlmH@u1|vwtQM+VBoz zV$mkMZH|?2JhoylLZ=7}SDtRDE?Lk!%L@;x{de)O69I_Cm(WSo9b`=!O4wd-y|K?7 z)U^M1Lnz!w_-YTII)=8gFruNo5DWgQ#_6zXj;D1_+|$wDQjmfTa6IJ&zbTf>ycRF- z#{Hz!+L^iim-^k8=h|;V;av8~uIO%uIf)Ui2+okv3r7#)BDbQ2oIm&*9Id{h?#qqQ zvFR9Sy^No###22usu(;uBTcwVo5#Nv4?cGlRM*$QGv0l)C#_c?ogqu?cpUz@va>8{ zUClw-I6HUd4m0!W)Oms&Ck>RI4}FA*lzWWUzi~?@cx6}>8E)Qfa_T*2@2bpX%?W^7lSd+c6x?NWEbT$$kI`7(i|Sj! z>M`Nxb(?f*9O$!IV9!fWXthrfDwdEYab%_E`>?@Qe}LH@>P;8Eed>N{&nl)SYE*+a z(v9^dv@!FnpyDJ#TSgw>Kk*Zz$HVykdx0QZ3sP<&Lu1W_6N1jCf6B!(;z<|0f+1EC z)xPN7+rA5yw@M#nx&1+lHr7RW_^gjgs%aR=omCW|%jF|S`2E`E$g=)PBFAo8cG2%N zkoY+--!-Z=8d;{e66dU~qU%-~y9Q(_+D*}mT$%-@A3iY!0sHJi($8?>Plt~KrEFs< zLfZ*Y#X130+yx!T&_K<-!SOUv3b6I|KdMl&>JdxFem5*tvmKPzKv~z9v;SjL87iZn ziGN5LtNjK!+#*UHD-uBtPqORrj7y_{=_jc#r#eU5eYo3Cn=+a)0(c@%#Nk!%Y7m)e zv1+aDF5#u$W^^ZuwQhVO16WJ~SpM}&-{&O`nKqWw=(OYXAD$>@v;Yl4LP9sz6zg;{ zBd6J=I+5Mq=(<)sjGCfOoNYxEoyZ;U1~Wf8e8`IF;{27Eu07~%j_2?*s+3Ze?wU<2 zym#>T@S%!FTAI05n7YY7pa!Xv-EzWH3WaAoTMFnYl!d_dxxZ<`*1yk^yM~$+DWweO zg$lJ+^hZgf+z_8V_qqE68^UQ4x3)8%GM7WigICQOY)t+>)9cV#pf+9>@z^(fWqh`p z8r13|dEMQ3>AlyL??~L32(R`oa>Mai8$@Kg|NlAuTOuK8N=S5WvgB9P*2>Yc1on*k E2X3oQZU6uP diff --git a/tests/images/test_400,300_cryptocom CRO 1h defaults.png b/tests/images/test_400,300_cryptocom CRO 1h defaults.png index 7fba3bd54f37184a936262ea3b202ad90e044315..68bc2dc8f6b7d40e5c38f0b0c229542ec5f84f45 100644 GIT binary patch delta 1888 zcmY*Z2~<;O7RCnZ3rKlk3tLJaf!ctISQevb;K>q-AOr^i5j4aqf*{HwD7*?UCCK8d zFf6i7Sp<=aAShDAG9pb{lun{hSwdL^*&Ad@AS46R&b0HNbI(2J`~Lr)d%k=BFIjg~ z=l)I{@{OC5ckRmdZ|?+zC71u~Q7tL45-Kavf0EIM zdXdUftsaS7(%Wa-RvB5mAT_4zcp~nKRSMZjmHv-88>7|BZq2RMmNyK-`lk-r4=9q{ zZOF<{T$HJ4@SNR|CRnf>Ec?*hNb;@vYmG_7fonAENi%MlRnIFtr!~UgDvC&z@67|g zrr7Tt>@$77#EMxI2dRTva}_~*NK2!NkJi;yD_;K(ri-*xUc zpHw7;k~Xn!;+|AzUt_48({;(KOK5&}3zWj?5*ld_@sZepI^c0!_FLbZuX&^B)dJjt zw0At`s|TkizZiP|0kj7muz=5%HCYbMT=A+E0(a7S+8Vv+7A`=jz2iPW?gzP&5%%_g zHNpD~t%aX6N6&&LE|StG52JM!M5)K@qtzXG@h$i_@-vC_s%}-fD#{h_h2-rzl~npf z+AnceJwG2k4A9)o$Fg%W$zwZ!(2*!OD|QNSb7W{~XfH%0;G>Sw*ZsG^HF{=a!&PCU z?{;>ac3_yrrfARa2QLy(?llCo0!=mqd1q#Nz{-hX=9@Cs3!v85HsMY&neu6=C5bf`F3u$L@~%zf>^B{+#72KP``~p zt8=_{92PVKw7iu@Y_=76e1cJA3;~lHb*gnPD!g^!n+7YY{BApeG&B$``Y9bdKSyK| z>!MxcDX`HK4l=XCZp8{wlZs!SbuJGIP1pcHUA|wRxYB3<2Tt};l%d41QG_3D;LbSc(oj_2h>UN_BWKuiUv#^);&WsXzR%uC{_4_~sdd~Bve#-tR zedYwjZUp0wpNY+!@|DReBH757K@`)(i22fj$Fc!Yl&l)NoZVy}9<@@CUcRxfe1RJy zsgZ-V>==Q^@emWfU8VZC=rpNWqC8)VHI|0@4|Z3w$O)^VP?NL;Pn)^#jNR@ELC0`c zj#|zRJp}J2t!5#9%Ar4IV9gX=$6I@{MU3 z=?rN`t$ts^9nx-;T|m&RBx%60{}i?RpxVcat_Npkfm`8-GEZJwdThTxD7ZySJPzo0 z2suUR!RqkmOPh<6qL-}?u?h$#xf^N2vP5t#-Sgyw3y~@iE0D-6K1C%kRsJ-mR~n12 z4Osx~FVG^9)z!}_QYa7A;2;_>xhm9yP3)x zUxJUj(#v0b+CG$?kMZ#ZDK<_c8vyKrTkl9KhWZA+&``2~rT!!hXC zsZnPS!x0tIXK9b#G*%)9@_Xx&#Yf%;x1AbZbnSeE4=NmaF`aW>AtMqSJEk2Q`PZK! zgf9-Rr-{#(ZD}=%?9&y9p1!F;#@U8?<#yp(b;lJW9=RAsqbhE%uU=VI?-qWAO^Y9L z^cF2O1p<1A;Kca8{LKAJyh}pQ&-%&&mLkvhiRdA@qx_}&7h^A_jD$NFR~-}HxPHW@c(Pp5nE$>e_nLsV@x delta 1913 zcmY+EdpOhy7srV-gXK4Bj9q5TZ%i8%tth!xKTIRcZqk)lQd@Ez_e=dUep93L%YFyGxdDXk`^X_~8InQ&x=bYy}-}5}5VLVH}#9R%2 zQ9CqS1-uBn) z{-Bg|Z-*wk5B9#78!xpxE}cGR?7sra`%7(t)cgmx2a!g#b>8Dulsoa8r`90uI2Ky) zYIR1@Lf77W;LYdM-)}aZe7cF3+2aoH;26AR*b-~z(%KwPtrpMN$210c9x$}wT>xyG zQoG8{%!&vFZ=5FkyCe~-z3)8^4(?&0Sg=GD;xCV4aB5&6*(Kcvdrd7^8d7O~@^ZJ( zJX{rQc>rXb1uOxI#+N?r>Oa=!H}+SoWlr_#0W8#n?4pfuQkHd?@?;zMHUrIY$_s59 z+@pi2y8~X@|J$9e-;V$bFb+bFI|L+*nO|-HL<1DI#qEYJ z#OEw=Wf(ingyxnFVdZRc-l`k~A@DGp)=GLDoe2=XDh)`o&6_=xoS&!IJZ;{7C*&yy zjV(lt_wG+YV*w`TI_CA8e3Kw!#7GQpg$9~VfYUZVEjg-!*R#z>Ed7UQkyn5$ENDM# zoE<-yg6{s?#bvjTmH~D zeYcZiZ~)6|Tu~{H0K@8NTH|pq*ywE%WXG%klB~}GYJdMH*H4iB!kND7>wT|QiwDRM zgF@6+Y>*j%0ltX35kV{k^Gu!*C=2WG^25Bd=)*`@fy0xKY>#B{*nyBEba-(9NVdPc#m@OEq;*EUJZEr?iT&Gw<{xm9u#ss}NXns3nPF`8rHg2d5|j2E=cT`C;gXUK zO@7=1Rjm3e8C<93DhSgxd}DLhnKK@6R3VARSUQG;3}#Q0Am8y`6Ls)tRRNGRpawRx zCqK0hxYMN{MSVx;MV}kcQgb~p3(H&F&5qFkF==uWm@2V_x`!pOXAwTIM^`V#mws0% z+~Z{oh9xirXPl5i9hCUz0Q7$Q((>ZgCQ6WfxQPs>*OP>zqD3pHQ}z0-(Vd9zh{w0B zLgMJC6M6i-=pI&BAA1iYG-lYa&?)mZU@9^qF4G!!U}1LBvyDM%e}m>0a8ZfbDS+`t zM3f9!Fuf^x*4v@(+S7Q9Fj}#`NI#H!AMi5e*V6<)PgAHJ#;vlg84HArOGcL=NK!%{ z_y!W`iy7~fc)7LbF+*iS6{-EXv{jSWGxf>JD*Q<0LWtk@)ElJ@1fRY-kIC2RdV!_d zdd#5{T3}b+hM*gOUd!?mqTx93{KJiEzckMDV0oVk2lL?-D_QFh?-8j*P-X7vrs%Q9 zwoqqEf59(`N((+Ct<}EQgq}qrQ#F%_Qm9Y5fL-h~>3&Q~c1K(Siig9X4E;T|$6v5t zoqqauBRde6F{=U+Qqjv12bcu#^%rdx*#5 z6115-LKTfK^DXf#z$1MnmE~c2<-c46evXLt+bUG7ZQd^>(MbOx*cZZ?8jt0!;{#qR z{{b#SXIdpDe@S}TJ(^6_g)~w#Z(_mYx%&k_G#r@!kR9eGsv(brG*FzD8eCN%#uML? zxP;&(!Us7HxA~g1nZYDHcF=MIyWYKUgo;LLt^5;N=tXSYM4J`j%T_3Ejg~CPaA4_w zNqVNix1T%H=PGzf+(yjI!ID6Gw0wx zk|HHw7N@PE^5>(84u57GV#c+ZyHM%d(h$B>Q$ILRIG|jcwCk!kKC<>)Jj10pzJ5>! zNJdFNd=CB`RaLUN+o-O1KEA<+s34pRzF@-|)7P9K21q7;Oh09J{`bjq@og}1n_Y`M zG;yxjeqLX5F9EcOI8`^4+V>Ei>7%aY%UG#4la+%LHV(xd&s&EdXq}w)?<>lObFh-G z6AZ_i%!i&n!-qhkBFklaccbWP(xZ)r?M7?LRh#cTn9-Pf#t!AKQu)8AQL5DqZxUXF ST;smfF>bC5mm=tA*1rM9Tz+f- diff --git a/tests/images/test_400,300_cryptocom CRO 5m defaults.png b/tests/images/test_400,300_cryptocom CRO 5m defaults.png index 3f08e88e2967d76171a1d56f65148b5d230750a0..facf3daa28de4629686382d836cec87b91cec1c7 100644 GIT binary patch literal 3014 zcmeH}`Bzg(7RRHAyg+Oc_Eqx2VzYOEK@c$V3>p?$1V)7b%BI*ht26-w1z$7>LIer2 zX%7T7vSb7dAd3nSkqFpmi;=BOPzRAEAhMH=jy*m7%lre=bbzPpi9gIkdi2`B9vzkh>dHWZaz+8u~?#fw!hk68TdcTfbZe< zas&c^or#VveHa{2j z-n-rOg?PR0$7|7<(fhJbixvCCb*nwqtbv?aCoEAm=pR#-Rm+rpjcu1Xqen|K-%Ro@ z{e4L^qQ(xq|rJ&eOQ6Z{ORnR4;&JybH z#Nf_1!vXJ7T>N5o#uE}w@+S&rXSJqk6U2r7kuu;jxUot&XVJPL=^}j~Bwg$kjDo^n z_qJGxEb;z3pztF*#kqT)nepRKV?$NkyK-$^(X$9nD@2ohK^$s`%9vIP-ssoBawcSt z-kyHtb>hJ5YmZfe9Z803*5DTGCUC%!rbYlmSD;1dRhWLY^qtqOtfI-Bg=$v&a`zt6 z!%sld2AGzH#-nkYA#S5TiPb&v%Y5ZQM*ylh^HtqNQ(Hi?_zi)61c3EY6}0=}D^Y<< z%r+Mn!$;%uWyky3X=s=%0|sN6=Z`p{ARJQ)CJTI_RLS-tBhWlict;L?a=1G4X8ED! z(v*cc4RF0QS{zBaQnuFFcqmu)Hgd%U>O#43rc%lZ@$M-%(PCp`m$;oym^zMoM3HNW zMJF2E5I%am@R&CAwpKM*5dRED9Ur_$qQxLHJt)`cb?yP=t{Y}2bOdH;4HF~MV0X)& zF7}rwI#aec0Zp5Z($o@s8O>F@NxA?=N^({r>PzsQzKo3PKobCQB~jJE*y{>^ zZ*g`jc;Iuq7@-;1=5Z+QsVdImJ^+66#j7olR3Zf#Inw@X!|O=CQMbGB4iNK1LGZ|{ zqGK0f$ejCDSL`;io+hx?+@`12lFGA*hwDR?#PRd~ooYCye)%H1l7J=NGcPpZnk>jV z-;?2&n{o@1U#O?kcV9;$jgIpT06t!XvfT_C2N{ocN5fi@JHw6vFqRp8 z-@{i5%9XnMDb_K~TzP-;-WQ`HI#d<<>30I3cPhCR$Og2{b6?!m3j1K6cF+2 zE&9jWI}Uq)0CR?K>yGi@u}JHQSR#pWnlY==#*Q9rev=?~yFeuta&Oqx<+DsB_u!kB z_tJV6Ps+h=6~0~kwC88(CO~2#`oPG7oO5xvxnh56{GCj#0x8g1m^VL1&8j)K>ivE| z&QRy2Z;fmOZ{UCp^r|}zT`YRM%!hi7%PvQyvUSk4)lC(8fbAi+QE1T5fMlG26vbfr zeH36lUXxvHv%&BzBX`J@S>IxOv4}pystL%8O!P>+OXVgPNNc^r88gWupo!Wb#~<}f zWzpv}cfmvL4S=CTk|QZ9F>qUGv_nfk*Ltiv7{Z(L1J7zSN=jlRqrsuV3~81x0|JK1 zp(aNmvNU0vp7I%b6}{hwMDm*nYq;Dq^#O`VqcH2jQF(DPF9VTpM*FLd27R|*+C{v?2p5TW~CvQHwr3(L1UPR(cs~y zQ2ZV73k1@sH2SHwX(fRlU;oMpkqT^;AM#v%e?}X9KUGVPPjDN;Suu1^m-CnZSz8nb z#yL}&DK6vhjcDk}?Jgt@cKuM#G%~{U(FstcA&cIqRbeobW;v$b`^`xPeb%yeQAQfX zK`y1Iwga}=XX%mPl8v_h1p&x>%Hnj6f9s_r57t6jOPVixKcvqDLp7g}b5ztu@W!Pw z3Sk@bBdWSJ-Bn(do&WAUbxcA@$>X*KW7Zo^Yp2mUtC-*>qfoMRc6LJUMd1pJGEOVS zjY&b=V^JNLSmUqoVBEN{-7h-K8Zi6{&{V~LbHn27J)?bB+Y8%0onf~J%z_Dnf<+l9 z{BUjjwBo)Vn|L+aUZ6PL@At`{823NKu9F;$ovY+r zjhck)TgOXw3}tCIhnGE=kP$wA{bLnCLISR-*SmdYp6ODbEZDV$RVX?xr2IhyT;9$TZ;he1|~nl7F3y@%LM7 zT;x-h0^$m-9%hc({L6OaXX3O|W4-?J5BEJfdDBHars0T!xP@#!8oio~N$sqOHg~nx zFdvRz$xa&2QeEYY|5}aC@D5$e>Kpr5S^a`y2M!1yHh0cbYy+*IKBSZzmaG-XH6q?KwoVyL?rVJ{_vfEh`>M>PMAO(J+*_5;3(ijN J#2V;u`fq4H2KE2| literal 2843 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 delta 2572 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 diff --git a/tests/images/test_640,448_cryptocom CRO 1h defaults.png b/tests/images/test_640,448_cryptocom CRO 1h defaults.png index 8cd204fd4dd83d9208eb2835010136855bf591f1..3864f49d4adf22f82bd12fe8d887b77f6f565ca5 100644 GIT binary patch literal 3823 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 diff --git a/tests/images/test_640,448_cryptocom CRO 5m defaults.png b/tests/images/test_640,448_cryptocom CRO 5m defaults.png index 9ad414ff488f1e34d3ee4c566897d0a592284dde..25c212473e03ae537f726ac465a53a2921910bda 100644 GIT binary patch literal 3981 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 literal 3765 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