From b42b06bc5d9fd2493650e2f57dff3f87ec5b23c4 Mon Sep 17 00:00:00 2001 From: Marc Blatter Date: Sat, 4 Jul 2026 14:45:01 +0200 Subject: [PATCH] Bot auto-update: src/__pycache__/main_ml.cpython-310.pyc,src/main_ml.py --- src/__pycache__/main_ml.cpython-310.pyc | Bin 28873 -> 28153 bytes src/main_ml.py | 32 ------------------------ 2 files changed, 32 deletions(-) diff --git a/src/__pycache__/main_ml.cpython-310.pyc b/src/__pycache__/main_ml.cpython-310.pyc index 6e818727d6710e8d46582f5b8ccc07e8700a04cf..4caf38c9ef16a740e543ef856a780dcff4cb3f2c 100644 GIT binary patch delta 3426 zcmaJ^Yiv{39lz)L`Vq%=oEHg>lQ;hoY(sus;mcshc!;LtQ`Y#fPaM`e7gFHV>(*5UQ$5-K5d2Ox4)`e;mgQ zRU^7T|Ihz%&i{4)=knpFoj+| zo|-d+NYnu925JFp6tqWRlh&MW$w=uH8Psp3(vajW;iNtJono<&24d%929aS3VKa{Gk)U$v|u( z{&sE8rhUkEA-Dl@#_>ozps@fl zHV6ib&%`LJM@A69YiA8e+YmzBx%@0y;Fp)5B8hB;Yr9NT?sIpM2tV(3O-_N%tYcf8 zMFW~A#8{m5c)Wxqaho!qnTCRDG!PMMrU5f&NNUVynVt#6G<7zVGpI2wXN<&;gY6i~ zjmbnr)pCYt-~@mg%R3(Aj(S&V0u&av;@$PnkQ|TJcamRauhu&Vnc?p>Y_EO^RbD{Y zk8l8Cm|Gfq$lrKh<5$h-@1WQCn2N9v*{MV2v)t!tCI9C0o=fB`uWnjLNOnil4MSxF zq_c`=>;Ar+8Q{QB|9<{x#WoV;+giII(u6sgvcn&VsA z>P(nqc8ZU+og>EVmu>fD+v~s?Wap57o`2$XLyo`ku7Vst)!szj1iRaWgqtRk%{%mAnZn1i_neG2avNSLow-Z0BYY$qw&K5vb3dUDOo@%~`vr*Rx{12i`I@Ium7!)f(D81Z{S6_c{{g zcXz)GFV>O4kLJFITZnBe7Jqmt-P|V#@k1CXKa#nfXjzPNDKM5rL9yNp-4yz6*l|lh?o4CdqxMyI9EqsnJWh+ z2RvAh?|;?aO;u+Z`P)n)1_!2 z9I(<7q~JK0B5AghQ6i-b;E)6C?9{3o3U7LG%F<41EBdXKr^_=^$~gNFVyZ}2E}5Ei6H9AVx+z^v?W&ZK;nzXSGV*B>BeX1K z*3BvSbOZew?Ko6x+gTl7-hRwZqaQkG$9`evaB(>JGYVuES8Zl)Di6k4fU z#BUYs=ei=%YOM~aIrnKywMC@2KHZR!)-Bfiox>@+ZVxxoWz?>lRRYRxcs%el!Q+Cb z8J-q!z(Q-PByB~y6+VpGG7_!*p_MMbATRCYNjY>!cqMgB$qR(72e+Q0b$DW|WGyVL z)Q#do5r&~|ilj)V4TbiJ*}4{;S|G_i{A)|Y-2bpb$6>F0?_tk|4Poz+&mQpa36E+0 z1#@9*Xrwx9qy=*F>SL{Br49eLmFA$A@&TvH^s;a}Z9E1o9)Az$RZtf><hE+T z9NtkYQO}ej)>8UAg(d=5LF(^-o?Knzi56@s)LL|U%c6r{EjqYNlQu%LHy1q=MxMuw zzODJES9x2wJGg-i@+0(td)C#dMH8K4am^o5r)N|e&_aHVsS^_+#`lH(V9MXGe8o5; zL;TQi6MujFninVK=L&)ufT>8?5u6B>$a@Vz<#Q7??#}%6FXr4E$QC2+8KnBSW76f% zf2f*RC>lRjm{BPG5km1(M$FQ0o5n{`@7D<8h7iM9jNtst<#ci-zi6%EZ%x)#>_D|Y zA>0A*ma_)_$z-$A1dEHRm)Ll#+F!u9#d(6*Tnw>;>^j{~$J1GDF delta 4219 zcmZu!eQ+Da6~8^5BwLmx%XVU0{yIC3jqJo9Nl3t$5bS(7iQ@#~#6gL1CGFXfE$Qsl zIS%RxB?Krmq@>-nQwkw+TgqgZ&Xj6sLrV)Crql8VZE1&(ikX&DzFO!E(~oHxrcK{l zNtR)-=YD#-@9pky-+QLi=_q9h7_y9(Q;4T()NI zgJVO74sIXw+joo&=Y)g%M{>g8=wMDba_a#U_(iuyIx?1uMq;zh1;Q-On>`Qkr##iR zUBHwL^PhWK$X5QYr%!f}Ol{>JxtSe8&2|94XIe8RwUeRaf!MS*8IDcqY>c0&K1NPw z-l%>>wgu5Lz@MpUC!gbgt})0YKT_Mjbqu?`2n_&P>r_M!7%YSxTSN!b7h;q(VuuFc zD`!n8I}xV&Z))!$U*?DFK2KQYw{^Q@GRwUUeI&+58obA&V3Tm|)LArOs2XEB>sNh* zE#Ne6znyBKa5NARZFT}WvzEBQ{3Y`XftV3aXjw}*W@N1qeG$e|)LY|ok+6}qL<1)Q z!m%82jsL2_TgJd3KNbH+!}Y|^*EjZ%XEPIxERR$K-=k}bk*BcpZiGh>MEJgdlE(kIVY4lcBIETNuOp$% z*v5}+t3E|9&n(!#89en+{~B^%<|q9_q%21bN5^>CzzA8)92rQGfuaZTJ=eztviB(bdhflTK6LCN7#U{5n%^F))CiYbTSapn89wr4oe^yX9rL( zHo6<7PJ~*7>ku@4W$O}Q+<(&q`ElmTO*dO?`8{48ykyIr9{k%wEfssv`UM1$=^B4| zXfHXMY1w|oM$YlO2VP& zBKACjjBpg;7{UYsxrOWdYez&7Z3bfaV~=0XfE5&WfF&8C8>Qlvbe?NJu#6Y#ZZfF;RdtHj1EU! zAC412E_#n*pCBcuh=WWdneb@Q6T8t)#)`_{2x zGR@ad+?A>ZBNsdvoOqK}l1>vtN)t-(Ruz(rQsNdVp`akX`$9SDXAD%Q=zsx=?oE)T}ZaH9ePXZq!cZ!mzGGn1TJWWI_e}^ zMxBpXVaifd9>@_WH|2*V>M|7r^dPw}T9MMYG{2fi_PDG&u+Rl1t4D)=fzq*CcTNj!ri)r<71WxzY)j5E z;T05GSEQlabc5Br>CW5Fn@-bZx~ruvQqnmN^UrS~seA%q10Ugb)hwee4=c3Qbc)|K zF!dV9jJ9HyTohHO(T0`fru;kcjibp5vtp*5uBDA;Ss3b6NMdQG1DR+#VO=I?RdmNuQ?|#Po*Y3re|gy_07t#hZlj?dfJJxjg^Y9bfLBom~qH! zMN*_QmfQ;nR?faWsq-ZM?jnrKy(jqAe8Lv@{|V#&t~3U=o|*3D-E;u+Pwj=SJ7+H} z3VB|Sui$z4j%!yWo|CTsjKs_5UFuFNyoJIQkV=(i!_Sk!H5qIF1Lh)^}A8!CJ*(8Ah9O8x4>YOu!P2aNzT7UtBD9-YHmqF+rk6%ECB zn0)0H65bvoI@c4_jmb!Oeu2LqbdfH8$z99kV3z+U_!8W@zYZ~Sm^Y5M@DP2p0&m;D zC1?dW#YcXn@!Y|em7R==-gcS9nTeVSWo!N zk)aWeYH=eFom){B2oD$QI&m$&4kK1GQH-9&$;CZ{D!Gk9-O*{KRC5*#|21+_=nIhpK{0!n@lQ536V)9QQ#MPNHwuR+xc;W zT{&fgUghsDcLOOoC10(zC>EFa=YN>;-e8j}z|cWl@SihqK@UtPE0zkyp9~*dH_l$3cn|xx3MGKQB*fq?2?Zj)QZ|IWA{H$uiMWemX(u*!Aq)ff zEs%Pw6`KOqfRt6DkV74OD6)%uz|TgSR{a(AB32%hu*hL=@}EYYhA+>P(Y3Y@u;U&6 Pt>}LH(UR5*qFntyVT%GD diff --git a/src/main_ml.py b/src/main_ml.py index eda7014..d1b8e3d 100644 --- a/src/main_ml.py +++ b/src/main_ml.py @@ -110,7 +110,6 @@ class MLTradingBot: # Symbol constraints cache self.symbol_info = {} - self.pairs = ['BTCUSDT', 'ETHUSDT', 'SOLUSDT', 'BNBUSDT', 'XRPUSDT'] # Track open positions self.current_trades = {} # CLEAN START - reset on bot restart @@ -921,37 +920,6 @@ class MLTradingBot: # Auto-recover open positions from Binance on restart # STARTUP: Load open orders from Binance so Bot knows its positions - logger.info('📥 Loading open positions from Binance...') - try: - account = await self.binance.get_balance() - for pair in ['BTCUSDT', 'ETHUSDT', 'SOLUSDT', 'BNBUSDT', 'XRPUSDT']: - try: - orders = await self.binance.get_open_orders(pair) - if orders: - order = orders[0] - self.current_trades[pair] = { - 'qty': float(order['origQty']), - 'buy_price': float(order['price']), - 'buy_time': datetime.fromtimestamp(order['time']/1000).isoformat(), - 'order_id': order['orderId'], - 'peak_profit': 0.0 - } - logger.info(f' ✅ Loaded {pair}: {order[origQty]} @ ') - except: - pass - except Exception as e: - logger.warning(f'Could not load Binance positions: {e}') - - logger.info(f'✅ Startup complete: {len(self.current_trades)} positions loaded from Binance') - - # Create trigger file location - trigger_file = '/tmp/bot_liquidate_trigger' - - # FIRST: Cancel all pending orders to free capital - await self.cancel_all_open_orders() - - # SECOND: Load exchange info BEFORE liquidation - await self.load_exchange_info() # THIRD: ONE-TIME LIQUIDATE BTC TO USDT IF NEEDED await self.liquidate_btc_to_usdt_on_startup()