From c817216ab12ba7be0317e80a0b2dbbbc8be764d6 Mon Sep 17 00:00:00 2001 From: drjones Date: Sun, 2 Aug 2026 20:10:24 -0700 Subject: [PATCH] feat: order management (cancel/amend), stale order cleanup before market close, enriched LLM reasoning (RSI+BTC+regime), fleet dashboard with SVG charts/gauges/donuts --- __pycache__/bot.cpython-311.pyc | Bin 51966 -> 54389 bytes bot.log | 152 ++++++++++++++++++++++++++++++++ bot.py | 30 +++++++ btc.db | Bin 53248 -> 151552 bytes dashboard.py | 145 ++++++++++++++++++++++++------ doge.db | Bin 69632 -> 81920 bytes eth.db | Bin 61440 -> 73728 bytes sol.db | Bin 69632 -> 81920 bytes xrp.db | Bin 32768 -> 61440 bytes 9 files changed, 301 insertions(+), 26 deletions(-) diff --git a/__pycache__/bot.cpython-311.pyc b/__pycache__/bot.cpython-311.pyc index 469a446674267f3cc3bd0b3e97dcef2af696cc5d..b076a2e1981c07fda2d19aac16c5aef535f208c0 100644 GIT binary patch delta 2985 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 delta 1350 zcmZ9Le@xV69LK+(JMMdM{5nAti1|GZ6z+6x5zI7OH#dUl;BIRCP>gg3cyK@Txs&M$ zvw#JMR<2LPR?H|dp@Kz^ZjB!+@F)cg(YD-K^k2=~)S0=mO?y6vTh_DP>ps7p&*!;& z-p?Nc>IdEGgwyfyI!Ube|ME7>21XJpEINIhBy~WC(qZ6U%Ldh2gFlffmR8X4F-X#< z;h*)i{RXIGUZ&-m9rODvsjitY6!O6G2R1Ex5`8fbR zzEf$B4o5Y3ogPyr-m9F5W2NH6?7Eoc%f$IABmQ2Mu5*dl9EI}u${inQ(Xyv!MY8ZO zjZS-gey((2UiZb@S)4DlvD2t!mQZMz9LkT z+e}sydfe$yg+cdwnqCn#@LbP}I?=#?&;V`Neb5MH{7XUT#cPMmupQ-qNnYxS1%Yfi z(rPEx1U6}g#Qq|FBJhS5UdMH<+hXlB<_3)^!>-mXV)MmT3)EvmTe^-eiV<3PUR$vi zs_}4_4JL55D^D{g!f$ca(K}kXpUNij{@XQcs>$r4ZWh8Wa=#S_>)cLH%|7O>bNbnN zJc66y431-g=9)+j@q2hzB_`i^SJ5nrzzin#I5l4gS@ht|{M9(IK8_FfL}_G?K1=ei z!IAt7%mP+*vEx)Z+`+|Do3-pG5jUmax`D#j zAeD3xj$-qGvg285vz_wsOSfwgfp9dd^?6-QwGLKCrS$?~t?z)_y_+3kO%ysth}{31 zWZ9@q3*j^2`r?I!8wayuZwc?aNJP!+2UiO1@*|%d2lx{cHyZH4P*FsXq4?($N;0IG z3|)yyJ(CM1CjRR1%SkYbKYyJMYjOExPRb~a86%7n7HL))+9wTg1@}*)P?~1SAKOkj zg>s)``;;+dp8S)-537AnH(Mb0GLB6>2mSo-DHX^h6m|>Mq1DPcGDC!ELXf(U02rx~ zEn-nfkyR>Ts?ilvgxrpW3YJ+ZM=v5A^01uE|kwu_&j>2i)6Ftdms4t^v#&qB%1LJP1obu`EEIed>QSRg6mzhgC5z^nIbPB z@(Uv8ByqCe2=uozGin!%x~Ii%;Yq#?{HcW|Rnk^~jN8&<+>2vZ8j{WMit4uX7%Ksv H`F_(s2g8NH diff --git a/bot.log b/bot.log index 59fe756..1fedd9c 100644 --- a/bot.log +++ b/bot.log @@ -1752,3 +1752,155 @@ sqlite3.OperationalError: no such column: id 2026-08-02 19:23:11,364 skip KXXRP15M-26AUG022230-30: no swing (0.000% < 0.005%) 2026-08-02 19:23:40,530 skip KXBTC15M-26AUG022230-30: no swing (0.000% < 0.005%) 2026-08-02 19:25:31,546 POST YES x1 KXDOGE15M-26AUG022230-30 @ 50¢ — ⚠ RSI 0 extreme oversold → fade UP +2026-08-02 19:26:03,056 POST YES x1 KXSOL15M-26AUG022230-30 @ 50¢ — ⚠ RSI 0 extreme oversold → fade UP +2026-08-02 19:26:13,916 HEDGE KXBTC15M-TEST: no@45¢ + yes@42¢ → locked 13¢ +2026-08-02 19:26:40,081 POST NO x1 KXETH15M-26AUG022230-30 @ 50¢ — DOWN: UP spike 0.05% conf=0.78 [RSI 17 oversold + BTC bearish macro, fade the spike] +2026-08-02 19:27:08,889 POST YES x1 KXDOGE15M-26AUG022230-30 @ 50¢ — ⚠ RSI 0 extreme oversold → fade UP +2026-08-02 19:27:22,410 K4LSH1_OPS online — mode=AUTO dry_run=False stake=10¢ max_spend=100¢ +2026-08-02 19:27:27,546 K4LSH1_OPS online — mode=AUTO dry_run=False stake=10¢ max_spend=100¢ +2026-08-02 19:27:27,546 staggering start by 20s +2026-08-02 19:27:32,423 K4LSH1_OPS online — mode=AUTO dry_run=False stake=10¢ max_spend=100¢ +2026-08-02 19:27:32,423 staggering start by 40s +2026-08-02 19:27:36,308 POST YES x1 KXDOGE15M-26AUG022230-30 @ 50¢ — ⚠ RSI 0 extreme oversold → fade UP +2026-08-02 19:27:37,723 K4LSH1_OPS online — mode=AUTO dry_run=False stake=10¢ max_spend=100¢ +2026-08-02 19:27:37,723 staggering start by 60s +2026-08-02 19:27:42,716 K4LSH1_OPS online — mode=AUTO dry_run=False stake=10¢ max_spend=100¢ +2026-08-02 19:27:42,716 staggering start by 80s +2026-08-02 19:28:00,714 POST YES x1 KXSOL15M-26AUG022230-30 @ 50¢ — ⚠ RSI 0 extreme oversold → fade UP +2026-08-02 19:28:36,825 POST YES x1 KXETH15M-26AUG022230-30 @ 50¢ — ⚠ RSI 6 extreme oversold → fade UP +2026-08-02 19:28:44,817 POST YES x1 KXXRP15M-26AUG022230-30 @ 50¢ — ⚠ RSI 3 extreme oversold → fade UP +2026-08-02 19:29:13,720 POST YES x1 KXBTC15M-26AUG022230-30 @ 50¢ — ⚠ RSI 0 extreme oversold → fade UP +2026-08-02 19:32:41,278 POST YES x1 KXDOGE15M-26AUG022245-45 @ 50¢ — ⚠ RSI 0 extreme oversold → fade UP +2026-08-02 19:33:04,823 skip KXSOL15M-26AUG022245-45: passes: RSI(5m)=32 oversold, trend all negative — no clear fade edge yet +2026-08-02 19:33:33,082 skip KXETH15M-26AUG022245-45: no swing (0.005% < 0.005%) +2026-08-02 19:33:42,876 POST YES x1 KXXRP15M-26AUG022245-45 @ 50¢ — ⚠ RSI 0 extreme oversold → fade UP +2026-08-02 19:34:12,848 POST YES x1 KXBTC15M-26AUG022245-45 @ 50¢ — ⚠ RSI 0 extreme oversold → fade UP +2026-08-02 19:37:39,640 POST YES x1 KXDOGE15M-26AUG022245-45 @ 50¢ — ⚠ RSI 0 extreme oversold → fade UP +2026-08-02 19:38:10,615 skip KXSOL15M-26AUG022245-45: no swing (0.003% < 0.005%) +2026-08-02 19:38:46,022 POST YES x1 KXXRP15M-26AUG022245-45 @ 50¢ — ⚠ RSI 0 extreme oversold → fade UP +2026-08-02 19:38:47,212 POST NO x1 KXETH15M-26AUG022245-45 @ 50¢ — DOWN: DOWN spike 0.01% conf=0.65 [Sharp 1h/2h decline, RSI(5m)=44 neutral, fading short-term w] +2026-08-02 19:39:15,077 POST YES x1 KXBTC15M-26AUG022245-45 @ 50¢ — ⚠ RSI 0 extreme oversold → fade UP +2026-08-02 19:42:49,063 POST YES x1 KXDOGE15M-26AUG022245-45 @ 50¢ — ⚠ RSI 0 extreme oversold → fade UP +2026-08-02 19:43:09,475 skip KXSOL15M-26AUG022245-45: passes: RSI neutral, choppy regime, no clear edge +2026-08-02 19:43:44,491 POST YES x1 KXETH15M-26AUG022245-45 @ 50¢ — ⚠ RSI 0 extreme oversold → fade UP +2026-08-02 19:43:45,014 POST YES x1 KXXRP15M-26AUG022245-45 @ 50¢ — ⚠ RSI 0 extreme oversold → fade UP +2026-08-02 19:44:13,261 POST YES x1 KXBTC15M-26AUG022245-45 @ 50¢ — ⚠ RSI 0 extreme oversold → fade UP +2026-08-02 19:47:51,999 POST NO x1 KXDOGE15M-26AUG022300-00 @ 50¢ — DOWN: UP spike 0.06% conf=0.65 [RSI(5m)=76 overbought, fading sharp UP spike] +2026-08-02 19:48:16,137 skip KXSOL15M-26AUG022300-00: passes: RSI neutral, no clear spike to fade +2026-08-02 19:48:48,144 POST YES x1 KXXRP15M-26AUG022300-00 @ 50¢ — ⚠ RSI 0 extreme oversold → fade UP +2026-08-02 19:49:02,411 POST YES x1 KXETH15M-26AUG022300-00 @ 50¢ — ⚠ RSI 2 extreme oversold → fade UP +2026-08-02 19:49:13,880 POST YES x1 KXBTC15M-26AUG022300-00 @ 50¢ — ⚠ RSI 0 extreme oversold → fade UP +2026-08-02 19:52:31,790 127.0.0.1 - - [02/Aug/2026 19:52:31] "GET /api/state HTTP/1.1" 200 - +2026-08-02 19:52:44,887 127.0.0.1 - - [02/Aug/2026 19:52:44] "GET /fleet HTTP/1.1" 200 - +2026-08-02 19:52:45,024 127.0.0.1 - - [02/Aug/2026 19:52:45] "GET /api/fleet HTTP/1.1" 200 - +2026-08-02 19:52:45,026 127.0.0.1 - - [02/Aug/2026 19:52:45] "GET /api/fleet HTTP/1.1" 200 - +2026-08-02 19:52:45,530 127.0.0.1 - - [02/Aug/2026 19:52:45] "GET /api/state HTTP/1.1" 200 - +2026-08-02 19:52:45,696 127.0.0.1 - - [02/Aug/2026 19:52:45] "GET /api/state HTTP/1.1" 200 - +2026-08-02 19:52:51,875 POST YES x1 KXDOGE15M-26AUG022300-00 @ 50¢ — ⚠ RSI 12 extreme oversold → fade UP +2026-08-02 19:52:59,901 127.0.0.1 - - [02/Aug/2026 19:52:59] "GET /fleet HTTP/1.1" 200 - +2026-08-02 19:52:59,993 127.0.0.1 - - [02/Aug/2026 19:52:59] "GET /api/fleet HTTP/1.1" 200 - +2026-08-02 19:53:00,479 127.0.0.1 - - [02/Aug/2026 19:53:00] "GET /api/state HTTP/1.1" 200 - +2026-08-02 19:53:14,923 127.0.0.1 - - [02/Aug/2026 19:53:14] "GET /fleet HTTP/1.1" 200 - +2026-08-02 19:53:15,106 127.0.0.1 - - [02/Aug/2026 19:53:15] "GET /api/fleet HTTP/1.1" 200 - +2026-08-02 19:53:15,649 127.0.0.1 - - [02/Aug/2026 19:53:15] "GET /api/state HTTP/1.1" 200 - +2026-08-02 19:53:20,660 POST NO x1 KXSOL15M-26AUG022300-00 @ 50¢ — DOWN: DOWN spike 0.05% conf=0.65 [RSI(1m)=17 oversold, sharp down trend fading into mean rever] +2026-08-02 19:53:29,962 127.0.0.1 - - [02/Aug/2026 19:53:29] "GET /fleet HTTP/1.1" 200 - +2026-08-02 19:53:30,291 127.0.0.1 - - [02/Aug/2026 19:53:30] "GET /api/fleet HTTP/1.1" 200 - +2026-08-02 19:53:30,293 127.0.0.1 - - [02/Aug/2026 19:53:30] "GET /api/fleet HTTP/1.1" 200 - +2026-08-02 19:53:30,772 127.0.0.1 - - [02/Aug/2026 19:53:30] "GET /api/state HTTP/1.1" 200 - +2026-08-02 19:53:30,877 127.0.0.1 - - [02/Aug/2026 19:53:30] "GET /api/state HTTP/1.1" 200 - +2026-08-02 19:53:45,003 127.0.0.1 - - [02/Aug/2026 19:53:44] "GET /fleet HTTP/1.1" 200 - +2026-08-02 19:53:45,178 127.0.0.1 - - [02/Aug/2026 19:53:45] "GET /api/fleet HTTP/1.1" 200 - +2026-08-02 19:53:45,190 127.0.0.1 - - [02/Aug/2026 19:53:45] "GET /api/fleet HTTP/1.1" 200 - +2026-08-02 19:53:45,714 127.0.0.1 - - [02/Aug/2026 19:53:45] "GET /api/state HTTP/1.1" 200 - +2026-08-02 19:53:46,990 POST YES x1 KXXRP15M-26AUG022300-00 @ 50¢ — ⚠ RSI 0 extreme oversold → fade UP +2026-08-02 19:54:00,025 127.0.0.1 - - [02/Aug/2026 19:54:00] "GET /fleet HTTP/1.1" 200 - +2026-08-02 19:54:00,151 127.0.0.1 - - [02/Aug/2026 19:54:00] "GET /api/fleet HTTP/1.1" 200 - +2026-08-02 19:54:00,681 127.0.0.1 - - [02/Aug/2026 19:54:00] "GET /api/state HTTP/1.1" 200 - +2026-08-02 19:54:00,960 POST YES x1 KXETH15M-26AUG022300-00 @ 50¢ — ⚠ RSI 1 extreme oversold → fade UP +2026-08-02 19:54:14,045 POST YES x1 KXBTC15M-26AUG022300-00 @ 50¢ — ⚠ RSI 0 extreme oversold → fade UP +2026-08-02 19:54:15,049 127.0.0.1 - - [02/Aug/2026 19:54:15] "GET /fleet HTTP/1.1" 200 - +2026-08-02 19:54:15,171 127.0.0.1 - - [02/Aug/2026 19:54:15] "GET /api/fleet HTTP/1.1" 200 - +2026-08-02 19:54:15,176 127.0.0.1 - - [02/Aug/2026 19:54:15] "GET /api/fleet HTTP/1.1" 200 - +2026-08-02 19:54:15,676 127.0.0.1 - - [02/Aug/2026 19:54:15] "GET /api/state HTTP/1.1" 200 - +2026-08-02 19:54:30,067 127.0.0.1 - - [02/Aug/2026 19:54:30] "GET /fleet HTTP/1.1" 200 - +2026-08-02 19:54:30,185 127.0.0.1 - - [02/Aug/2026 19:54:30] "GET /api/fleet HTTP/1.1" 200 - +2026-08-02 19:54:30,684 127.0.0.1 - - [02/Aug/2026 19:54:30] "GET /api/state HTTP/1.1" 200 - +2026-08-02 19:58:03,216 POST YES x1 KXDOGE15M-26AUG022300-00 @ 50¢ — ⚠ RSI 0 extreme oversold → fade UP +2026-08-02 19:58:22,247 POST NO x1 KXSOL15M-26AUG022300-00 @ 50¢ — DOWN: DOWN spike 0.10% conf=0.65 [RSI 25 oversold, sharp down trend, fade the dip] +2026-08-02 19:58:29,790 127.0.0.1 - - [02/Aug/2026 19:58:29] "GET /api/state HTTP/1.1" 200 - +2026-08-02 19:58:30,141 127.0.0.1 - - [02/Aug/2026 19:58:30] "GET / HTTP/1.1" 200 - +2026-08-02 19:58:30,972 127.0.0.1 - - [02/Aug/2026 19:58:30] "GET /api/state HTTP/1.1" 200 - +2026-08-02 19:58:35,897 127.0.0.1 - - [02/Aug/2026 19:58:35] "GET /api/state HTTP/1.1" 200 - +2026-08-02 19:58:40,749 127.0.0.1 - - [02/Aug/2026 19:58:40] "GET /api/state HTTP/1.1" 200 - +2026-08-02 19:58:45,983 127.0.0.1 - - [02/Aug/2026 19:58:45] "GET /api/state HTTP/1.1" 200 - +2026-08-02 19:58:50,155 skip KXXRP15M-26AUG022300-00: passes: RSI neutral, no clear spike to fade +2026-08-02 19:58:50,837 127.0.0.1 - - [02/Aug/2026 19:58:50] "GET /api/state HTTP/1.1" 200 - +2026-08-02 19:58:54,839 127.0.0.1 - - [02/Aug/2026 19:58:54] "GET / HTTP/1.1" 200 - +2026-08-02 19:58:55,834 127.0.0.1 - - [02/Aug/2026 19:58:55] "GET /api/state HTTP/1.1" 200 - +2026-08-02 19:59:00,536 127.0.0.1 - - [02/Aug/2026 19:59:00] "GET /api/state HTTP/1.1" 200 - +2026-08-02 19:59:05,465 127.0.0.1 - - [02/Aug/2026 19:59:05] "GET /api/state HTTP/1.1" 200 - +2026-08-02 19:59:10,574 127.0.0.1 - - [02/Aug/2026 19:59:10] "GET /api/state HTTP/1.1" 200 - +2026-08-02 19:59:12,476 POST NO x1 KXETH15M-26AUG022300-00 @ 50¢ — DOWN: DOWN spike 0.16% conf=0.65 [RSI oversold + BTC bearish, fade the sharp down move] +2026-08-02 19:59:15,563 127.0.0.1 - - [02/Aug/2026 19:59:15] "GET /api/state HTTP/1.1" 200 - +2026-08-02 19:59:16,460 127.0.0.1 - - [02/Aug/2026 19:59:16] "GET / HTTP/1.1" 200 - +2026-08-02 19:59:17,231 127.0.0.1 - - [02/Aug/2026 19:59:17] "GET /api/state HTTP/1.1" 200 - +2026-08-02 19:59:17,760 127.0.0.1 - - [02/Aug/2026 19:59:17] "GET /fleept HTTP/1.1" 404 - +2026-08-02 19:59:18,167 POST YES x1 KXBTC15M-26AUG022300-00 @ 50¢ — ⚠ RSI 0 extreme oversold → fade UP +2026-08-02 19:59:22,646 127.0.0.1 - - [02/Aug/2026 19:59:22] "GET /fleet HTTP/1.1" 200 - +2026-08-02 19:59:22,961 127.0.0.1 - - [02/Aug/2026 19:59:22] "GET /api/fleet HTTP/1.1" 200 - +2026-08-02 19:59:23,399 127.0.0.1 - - [02/Aug/2026 19:59:23] "GET /api/state HTTP/1.1" 200 - +2026-08-02 19:59:23,428 127.0.0.1 - - [02/Aug/2026 19:59:23] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 - +2026-08-02 19:59:23,447 127.0.0.1 - - [02/Aug/2026 19:59:23] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 - +2026-08-02 19:59:23,457 127.0.0.1 - - [02/Aug/2026 19:59:23] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 - +2026-08-02 19:59:23,466 127.0.0.1 - - [02/Aug/2026 19:59:23] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 - +2026-08-02 19:59:23,476 127.0.0.1 - - [02/Aug/2026 19:59:23] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 - +2026-08-02 19:59:37,853 127.0.0.1 - - [02/Aug/2026 19:59:37] "GET /api/fleet HTTP/1.1" 200 - +2026-08-02 19:59:38,402 127.0.0.1 - - [02/Aug/2026 19:59:38] "GET /api/state HTTP/1.1" 200 - +2026-08-02 19:59:38,425 127.0.0.1 - - [02/Aug/2026 19:59:38] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 - +2026-08-02 19:59:38,444 127.0.0.1 - - [02/Aug/2026 19:59:38] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 - +2026-08-02 19:59:38,453 127.0.0.1 - - [02/Aug/2026 19:59:38] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 - +2026-08-02 19:59:38,464 127.0.0.1 - - [02/Aug/2026 19:59:38] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 - +2026-08-02 19:59:38,473 127.0.0.1 - - [02/Aug/2026 19:59:38] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 - +2026-08-02 19:59:52,895 127.0.0.1 - - [02/Aug/2026 19:59:52] "GET /api/fleet HTTP/1.1" 200 - +2026-08-02 19:59:53,518 127.0.0.1 - - [02/Aug/2026 19:59:53] "GET /api/state HTTP/1.1" 200 - +2026-08-02 19:59:53,545 127.0.0.1 - - [02/Aug/2026 19:59:53] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 - +2026-08-02 19:59:53,561 127.0.0.1 - - [02/Aug/2026 19:59:53] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 - +2026-08-02 19:59:53,576 127.0.0.1 - - [02/Aug/2026 19:59:53] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 - +2026-08-02 19:59:53,585 127.0.0.1 - - [02/Aug/2026 19:59:53] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 - +2026-08-02 19:59:53,596 127.0.0.1 - - [02/Aug/2026 19:59:53] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 - +2026-08-02 20:00:07,883 127.0.0.1 - - [02/Aug/2026 20:00:07] "GET /api/fleet HTTP/1.1" 200 - +2026-08-02 20:00:08,384 127.0.0.1 - - [02/Aug/2026 20:00:08] "GET /api/state HTTP/1.1" 200 - +2026-08-02 20:00:08,426 127.0.0.1 - - [02/Aug/2026 20:00:08] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 - +2026-08-02 20:00:08,453 127.0.0.1 - - [02/Aug/2026 20:00:08] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 - +2026-08-02 20:00:08,471 127.0.0.1 - - [02/Aug/2026 20:00:08] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 - +2026-08-02 20:00:08,490 127.0.0.1 - - [02/Aug/2026 20:00:08] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 - +2026-08-02 20:00:08,499 127.0.0.1 - - [02/Aug/2026 20:00:08] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 - +2026-08-02 20:00:24,386 127.0.0.1 - - [02/Aug/2026 20:00:24] "GET /api/fleet HTTP/1.1" 200 - +2026-08-02 20:00:25,628 127.0.0.1 - - [02/Aug/2026 20:00:25] "GET /api/state HTTP/1.1" 200 - +2026-08-02 20:00:25,694 127.0.0.1 - - [02/Aug/2026 20:00:25] "GET /api/fleet/ticks?coin=btc&mins=60 HTTP/1.1" 200 - +2026-08-02 20:00:25,718 127.0.0.1 - - [02/Aug/2026 20:00:25] "GET /api/fleet/ticks?coin=doge&mins=60 HTTP/1.1" 200 - +2026-08-02 20:00:25,828 127.0.0.1 - - [02/Aug/2026 20:00:25] "GET /api/fleet/ticks?coin=eth&mins=60 HTTP/1.1" 200 - +2026-08-02 20:00:25,843 127.0.0.1 - - [02/Aug/2026 20:00:25] "GET /api/fleet/ticks?coin=sol&mins=60 HTTP/1.1" 200 - +2026-08-02 20:00:25,867 127.0.0.1 - - [02/Aug/2026 20:00:25] "GET /api/fleet/ticks?coin=xrp&mins=60 HTTP/1.1" 200 - +2026-08-02 20:00:32,477 127.0.0.1 - - [02/Aug/2026 20:00:32] "GET /fleet HTTP/1.1" 200 - +2026-08-02 20:03:01,378 POST NO x1 KXDOGE15M-26AUG022315-15 @ 50¢ — DOWN: DOWN spike 0.07% conf=0.65 [RSI(5m)=28 oversold, 15m momentum down] +2026-08-02 20:03:21,785 POST NO x1 KXSOL15M-26AUG022315-15 @ 50¢ — ⚠ RSI 100 extreme overbought → fade DOWN +2026-08-02 20:03:47,237 skip KXXRP15M-26AUG022315-15: passes: Fear regime + choppy market, no clear edge +2026-08-02 20:04:10,746 POST NO x1 KXETH15M-26AUG022315-15 @ 50¢ — DOWN: UP spike 0.02% conf=0.65 [RSI(1m)=73 overbought, fading sharp UP spike] +2026-08-02 20:04:14,890 POST NO x1 KXBTC15M-26AUG022315-15 @ 50¢ — ⚠ RSI 100 extreme overbought → fade DOWN +2026-08-02 20:06:27,737 K4LSH1_OPS online — mode=AUTO dry_run=False stake=10¢ max_spend=100¢ +2026-08-02 20:06:32,449 K4LSH1_OPS online — mode=AUTO dry_run=False stake=10¢ max_spend=100¢ +2026-08-02 20:06:32,449 staggering start by 20s +2026-08-02 20:06:37,430 K4LSH1_OPS online — mode=AUTO dry_run=False stake=10¢ max_spend=100¢ +2026-08-02 20:06:37,431 staggering start by 40s +2026-08-02 20:06:42,382 K4LSH1_OPS online — mode=AUTO dry_run=False stake=10¢ max_spend=100¢ +2026-08-02 20:06:42,383 staggering start by 60s +2026-08-02 20:06:47,862 K4LSH1_OPS online — mode=AUTO dry_run=False stake=10¢ max_spend=100¢ +2026-08-02 20:06:47,864 staggering start by 80s +2026-08-02 20:06:52,051 skip KXDOGE15M-26AUG022315-15: passes: Choppy regime, no clear edge +2026-08-02 20:07:13,661 skip KXSOL15M-26AUG022315-15: passes: RSI neutral, no clear spike to fade +2026-08-02 20:07:54,193 POST NO x1 KXETH15M-26AUG022315-15 @ 50¢ — DOWN: DOWN spike 0.11% conf=0.65 [Sharp 2h downtrend + RSI(35) neutral, fading short-term dip ] +2026-08-02 20:07:54,850 POST YES x1 KXXRP15M-26AUG022315-15 @ 50¢ — ⚠ RSI 4 extreme oversold → fade UP +2026-08-02 20:08:27,463 POST YES x1 KXBTC15M-26AUG022315-15 @ 50¢ — ⚠ RSI 0 extreme oversold → fade UP +2026-08-02 20:10:05,986 127.0.0.1 - - [02/Aug/2026 20:10:05] "GET /api/fleet HTTP/1.1" 200 - diff --git a/bot.py b/bot.py index 29fcf8b..f0a66fe 100644 --- a/bot.py +++ b/bot.py @@ -97,6 +97,15 @@ class Kalshi: "post_only": False, "reduce_only": False} if dry: return {"simulated": True, "order": body} return self.req("POST", "/portfolio/events/orders", json=body) + def cancel_order(self, order_id, dry=False): + """Cancel an open order by ID.""" + if dry: return {"simulated": True, "cancelled": order_id} + return self.req("DELETE", f"/portfolio/events/orders/{order_id}") + def amend_order(self, order_id, new_price_cents, dry=False): + """Amend an existing order's price.""" + body = {"price": f"{new_price_cents/100:.4f}"} + if dry: return {"simulated": True, "amended": order_id} + return self.req("POST", f"/portfolio/events/orders/{order_id}/amend", json=body) # ───────── btc price feed ───────── def btc_price(coin="BTC"): @@ -575,6 +584,27 @@ def run(): try: resolve_bets(kx, conn) adapt_controls(conn, cfg) + # cancel stale unfilled orders close to market expiration + try: + open_orders = conn.execute( + "SELECT id, ticker, order_id, side, price_cents FROM orders WHERE status IN ('placed','posted') AND dry=0" + ).fetchall() + for oid, ticker, koid, side, px in open_orders: + try: + m = kx.req("GET", f"/markets/{ticker}") + ct = m.get("close_time","") + if ct: + close_ts = datetime.fromisoformat(ct.replace("Z","+00:00")).timestamp() + mins_left = (close_ts - time.time())/60 + if mins_left < 1.5: + kx.cancel_order(koid, cfg.get("dry_run", False)) + conn.execute("UPDATE orders SET status='cancelled' WHERE id=?", (oid,)) + conn.commit() + log_event(conn, "info", f"CANCEL stale {ticker} {side}@{px}¢ (mins_left={mins_left:.1f})") + except Exception: + pass + except Exception: + pass p = btc_price(cfg.get("coin", "BTC")) if p: conn.execute("INSERT INTO ticks VALUES (?,?)", (time.time(), p)) diff --git a/btc.db b/btc.db index 1cbd88a5169701ff1b2b24ab4261a03e2aa9062e..4e3c80c0baf5d00fe5e995271a9c257ecf6d4edf 100644 GIT binary patch literal 151552 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�gP)tCTVs@Mfn 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 E0GWD%RR910 delta 135 zcmZozz}c{Xd4d!ha}oms1MfryJ0|9&jR{Nm1z7lB07V#h`G4_$;eW^fVzWrYb^gh( z""" FLEET_HTML = r"""K4LSH1 FLEET - -

K4LSH1_FLEET

+

K4LSH1_FLEET

+
""" @@ -390,6 +466,23 @@ def fleet_api(): return jsonify(result) +@app.route("/api/fleet/ticks") +def fleet_ticks(): + """Price tick history for sparkline charts.""" + coin = request.args.get("coin", "doge").lower() + mins = int(request.args.get("mins", 60)) + fpath = HOME / f"{coin}.json" + if not fpath.exists(): return jsonify({"prices": []}) + c = json.loads(fpath.read_text()) + db_path = HOME / c.get("db_path", f"{coin}.db") + if not db_path.exists(): return jsonify({"prices": []}) + conn = sqlite3.connect(str(db_path)) + rows = conn.execute("SELECT ts, price FROM ticks WHERE ts > ? ORDER BY ts", + (time.time() - mins*60,)).fetchall() + conn.close() + return jsonify({"prices": [r[1] for r in rows], "times": [r[0] for r in rows]}) + + @app.route("/fleet") def fleet_page(): return FLEET_HTML diff --git a/doge.db b/doge.db index e1d572198c8f48809f15fff94c0495eb7ef50d0f..182c3fd4180eca56d9f7d077ba52f39d64b9fc17 100644 GIT binary patch delta 10884 zcmeI&c~}!yzX$L$AOsPJIDm)(0R)s1O+pd~q5%OFS1KUl@@iH@R>8F{16Hjhb&Yi? zr!DTaR%^h$+FGlvwOVamT5;{-eoLil6*umgoHLy0+xOo4KKGCN&!x|k$A0q5Z_b?A zzB5T>ZJWwUx1~Yu?r8u3zh#m>F79de@f*YeBJp`7po6$k{6u_9{EPU3_>%a1eNg)Y z;uz$b)Qry?V`;qSv->CZboLg$#Q2oR?N7xfj|o$eVEuWsD|6K}A7n zNkz0bdN0U*r%jX`(V^|~wrY6XrAeVEE7BQE#!;R4)+}ue8c)uXz1*5}^p?q_GT97Mg+ifMC1~{OIH_Ex z*GQE{g;J_fqa~Qs3Z=%N(dm_OYSKLL)#kO2&bq(c{N>&{nZlql$P%O`mD(UxCKwZ> zIvJFn)p0V^+iX%xbqVNS zCb2*e($wbB-@Y1+N4G?&y-i)zTg|it-G@mMd8gxpzMlLg<|24|wsGUkCO^AC{HO#%NBEs#HpyRH-z`rFw%}BQ>hbI;FvE)+h|Z_Ge%1 z7R9a(m7iL><_ z8N?`TlX8OFS9y0s1#{i_f}EDya@z;FVI^^nU0RYXQOORkll)S-LXtKtcW9y{CsR^U zR#0e?$a=`skrG2`iMh9|hgu~WJv=L;o2s~b?|8MObgHRbUpgg!!sJ+qS!XOL$(K}2 z(3O|9etK+vG(RQ{zevwCW)K=vgqvgUvGvT3^NAvF@;k%tn_hV{vh~gK*S|2o@@Ci8 zH>23PYV_u4p9r3UQ_!9j{%%~Jt#Z_0aejDfS!lx5OjI_i{&AM87eAqF_qy?nMC4-u zDIO1i&1-33<#mdGWT>mErY$sunOD0PZr82(950MXw(-wDzXOLsUu4 zNQ1D(j$V-9q;0T9E$TCas#_yg$x&%%C;bU)(2bwwIq6}n{;@IBk#b~lZXaXzz8iT+ zYrnrawtLoY0Nhq$^$1@!!AUEzx{Q0{2GVB-=G5LpwG$oM{A^_@(Axic+^Ndm4{0{m zzmCls?WBFMHo0-V*K6&MT`taAj@H?&8|J$`?}RyN2dvj8rpuAu(YI~80)RHpuwI1| zlb!Si)(e+^JnN*Vv7Qz0IO3%Hk#Y?+&EIL~UUK3MxcJz#7ss7+G1kKeqnsO0$9mx5 z!DgpgJ=Q&)5^p-`V667xlcpj)pUnC%0DxBeOa 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 J{c=f&?0-=i@s0oh diff --git a/eth.db b/eth.db index a6de89ad0357de52dd6758b7541895732bdd7749..cb585872b21ad62f29060a1ace3ee4fbb382dad0 100644 GIT binary patch delta 10458 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 USG7C^KTN}j>MN@3?1yRo2T3J^?f?J) delta 3501 zcmYk<3se->835qfnc1CPWFIn!26;CsqzR%RBF~ZcON>M+LAp>i_@d%7iVDk)AVjf% zn-E1tjTlXcawJP4T2TT`Oe|KbX`q;-+K7*emL&4h)YE_G{$$;A*mL;y=gz(VfB$=z zl6JP_CR6RIV!bGe(${!J(yUi=?oquHtG@?AjnhBTKhodRKi2=z>SE~9d-w~Iv7-t; zaV(n&?+&FZc-QXCfp?9#`eUyF&xr=Dg7H)=dt>R!4J!-QY;e=UX9fqOg%iA+&A|>< zWAYKD&W7&n5T*ZApRf0^=w1zKHn*^+hggMfoR!V}pQoRLj@n4qQJQC(dzx#SbDCqC zYRy*7GEJH$MB}4zR1c|dsxPTq)CVnf)uASJg?ha@TOF?sP`j#G?h)6+b#N!RTCRj! z#VzC_IbY66^^59`>ZZs~Zsx7J|s#I05%1h;-e60Ll`K9t>WxaBza;-8;8LRYH zPEyirKl=^a&Ni}dv&HNRHk}P;r?Lj-33HqI8`H`hVJew7nOr8B31Y^1FlzcI`dj)7 z`jo}X>}3fs8^(UDk>(+Vi5HhK95=W3z>{|iC$$MuctVr&)?2)|6tyOJryxkPQJ0|Z z))plTQt*Q^kJfZv`~zy~)tp;)%|$Kllqx_2Z7*KTLEW-;#YI61nc+LwQI*Y$M&$Kz zWln+=0aHk5;>F*i=1;9UB}mb-TJvfW6(-wI^YBwHCt{Ky&4J2M6fdTtDsnEn2~uRY zL&VynyqH3C^l8DGM7t)V4i^3#1Pae|-o}ebsQ<0_WR_hMQSVpZN)SxH1}7l@@Ls%!P(KL%whA%~sch)x z#c+l**>=q6k(lj$5RAnN!{GWw#oJ*LSnp8O+NIt1A(>e2IjGee-+CWntFnCuJ9#k# zbyw*F*hh0=zP>}eI2*OJ{GI$Ug>4&*TwF489fq*w-IEt*p>Fxm@DSGA1+UAz7=*h1 zLgisWih`$gRPkaUYW_9;HpF7-W}@cxo`n32=?v7|9~JJfWD`Cv0C_Q`{TdRKXM6GD zbkq#z#ZT?(k2>GobC)26VSZjgO`4{M>WAXEFQdjpctDxMaopdcMx>iEqF^0ZkC%{V zuQV1yf^7Yp$cuic{xN4SK=0t*_C@ubccupvlIGFMi_=hjj8{@Xv8|_~x~*UuU|gKA z+NP%710$>4W1vdWcrtJ#cx2ghrzE?oP>qpqz)lgc8I`D+3)aR!Ca@eVYI>vNbe$*{Qy^~Jl@n*=E}FVAGFvw1tR=S0R^kmiv-FmFSBA@1QGyKY70 zR}N;u5cs%4RPDYy&VrO8S6^%1!f-V7*9g}(`a1U-MKK%Y6M95(&kDON6((hB=ms{* zVZ*<;oS7_#rO9E#L$j)2mTB@nfT$3n1I8YBaGLyJP#>cIDcf=WIdvp@yQMSJuJjPm z?{AeZ2W@~Vn$}SieUtD%_4QUkN|#dwdWq=uIft$Y(jqz8pe;l%XFe=?P7e~jSP&+{ z2skymg6L;;QP67hDgSWooN7xM){GX2Wggg?34XAq=Uam{o*(Np8Qz5^YbL;%so z*>Bzvqy@Ia%mD^=C39L z!0N_=JBaSlc|)Hpl6NjeDNYbA_m76l<#%!eg4Pl>8{^UiDPv4ah;G{v`ZFlzN3n{d zO|U(NH+}eQHt1uK;K@-hb`m`QY?k2ce`az-phvzq{_uA7)eM5qi9*+-tPTPsb2IlR5P8*3v zR_)veDxdx^@Y_T~dWHuC={5Pl0xc#QI3Xwuav+}-6lJ1T5Pl_FTn($kO+uv;oz}3f z7ly!fP~k+q@1Jgjl#e}bDp9u?#{*&DvBw#Rx@=prMUZ%L3Te<$mrcE+f)tMz)r)v| zj2epi;EPED9zVaqV2ASQHv}n(95kX2D!V^vF2ve)T?8+BW9L6RQ4S3li+7zD>PY+M zE;tWt--4WZ(G&HjuFZbX5l}QZe|XUYx&Q0Re?c1Y8g@s$b3baPUENS`4qt`3laAoU z$*4D2zYU-`f-CAj425tqrs0+S0_qj7+K=G-&wLD?g#1-tDXb$Eua1eRopVw_Q{+PM zq6=zUU|T=L%H6|@6HreltiA+_C%iLibLNe1K}yDPc~sL!t2*K8NXA>u3Hg1~5%~6) zf{7oGdZ;`b4&p?NHK6XVt1qz^Nsnqd`4INVSm|`Ads-JmU!>xawfOyKq`Xst%@>E) zj3Wk{yM{JHo$JoJ`b#9g~s^j7R3lGcIfpcnlfbOOLLN{3>Yd+YhGm?V|Cq~tl(^a zzd@B{;SS%m*H8t9UrjT(OT5MgZV#Otz@GB diff --git a/sol.db b/sol.db index b892fe0e1622b6840f2116cc931dc3f416235816..45ee942229b598ec483c2c7b2c0f0a5a64e338b1 100644 GIT binary patch delta 12020 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 Oj`07+mo4abE&dz5x5se+ delta 3631 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 On_KDG6z-WY`hNh#?*AqL delta 112 zcmZp8z}(QlG(n1up@o5gfn%bA9TP*##)Jj@?7TpJE$jZt>