From 609c045629210770ef81880ca92b6bb0d95ebb24 Mon Sep 17 00:00:00 2001 From: David Brazda Date: Thu, 20 Apr 2023 20:12:20 +0200 Subject: [PATCH] bugfix --- v2realbot/__pycache__/config.cpython-310.pyc | Bin 2590 -> 2590 bytes v2realbot/interfaces/live_interface.py | 6 ++-- v2realbot/static/main.css | 27 ++++++++++++++---- .../strategy/StrategyOrderLimitVykladaci.py | 14 +++++++++ ...trategyOrderLimitVykladaci.cpython-310.pyc | Bin 6541 -> 6594 bytes .../strategy/__pycache__/base.cpython-310.pyc | Bin 12691 -> 12707 bytes v2realbot/strategy/base.py | 1 + 7 files changed, 39 insertions(+), 9 deletions(-) diff --git a/v2realbot/__pycache__/config.cpython-310.pyc b/v2realbot/__pycache__/config.cpython-310.pyc index 29d633f6b1ad6f2a60dfe787c648bf5540c8e675..8264042686215ca53a5b3126d485486866ea053c 100644 GIT binary patch delta 171 zcmW;GxedZV07TJUyuQ8oS|3~zq7z4mgotS3F-RnoKwvjO0}g1x4Uy0XD<*qCn#oK? zKeUd7-Tu_ky!8305Znaaw?x=`^ahD26h}dy!6+CE3&d6-Bdf?NVca`RdUaLQT#gEw zDVEHTGDpS&IZG5YD0_J~s92$9jmFlN3afuzv%!Wfww}#9`{dKj2l;j7W%m8X`2i{T BCF%eG delta 171 zcmW;AsTION07cOmGTAfPH#R{jQJ_$$uYcei3?(3v1|qN#w2+1{^uZjSyKgS%Qa`i~ zgz0taSWNo-wBg+ZowtPFJ9Gz$z!yhBkNzm=4=aR50YjtEC}PxG)V;bY#!N;9%@i>+ yB+QYrK*ka|6^dToOH`~-vqocXOB?I|-LS!yEq0FCd#dTv$;)z(Uwd)g#`*zq>n2eE diff --git a/v2realbot/interfaces/live_interface.py b/v2realbot/interfaces/live_interface.py index 62f809b..42af49f 100644 --- a/v2realbot/interfaces/live_interface.py +++ b/v2realbot/interfaces/live_interface.py @@ -39,7 +39,7 @@ class LiveInterface(GeneralInterface): return market_order.id except Exception as e: - print("Nepodarilo se odeslat ", str(e)) + print("Nepodarilo se odeslat buy", str(e)) return -1 """buy limit""" @@ -86,7 +86,7 @@ class LiveInterface(GeneralInterface): return market_order.id except Exception as e: - print("Nepodarilo se odeslat ", str(e)) + print("Nepodarilo se odeslat sell", str(e)) return -1 """sell limit""" @@ -111,7 +111,7 @@ class LiveInterface(GeneralInterface): return limit_order.id except Exception as e: - print("Nepodarilo se odeslat ", str(e)) + print("Nepodarilo se odeslat sell_l", str(e)) #raise Exception(e) return -1 diff --git a/v2realbot/static/main.css b/v2realbot/static/main.css index 68843f6..3ef09c1 100644 --- a/v2realbot/static/main.css +++ b/v2realbot/static/main.css @@ -34,18 +34,33 @@ } #msgContainer { - display: grid; + display: inline-block; overflow: auto; height: 568px; } -.msgContainerInner { - display: flex; - overflow: auto; - height: 568px; - flex-direction: column-reverse; +/* na male obrazovce je log pod grafem, zobrazujeme tedy prvni logy nahore */ +@media (max-width : 1680px) { + .msgContainerInner { + display: flex; + overflow: auto; + height: 568px; + flex-direction: column-reverse; + } } +@media (min-width : 1681px) { + .msgContainerInner { + display: flex; + overflow: auto; + height: 568px; + flex-direction: column-reverse; + } +} + + + + pre { display: block; /* padding: 9.5px; */ diff --git a/v2realbot/strategy/StrategyOrderLimitVykladaci.py b/v2realbot/strategy/StrategyOrderLimitVykladaci.py index 1b23059..ca2eb58 100644 --- a/v2realbot/strategy/StrategyOrderLimitVykladaci.py +++ b/v2realbot/strategy/StrategyOrderLimitVykladaci.py @@ -36,6 +36,9 @@ class StrategyOrderLimitVykladaci(Strategy): self.state.avgp = float(data.price) price=price2dec(float(o.filled_avg_price)+self.state.vars.profit) self.state.vars.limitka = await self.interface.sell_l(price=price, size=o.filled_qty) + #obcas live vrati "held for orders", odchytime chybu a limitku nevytvarime - spravi to dalsi notifikace nebo konzolidace + if self.state.vars.limitka == -1: + self.state.vars.limitka = None self.state.vars.limitka_price = price self.state.ilog(e="Příchozí BUY notif - vytvarime limitku", msg="order status:"+o.status, orderid=str(o.id), limitka=str(self.state.vars.limitka), limtka_price=self.state.vars.limitka_price) else: @@ -45,6 +48,9 @@ class StrategyOrderLimitVykladaci(Strategy): try: puvodni = self.state.vars.limitka self.state.vars.limitka = await self.interface.repl(price=cena,orderid=self.state.vars.limitka,size=int(self.state.positions)) + #odchyceni pripadne chyby na live + if self.state.vars.limitka == -1: + self.state.vars.limitka = puvodni self.state.vars.limitka_price = cena self.state.ilog(e="Příchozí BUY notif - menime limitku", msg="order status:"+o.status, orderid=str(o.id), limitka=str(self.state.vars.limitka), limtka_price=self.state.vars.limitka_price, puvodni_limitka=str(puvodni)) except APIError as e: @@ -60,11 +66,19 @@ class StrategyOrderLimitVykladaci(Strategy): if data.event == TradeEvent.PARTIAL_FILL: self.state.ilog(e="SELL notifikace - Partial fill", msg="pouze update pozic", orderid=str(data.order.id)) ic("partial fill jen udpatujeme pozice") + #TODO tento update mozna vyhodit a pockat vzdy na plny fill - otestovat az bude cas self.state.avgp, self.state.positions = self.interface.pos() elif data.event == TradeEvent.FILL or data.event == TradeEvent.CANCELED: print("Příchozí SELL notifikace - complete FILL nebo CANCEL", data.event) #muzeme znovu nakupovat, mazeme limitku, blockbuy a pendingbuys #self.state.blockbuy = 0 + + #ADDPROFIT - datd o funkce + prodej = data.order.filled_qty * data.order.filled_avg_price + nakup = self.state.positions + + + ic("notifikace sell mazeme limitku a update pozic") #updatujeme pozice self.state.avgp, self.state.positions = self.interface.pos() diff --git a/v2realbot/strategy/__pycache__/StrategyOrderLimitVykladaci.cpython-310.pyc b/v2realbot/strategy/__pycache__/StrategyOrderLimitVykladaci.cpython-310.pyc index 22523dc08e15554b3a4334f8f8a6381c4d58de26..58a26e8dd2d419ea403d1d4bbffce2f858efbca8 100644 GIT binary patch delta 282 zcmeA*K4i?7&&$ij00bgYjw!bkHu5QPPu?lQ%cwBfjypxQuY^B^wT3Z^p_z%10Z6lD z34lpK5r$f(8ip+9ES_5C$?Lhz)rI1PQy9P^Lh&Lg>`<0y3I~)W2BH^;Pv+&36qOKX zC;^$umc`!82$9c{+-%Kb!N@2zxr8^6Edc1ABA>|zd3~fqE>3$n;e sZsc3b7_nKOUyzA0akHbKEHh)_=6I0`CdQV{H^h_}8D%&B7N5ij0Gf_HH~;_u delta 269 zcmX?P+-uC2&&$ij00i-xjwyHKH}WZQ^DzOrY(RV%h>JNU+i|A|HkI(Fu+}hUF*GwV zGL&$nuuab8mYV#OTQXE2UND8Bh9QeNOCVk-g&oQgPT_#EL_qWc(S;123@HpA42%%9 zEGe8RTtM^Kvc$w0N;$sK?0ixk`JoAdAf8ZG3AP12(7d3oiAjtAl~p$= diff --git a/v2realbot/strategy/__pycache__/base.cpython-310.pyc b/v2realbot/strategy/__pycache__/base.cpython-310.pyc index 22fd505e05f9c98a94b5fc8b785d0d82df610bd2..dc78ba9106127ba8f90937e64d32b16c7e58d301 100644 GIT binary patch delta 2335 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 XF18+L@eg4}BS`=Mh386J53BzdEOY!D diff --git a/v2realbot/strategy/base.py b/v2realbot/strategy/base.py index f1e6298..7ce66eb 100644 --- a/v2realbot/strategy/base.py +++ b/v2realbot/strategy/base.py @@ -48,6 +48,7 @@ class Strategy: self.account = account self.key = get_key(mode=self.mode, account=self.account) self.rtqueue = None + self.profit = 0 #TODO predelat na dynamické queues