From ca1a68ccc20dbc9fddba16e5fa36cc926a16f04d Mon Sep 17 00:00:00 2001 From: donbing Date: Thu, 10 Mar 2022 19:40:12 +0000 Subject: [PATCH 1/2] nested style for small screens --- .vscode/launch.json | 2 +- config/config.ini | 2 +- ...ded.mplstyle => default.expanded.mplstyle} | 4 ++-- config/small.expanded.mplstyle | 2 ++ .../{small_screen.mplstyle => small.mplstyle} | 3 +-- src/configuration/bitbot_files.py | 7 ++++--- src/drawing/chart_overlay.py | 8 +++---- src/drawing/market_chart.py | 21 +++++++++++++++---- 8 files changed, 32 insertions(+), 17 deletions(-) rename config/{expanded.mplstyle => default.expanded.mplstyle} (88%) create mode 100644 config/small.expanded.mplstyle rename config/{small_screen.mplstyle => small.mplstyle} (79%) diff --git a/.vscode/launch.json b/.vscode/launch.json index 726e3c86..db9f6631 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -15,6 +15,6 @@ "BITBOT_SHOWIMAGE": "true" }, "justMyCode": false - } + }, ] } \ No newline at end of file diff --git a/config/config.ini b/config/config.ini index ed79bd37..e32bab40 100644 --- a/config/config.ini +++ b/config/config.ini @@ -3,7 +3,7 @@ exchange = bitmex instrument = BTC/USD stock_symbol = holdings = 0 -instruments = LTC/BTC,ETH/BTC +instruments = LTC/USD,ETH/BTC [display] rotation = 0 diff --git a/config/expanded.mplstyle b/config/default.expanded.mplstyle similarity index 88% rename from config/expanded.mplstyle rename to config/default.expanded.mplstyle index 9d120973..8081f161 100644 --- a/config/expanded.mplstyle +++ b/config/default.expanded.mplstyle @@ -12,8 +12,8 @@ xtick.direction: in ytick.direction: in ytick.minor.visible: False -xtick.major.pad: -10 -ytick.major.pad: -20 +xtick.major.pad: -20 +ytick.major.pad: -5 figure.subplot.left: 0 figure.subplot.right: 1 diff --git a/config/small.expanded.mplstyle b/config/small.expanded.mplstyle new file mode 100644 index 00000000..cca9bfee --- /dev/null +++ b/config/small.expanded.mplstyle @@ -0,0 +1,2 @@ +ytick.major.pad: -5 +xtick.major.pad: -10 \ No newline at end of file diff --git a/config/small_screen.mplstyle b/config/small.mplstyle similarity index 79% rename from config/small_screen.mplstyle rename to config/small.mplstyle index 21ff458e..059c74ce 100644 --- a/config/small_screen.mplstyle +++ b/config/small.mplstyle @@ -1,7 +1,6 @@ - xtick.labelsize: 6 ytick.labelsize: 6 axes.xmargin: 0.15 axes.ymargin: 0.15 -axes.zmargin: 0.1 +axes.zmargin: 0.1 \ No newline at end of file diff --git a/src/configuration/bitbot_files.py b/src/configuration/bitbot_files.py index 2b588e3b..8a658976 100644 --- a/src/configuration/bitbot_files.py +++ b/src/configuration/bitbot_files.py @@ -24,10 +24,11 @@ def __init__(self, base_path): self.logging_ini = self.existing_file_path('logging.ini') self.base_style = self.existing_file_path('base.mplstyle') - self.expanded_style = self.existing_file_path('expanded.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_screen.mplstyle') + self.default_style = self.existing_file_path('default.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') def existing_file_path(self, file_name): file_path = pjoin(self.config_folder, file_name) diff --git a/src/drawing/chart_overlay.py b/src/drawing/chart_overlay.py index d153539f..e980079b 100644 --- a/src/drawing/chart_overlay.py +++ b/src/drawing/chart_overlay.py @@ -62,6 +62,10 @@ def overlay1(self, chartdata): def overlay2(self, chartdata): portfolio_value = self.value_held(chartdata) + # 🎹 draw instrument name + yield RotatedTextBlock(chartdata.instrument, self.medium_font) + # 🕎 candle width + yield DrawText(chartdata.candle_width, self.medium_font, colour='red', align=Align.TopRight) # 🏳️ title block yield TextBlock([ # ➗ draw coloured change percentage @@ -73,10 +77,6 @@ def overlay2(self, chartdata): if portfolio_value else DrawText.random_from_bool(self.ai_comments(), self.price_increasing(chartdata), self.title_font)] ], align=Align.LeastIntrusive) - # 🎹 draw instrument name - yield RotatedTextBlock(chartdata.instrument, self.medium_font) - # 🕎 candle width - yield DrawText(chartdata.candle_width, self.medium_font, colour='red', align=Align.TopRight) def price_increasing(self, chartdata): return chartdata.start_price() < chartdata.last_close() diff --git a/src/drawing/market_chart.py b/src/drawing/market_chart.py index cbfe0d21..b81e4142 100644 --- a/src/drawing/market_chart.py +++ b/src/drawing/market_chart.py @@ -63,13 +63,22 @@ def plot_chart(self, config, layout, ax, 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 - else: - yield files.default_style - if display.size()[0] < 300: - yield files.small_screen_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 @@ -87,6 +96,10 @@ def create_chart_figure(self, config, display, files): 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) From 7c3f38dd1206b63d370e59d89b0e68bf66283905 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 10 Mar 2022 19:43:50 +0000 Subject: [PATCH 2/2] chore: autopublish 2022-03-10T19:43:50Z --- tests/images/APPLE 1mo defaults.png | Bin 1752 -> 1757 bytes tests/images/APPLE 3mo defaults.png | Bin 1830 -> 1880 bytes tests/images/BTC EXPANDED.png | Bin 2080 -> 2114 bytes tests/images/BTC HOLDINGS.png | Bin 2160 -> 2135 bytes tests/images/BTC OVERLAY2.png | Bin 2203 -> 2170 bytes tests/images/BTC VOLUME EXPANDED.png | Bin 2338 -> 2336 bytes tests/images/BTC VOLUME OVERLAY2.png | Bin 2376 -> 2427 bytes tests/images/BTC VOLUME.png | Bin 2313 -> 2353 bytes tests/images/bitmex BTC 1d defaults.png | Bin 2115 -> 2087 bytes tests/images/bitmex BTC 1h defaults.png | Bin 2033 -> 2054 bytes tests/images/bitmex BTC 5m defaults.png | Bin 2278 -> 2337 bytes tests/images/bitmex ETH 1d defaults.png | Bin 2149 -> 2177 bytes tests/images/bitmex ETH 1h defaults.png | Bin 1961 -> 2012 bytes tests/images/bitmex ETH 5m defaults.png | Bin 2243 -> 2312 bytes tests/images/cryptocom CRO 1d defaults.png | Bin 2165 -> 2193 bytes tests/images/cryptocom CRO 1h defaults.png | Bin 1920 -> 1934 bytes tests/images/cryptocom CRO 5m defaults.png | Bin 2228 -> 2250 bytes 17 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/images/APPLE 1mo defaults.png b/tests/images/APPLE 1mo defaults.png index e65fabee8f5b42a55434a33d24d2836fa3e4c28b..c319013811bec9471c179dbde2765b03e82b853a 100644 GIT binary patch delta 959 zcmcb?dzW{EE_3~CPZ!6KiaBrRbeFAG5Mj0b_uu{dy|m8(8g@z@Mwhp)F?_}#ynyRc zCKCe;G_V`ppW7Jc(1HmomUVFLtee77Y~3LMfz90plRGQ-+1>URFO2*rSXjD%O~I)` zQ1SZpuVNh$?KSlb5OuDC_r+KQ#cTJeb`&fzk4^5}kdp2rxX@L^rRMMR#}AeM$SK{) zcTs6S*Vxf*cb~z9!==N~b&2FEWLx1?>`wLxX>pY54@}nE6w&daSSRn_+u{)6fV6Ep!sE4k;v+g=8H>0a~|JR%K4t?mV*`)OnKM;9@ttMs1rxEa2e!Gc;B7r6q;;1QH;7_T$>M#AQQ>T8#C@kyG%JGD{-#0^^R6ftmJW5kp z9nIIBJ2Z~{)!r!HZQ-D!bltG*Vx(Jrubkj5$CfgIg>%)Et{pFWew9&>2?&$6cT_#r z%4Xbo{kpe-`Ki?hq(4i&7u`6+f95o$qE6WzA$D_>U4Enp7Am*eCFuxi=ZP&;O|2`w z&$U@s@ap9Me{{^=My~xN9e(7BXK%->V=I(?LCgi2%_R6}f5#!4{}u{PXX*og3O-zY zWNqY5ahHzD4`L4;F_N`JnpZwIFu@^UN4CqBYmth3E%|0wuGmzv;#jq~iv_#Vo#*jK zw;Khmetfkf>SpDVj`x)Z<9QhxvS!quyZ`6Zf@vqenp~3#tBdG9&LwuT^ovaMOyLja zKQ~FKU+-tnee{3Zb-kT=COfW1WUc=?`9Od>J8*p_9;Dgfz3f94;N& z9RX_fx5Gp`A`aE|a4N9?;gPluvq-liLhq6T9&J0;qofmcR{Kz_aHL@Gt25l45w#I& zXV=FBwybx_ZtAFzPd>O*Q9!ZGHRSg3|95YEcK!NbtA+EC{STJaM*MvcFPyHtmN&Z7 z!1>6dQ_M;sN^Gl@zqzLDzhc6^{PC@uS@t`QT`N(lzr^=DPDxIG*3thSGdq@j*|b2q zHKJvIy#tGqlHlo|a%`d(8~v0@PMC`Z3TS7BDKZIuR8&5+)Wv1amig_0E<4U{-4w*9 zJeuX)d! zP${_2IFCv2XJmcDuM+PT`KW@!e(Tptl^bqWXw@xz^xb^jbm#SJ7X;a&d%vmdoEp8mC)Tp8+sS<_%Sl?fqeHt@NN`()_%}VL`h#VgHTIqgQ+UeJ?()Xo z>+@ue;=`X`FBP21{9DKA`h}>7YfZrc@?XU^?wRXTUb62V$Eyy9dgrPciF+T^itTuz zlO(fGXrpyXH;1_4zPTPQJ=aeNq<4PETqZj4PSSpNGj67wz1yEnzv8c?^XrPM&P?k% zZNbdU^X5+G%J&_PxIGgPY`3{HrZlE%?@T$?f{0``L%LD4i)yRbBg-zjKq4mg!3CsT~_GS7^RD>i2%$ zbHR!4cI7mD$mkPd-1(jN6}!uh3#z3@=DMmVI8Eu?p)EiE!A#d9m-f26u=(M-pM7;z z_l5W^FPM~S{JvRux)fxd(MpmL049=cE-CG%?|DE8Y-{&}GiSb}#2?vk+3Hn&Gsj2A zBQ^?7=rBfM#W5V&o_kLF?wj5A^7k7 xUbaH_>ksCgyp$UA@sh`*ZS`xo85ka%l;4!by|e7#sVq?D^K|udS?83{1OSAHs6zk% diff --git a/tests/images/APPLE 3mo defaults.png b/tests/images/APPLE 3mo defaults.png index 1c6c884368c9355ad8f89b82e0725d0c5fd093ed..5396e1d10716da8e3f597ec94bae3f5bfcfbaf11 100644 GIT binary patch delta 1067 zcmV+`1l0Sc4%iN`ECYW87D+@wRCt{2oQsyLAPhx~|NqhVPCdLqX^R+|vuBpAHiKjr z9IDi9BM&2jg}fGS>vpXCZG64pw)*F8OIFgc+1Pw{c_f3CDTnCY)tLZ0e3@;;i z#UD5FV}#R?B`T3X*K3w?K?osD1YE7h+kO&?02BczBEk;`FOvOv859910#F2qMbr+A zCJ&Yrv8^IvzprSD0JVc5$>~l5b^zInH5F&vlw1P)HFV2X%So0AZ&~9)i>TXqUyh$hxmEj@>u~2 z7$PG7wuEUB@wX)`i`e3COIQ{m;TuE0BjRgT65-OfE+T*AKm798z7H6ZO(SXuH(VxM z#ll7r9*O{VMP%txgj=NutWpG4DFUn3MEEL6`grezD~ibXst1ZV2p@iIi-^P`k_m@J|)d{W|Ju87+3$+n27M;I3o^0zJ`Y@1nuY}fMC?U%HPz+(Q48EqoQ z-hL^}Yq*?XpiIOzbPknIu4Af&G7&O#4po5JJcx#Lq$%XP$i~_7CG0X!N?YgBQtpt){YB3?=a0=QRdPH19=APX?5nuflQO)2PpVz~%bN9((OTi{A?dMsC0dW(9MwMH_9KgH zlG2{@!AgQn+fRzQxb$84ckS>a84j-f6`{%+>_S}@CM>G=MHMgBb16B7ZuSq6uyYeA zeCu|{ZAF{L;zyiUqKv0xPE!#j*iDuVqN#t?fhBIBdB<5<(2?p`rwC9_~vr}*X1Zr6KNI0MBQTp5^^avTH`HgMEb?>@Oh|MNwq55hidOH(vN z9+vG-zZcpY>UtwlOHfzXTTph}-(n3Wh?~G#yKY=GzO0rx&*{iL>!((Cri(V#S&3d; zb~;H((BMPXv-zwQSmh` zQt+0#ub`x0==LN3gk~!}TDOvKhSoU`^sU0sml|&o`MH+24_j(vr{TE@(=`i@zB&nd+V3&R8mS-n0fNz^$`8w=?_AR1MEy{mUZl~jEFrl^>%&Gd^M$2 z!f!7d_iXBrc1;X><)Q<0)|`%i{+lFtTpKoZh(>uD-2Gmw4f7Zz#^HhS;nT9E<$uhs z)wjnl>`2J%y3pQb(^9|khg$JOp^JIT@=v}Y(!NJ`#=Cgg$?Mx4c4flE@j9#&OFVu+W3RTiuUR3n*xZlZ7$xFYg=n4Jv z3d}p4U>G93`dfqNtIOO;%lns??Tyj-xY7NflZF=G!>sLIEizjTL+Ag!ardi{q2*TQ p=Lu#aTOyv{DCKVvaOyZOe@2g6eQJVkI|C4Sy85}Sb7D$p0stHnzBB*; diff --git a/tests/images/BTC EXPANDED.png b/tests/images/BTC EXPANDED.png index e7b747df32d2ae185b924a477186aa1076932311..926745bb4fbf68385752973ac51a2bf8f943f126 100644 GIT binary patch delta 1320 zcmV+@1=sqZ5W*0!ECYW907*naRCt{2osGJ!5D6V+vh2X@FoVe z4iQvC%J(&!9vu7APBk< zi|+h#;@n-QDFK8CAVdH`Zp?J+7dvm=ch_kiMhhUCAOsL1fDp0Lm7gEScgL<1a-XjE zYa!kcK!_Ruaq}P+5Um1P~&C5KRq&)qZ*qh5+I)B?S-;#Jq+SK!^Zh zl{tZ!R33==WD5-tvIhv+&kMqvc2SMwTpX6-8naK{7Y4zNg0KcZK#0K)5QRZ}^m{Sex1qm$xKabe2O}+(P0puGTli5x{P1y` z0zut_AUb{AmYj%87LEae&mXrXB_dNI7^$Q~Yaa+MZuIF)1O$}@QOdj)^VQfJtrkv9D4_QJ9t4*KK{AjO5SEK7 zB~z#mD*@u8aYi7i9fW#2YuRZSbwL!dA%wOEg5<~Lq^Rz; zHUNJ_a8Pm$LN&crP0OW|ie8N@z-4F&HX zL^QDOc8Nv;@kjt6@<8yx5()$#7=$*&00JQPxjcYSAgnc+3?ho9e-HsHT?bbn&StsN z7$D-NhytOz+_O3cp$E+Xadvva;~>tfYF#N@dVn}Pz2LUw=l4}roKlOOZz^2m#~^+yw-U6eyY^vG1_)(<3zrE& zsAZ1z$OB;?l<7e1Yvq1_(w*J`LH&csP#nbd^5Sp`gSdYMVK_xV5I_(>=vU45GbKSR zDTyIloc=9{f_ZTaYWzQ44S`^CAS!=6jd2jq)}LPx%b2H~8lhA+Lp9q7eczuNrekUD z(knFp!WjGZSJhn9O}-rggs4{##Z7;gURy(sEjL_l^+|g5_6A>UZO}qShgf>lT8$uQ zicbz=tDprR4RQ%KM#8DlY?T*4EGpgkH*0JFglGm3@ibH32Ff~fAL-rn(y$-`#FO{{ e@lEn|LHq%Yfe-x&hG@J10000r{p!EP|DjSL z!GdPFNy>av*<4BJ>9ng?!S3FA+vu zF;|xjl~;S+2=*0wy7=R~R(2=w#<2(?OK@f5f_j1Jo)cI5sJMF zV=C;=$WC<44KLcS{EWo8K!VNe>H@_=!7 z_flvWzCjWA310F;5ujBO>eMJGVo>6mcdc|(ha!OJ#nDAfc99~mND<3Ys)u3>0ugQ1 zA&N5Rey+dEO%Y2GLN)Bu79qkmJFn(N@bdkMD@w$j57mF~_w}nwB;xY!rkANq4@LBK zjhOEmOMYr6rX~~tu8Zh&;)<_b0A+5vBtXvNv(%T#UXa*>oUcKh{%QP=tS}B;sv;Ph2@A!uF+qSHy`}f3~W_ zE_KtR2w&(Urf91HL|`0gM&+)e2&o_fo#jiuP%!W|ZMRY(`9w&aZy7^P6C;c2O^I;- zJ4=yUMDcs4x(RGVAhWjpb3??fR$aY2hKWVs)bJvi67yk2sh??JsWS4K?E}OeG%q?i1`}vO%ZES%ry~-k!lRy zDiNntsKM_BMI`Twupa&Eu-5)(32N#`cV;Qx9nQPc>)o>cV|Qq zxRz1`MJ%{JEQ;_VRLAED5eX~3h}hIi)uvvA>M)P#NJOd@GKh$Gb0}Ia7U6H~My<2tW~lA_yU*cZ#(OT|8~p!ts!J{thHG z0oxr27Ta-=xuuG30n=)UFs}b*a1m=kEpTcW7g3`o9E~Th92BuosJ+yFvy37@Um{Y` vB%}ZN)Zp9Uxudze8%1nZP{hkAsVw3T(R>eAaDo8000000NkvXXu0mjfW>ZMB diff --git a/tests/images/BTC HOLDINGS.png b/tests/images/BTC HOLDINGS.png index 2a0ed20cc44d9067f3ce96d7124f4bf4c719ea43..5b68f223771f364d519c049069e2d4bffce472ec 100644 GIT binary patch delta 1340 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 delta 1545 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 delta 1583 zcmV+~2GIHY637y;EdzfBNkliI%J?3`Gh5|IytA0fL}{gh_MmdX|mIuq!eI ztf!P{tN_3qAUgkj&Mw(V0UjX^35Vg*{|e`$azzWk6J^h*a+m~yJ^>Ji%zH3w^|hu* zM#we^#w^e<9EfQ)VUMFhET>=f9gNv!nJNK+5)i0aAOLk2_T+z_yL7Ue*=q<0wIGOD z5)jJIwQj@CuDkQQbe4x9AW#AVB_L2hbQN~I=XidWPVRh32?*3XKrjru1O)1=Qn~B3 z_Xr39QI`&%1O$p{j+$#2&%&PE(-*=|0sGA$AiC;@>I5U6i20}*Wr zqK9EIfWS2rf9QX|q_Qdq{1+X%NP)}!<40Z$2&AYP?2wPGC!3@Hr@;d-p+h!oR1`&V<@NZyk0s=s5 zUA52yUME)_2)w=-2vyv7-hi;iu&+gw4L1d&KUpajHE zdYjh)ZJSpEqRt+6vIte{#upHeBp^^*fY1$-?^pF20s{2}#Ptw6m&d{a!$3g%Mo}94 zG~;O^W$^?AY6lQX_w6~2)&-#>5CgJXQ0O4=AReYt<<}DssMSD#KiED~KW!Zxf=wGs z(?!_nwt#;S5GsK1g9ic83Zhoaf&g2xPlK@io&)hXrMmcwf@rsc?Lh!riRw_aXUmF` zbN9ng5VmpS6Yn;Vn#2SI>eV1dE%4Z0ju8a^?&4t})Z!q<46(UEblGOz8-(3(!VY5I z?=gwd7%Zm*JbKl7X z!jF~QGLt4TslR{=M3otrC0G~#0)#TI0p~LNRoHHajvF;b5UgDW9|)CzFm=Xnt`tOR zak>npI2ucQ{D~7)n>xFc??Cw13T{U#wo%>&ggSr-31mUo21XamP9eA{%SzlySEXzP z;qHIGEI1a0b9|~DC#iI z(6+Ih27-5Ye*AT(1;(}`20>m1DFeZ--XPMELEIMj$rz3C4iNV#co1aqHj42T5XNX$ z15w*t3J4Sz2;aBffJpM2K9WK)gHTr>5*L351~wOgLu??Fd-*KgCOZWLc$LLx1#yyM z4up^ODiGOE62sIU0tn&`?KayQznScqLLP+9gXlN?UKRv+H|P;Wa|yDV4Z-MaM9XxeY^PZh&onL$e2s0hQGDRRd{n{F8G>D>10tj?c3;=O0yNazw|9*c& z4uqZw!ZR5Biy}u5=m4Dt!u`+PhyTV50inoR!8GSJpcieXMJNhlOzt_&ZzEL5d5w9e z)gTc5b%Rm)RcjoGmF1VX2V^xOlNO0Zpq4M-C192$X<8eHnzEg2Lis z{{eFQBuCCZmlW9j6Jil6c&eU&;6{Hp@2f~HB2$*kde!Nby8DkojOn#VK)B>yrDhr> zK`*z6`iu`(aFcEM{l}n{Kvd}nLhCkX^z;fbsTssuBp^@%0`)}@*|o|R5I()VP}Wow;4)nZRu*0P-ESf^bfOy@dNJJ`Tbf@S{iL#P)rHo00IM#V&sX@zS29 z4uqMFfII70thp)x@gD<0JZn$(;CHNCTIhBV3$!6;uRMgX1VmET7l5$d&1CzV+nZJ+5QMAdGoLAY47DMR+TsM(kq*lXB5g5U%d#(ks(A70j%ILc;(6002ovPDHLkV1g&xw>|&> diff --git a/tests/images/BTC VOLUME.png b/tests/images/BTC VOLUME.png index 4638139aec6ffeb53811fedaaeb2653dc73655c3..26fb4322289ffa6b830c4c0e3a8de6f81618420b 100644 GIT binary patch delta 1560 zcmV+z2Iu*S60s7nEdzh=NkliI$`w3`Gh5|Iyt_APGV#%Bp!Y$5Ld=t$+wx zZH#KH03d8!fZ6t47+}~Q3gK*=7R0_wzMO#l=f^+?ZpQ>*A)=9BKyDTjexI?$&OxGJ z5#pW5dkw73A@T^}2k;97Zvj!rk{rk*3*s%JR7<1%YY=VpFPP%!S=aQxC!>1%Xl!CPbO3J@%|dAnd>P58SxJhME=x{u7&)QV^)QL9nLrRS?~!AU1)5 z*tJ1W5C*+L2UH3o=+hv$-BoVf)(26cquit*Pz!^weosN{JNG7W_axZK?x`0A@o)Qn zXYbtM1_#_gct>V!5a`oEx{ zAW(~durY`hCCsfbf5bqvkb*$X3j+9u4O0-Uo>*Q11bi9K=$jcYvaZ6+rkNy`>ZcmC?3M7Ng?WJ&gMc&$c`Rm%nu4hD@?yDcXpn#V-M?W|Ai`2PLDCKc)OmTaTml45 zhHM{XDIB}6wjc)lxq#5&opfAK?QNDhQ1F z1rSC-7zTnCeNI4RSC8KV!rPb`b2#P4+%JCsA;%HPs2LDE`r07!dot=Nh+(r3qzWKT zGxH-20Rlb>!ukon6o_%tF{HjA*rI6!V$iJ?sVazE)LjyU=qc z-Y(1l5XPDa!~{L1c>toU5CH0)x)KLnVJf z>@~sQF@p&D`}Mx)DM0k80~g>GdoqvcQwOOj`UqcCYJS=@(xAy zDCCLMBT&;uY10z|^45d^TvEUU=b=zxDtQi;4Sk3jg*th{%?yaWjTrOT=tA6s|?bE(K*$sU?#dT>3!a74^5M+k{AzUiq1mX;Lsd5lRyN^edfe;x8BYifRGZKVoCkIax zAkv*z0R~r|-^>JpQ#kjCM<9Ly8V};&9tvU{h!>~|2$kw{`U8W>7M&37ISn2F0000< KMNUMnLSTYW&bmwh delta 1519 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 diff --git a/tests/images/bitmex BTC 1h defaults.png b/tests/images/bitmex BTC 1h defaults.png index c913b5ffd16ea6869ff4a4a194f73ab5cc675ba4..29be897d51d0c044c1522fede7dedd3adc480f0e 100644 GIT binary patch delta 1258 zcmVx$R|CnHhh zMk%PTh{%4N1?vC%Sw>u@OZ5SzC^*?}PK)sHR3h)6zfW%G{Gtq(sG{q8!f7hm&iOr7 zoFFj>zl6wwI4$Pp5M@M=2lNX>m=WaFn^Z2{%^=`k^WGR?K*WDz1ljtN4-yarK?Nc= zFxvgNEIw9p&M%)K1rRKNU;%_m8=L!{J2!XE6Q3aj5G;UT0ff44wAn8iFk_#bCqP^r zA5!yyIAm;M0R)R8T^+wWKduK51!dm_5G;UTRRUoYH}ndO-@)ARlCp0C2-bceNS|&4 z(^;|~2s(SNap-@2eq~Y_#GPc*yCh)nI+09rYzV@nAMY-g5#{|bV+6m3Z!|{SwyHgd zS_Xp%AXwk}ahwurOYE#S{81;0AF#VY&i23ShyG$eY6>81z}^Nq+vB_<6ki&6!2s4|}3q-+eN)r%v zTIciAtr&>pNDB~lg6sQi!dDPUzX2jwP*ZNov-_nn42Z8*@*uK5q6%cj0gNovmyV`>A zZ{VT^6oY@L@=C2c2=}m)1K|>2Nf6l^suVjCm>=?2f{MASWLDP2)D}6@0s@mb(YlyA;{xB2)oMA&xpDp;u=GMxE><}KqU81 z7Zt_=5lafhZTF@C;U*W(vh6^es|)?f1zY?$-qe2}lx~$bxxi(+gUJ5MuLR;d5rANg z2;w%-)F9$1$}fQcA~B7&AG8DriKnm`LAV5%0E8(!Y+J?SDNA=E5ciLiZ$k#|PLG3B z29YH1CLq!$=eVicfVe8u+q+4I*CEwhAfBuyd=^px#M~f6bq}Jra{v*~F3Pkj?*$Ov zQE`6(L}>a8gnj7AdF%ngbnnO0NIdZ_)2i`7#4SuF-ep?V7=-Z_03mqGI|+zr&`73G z1e){HtSt!2fyfpJgLr%NW8~~yIY79S2y5&MBB}up!+@wM84%A!%3OQeg;ei9$khpi zw_NC?k*=z1tUe$p%n0um<(;2^I)U&n2X%kF&a$zR`^LsvxfFX>ey5V__E`#p%9 z^eTPNv?+-Arl1{&om>Gx@D?C=3lO{o2;Qy)qU3*m zc@Gc;y#k1+MxwPq7y$(91qgWoMEg)#$>;eC0R#&mSOCES2o^xF0D=V&tZhNK6-2$4 z4mtGzVHxyaOx9Iym0|zog7c?X&6PnA|M-0nde8n>Tz6HheQ7)rKxiQ$APCw>f9{+T UpKn69`Tzg`07*qoM6N<$f`mLb4*&oF delta 1237 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 o08?oJwg3PC delta 1354 zcmV-Q1-1Ht5#Nfsgm-jO;ceBQr4+twb45FkQ;2%(b*%f1q+O24+Vv_OOa5duU+7+0wpAVPo$ z0V0HfB6I^0LMML_%RlRrJeaqd=_Nw`Z5~?DrLTbqp{t1CtMOG4U1=vGSfBN25gaV> z`mzXiOV#M(B6wZ7hZfPKk9cy{pz5jt5yHDfEQYGWG%iX}-s)P!LpGF&SXL3^t~x#^ zbt3)?G;n&YQ^cykh!|x;zlcF5bc>)-B5a>zGKYw@ybyn}ieP0TSPC{qgt{dc^eIm84Mci0A6cZ8a=<9B@vqZ)_i}1Hd+O~-36>ljYbjlBst>20;Slb$w<#c>! z=}@7FqFU@kxESRK+KE_pN0p0UdxbFTb>|ZixhsEOE5iT8-%t@XONTm%@K?$wL{NE) zIE-#~BK!^OCL;O;V)pbCVY`ov92g?Vo^%*QDi?7a`0rNE$l59^B5%&Y?!2i)98+Mw zJRq!4fe3fk=q(~P6}lxNSQs({4I=zZYd6sxAIv0^M^Gb>sNmCKQciknP5tncx=&d4%GDO%!wTj?KKUXQ@{M)e=@fh7j z&_#g81!rdvVdD**L{x@|+LFqi0}*a6aUsHdxVyVE9~BXqWaWx@m_!lnV9(ASOpjM3 z;$kQ{gE zFNA|vpKcM-IW%4|^AaFJfQTPWR?NHvSP&pWC>POMosy4YaSxI0(JfgApPXNnd0u*V zfC!u1tGI0=XVc4DM0v(<7E#1YuNnXV(2C|ueOTj)k!wt8O~A8B$t6&xX|+OS9wx*W z+zYsyo(rbW<$**);&&u!QkzqRX}}G?8srk3%!FgoVz&n(008ge50c&z?kq?*o&W#< M07*qoM6N<$f@2+C3IG5A diff --git a/tests/images/bitmex ETH 1h defaults.png b/tests/images/bitmex ETH 1h defaults.png index 0cfe55a9f476ae6e7959894adc0c27fa83034127..77bf61a44b1c1dbed4e7ff8f5ac5e1ff40f8ffd3 100644 GIT binary patch delta 1216 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 KMNUMnLSTYOK5^&( delta 1434 zcmZ{kdom>nKYRbW=bm%_x%Zq;7pMV(-3n;fL4@cT znKPTCm{F*M+hAG0eluv3#V`g#Q(F`^1~C*N%FfQiP8hlWX#8r{10}&GobG;>9QX=> z{?D`?hGh*oS+gE0dFpgae>8uNm)s=>Qip})dD;kPYpV#LEjY0NcBNi&!_&2bjxT96 zW9zD|LMi}`?g3U9PxiL7_ru2Qs5)p3AR4F<#ldl1pB(xFMoA)R&fu&Yl<1QPjSZE* zMp=E@C!RjAtG_!c5n)}0ZZ*Ym1lTm>ax*k)bCT9l(8e|2m%82DtrI1KPe+2^**#)t z9LJ%6a`NZTZ*Io;CVCI!2 zXlKw8^Sf=*HUN9Wa$Wn`@OsE?6ryIighim2Ze$PQ%$U*=uocf4=R>33u@sCDE;!Iu zK3D&nTLZ0qrYE4P$5xfT5Kbq&NU0m#ARO2x9!n?9?Qba2tnf$69t})C(n4hE1g8lA&pf+MU><@?jF@R5 z9_|{-p}X`7lQKK9+R`_Uy^_=dPaNIywFoQH>vK0sNJ|6NNhvcK9N(u^PWanAXH$_{ z>o9z6?9g3$k*sOZ z=zKBc1)}qHz8pTN?ITEt8g_1=a-A~@N2mh0#^Qc%e@|0_+T;{GnfrQNg74*-OX5#j zCs27OJ6w?D=$*5{a7~vA=efkc3`_H6Sur~zi}gsGRhA}IfQPSc4_VfZjzlP%k9cQ1 zTZ|t!@7vjDz|HR<50R=I-Sarp{N)Ns0=|;8qdR^+{iX|xOIGs}Ay)TBjfVNw%mOpf zb-vCn|FPyDetSFc4h~_06bQGFH?V z#uS^~SgS7I;QP&(Hn3Zal^33<32fMBGJEmBVOuwsGjWdGh~?lYv18YTIY0`o zUXCnax5oAL1T3@j)|R0_3Q@Wijae{WJNx@jc`6qeEtw$Y0^=@vsREUklT#R4-qt^* z*)G!4SL=~z