From 035017faff91670c3d20b06ffbdfe0398a86e6b8 Mon Sep 17 00:00:00 2001 From: mindesbunister Date: Tue, 29 Jul 2025 18:45:15 +0200 Subject: [PATCH] fix: improve entry price extraction for AI decisions and trade execution logging --- lib/simple-automation.js | 30 +++++++++++++++++++++++++++--- prisma/prisma/dev.db | Bin 16211968 -> 16240640 bytes 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/lib/simple-automation.js b/lib/simple-automation.js index c9877fe..0d382ee 100644 --- a/lib/simple-automation.js +++ b/lib/simple-automation.js @@ -978,6 +978,19 @@ class SimpleAutomation { // Log the successful trade for live analysis panel try { const baseUrl = process.env.INTERNAL_API_URL || 'http://localhost:3000'; + + // Use actual execution data from the trade result + let actualEntryPrice = 0; + if (result.executionPrice) { + actualEntryPrice = result.executionPrice; + } else if (result.price) { + actualEntryPrice = result.price; + } else if (analysis.entry?.price) { + actualEntryPrice = analysis.entry.price; + } else if (analysis.currentPrice) { + actualEntryPrice = analysis.currentPrice; + } + await fetch(`${baseUrl}/api/automation/live-decisions`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, @@ -988,7 +1001,7 @@ class SimpleAutomation { blocked: false, executed: true, confidence: analysis.confidence || 0, - entryPrice: analysis.entry?.price || analysis.currentPrice || 0, + entryPrice: actualEntryPrice, stopLoss: stopLoss, takeProfit: takeProfit, leverage: optimalLeverage, @@ -1252,6 +1265,17 @@ class SimpleAutomation { // 📊 ALSO LOG TO LIVE DECISIONS API FOR DASHBOARD VISIBILITY try { const baseUrl = process.env.INTERNAL_API_URL || 'http://localhost:3000'; + + // Extract better entry price from analysis + let entryPrice = 0; + if (analysis.entry?.price) { + entryPrice = analysis.entry.price; + } else if (analysis.currentPrice) { + entryPrice = analysis.currentPrice; + } else if (analysis.entry && typeof analysis.entry === 'number') { + entryPrice = analysis.entry; + } + await fetch(`${baseUrl}/api/automation/live-decisions`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, @@ -1262,7 +1286,7 @@ class SimpleAutomation { blocked: !decisionContext.willExecute, executed: decisionContext.willExecute, confidence: decisionData.confidence, - entryPrice: decisionData.aiLevels.entry || 0, + entryPrice: entryPrice, stopLoss: decisionData.aiLevels.stopLoss, takeProfit: decisionData.aiLevels.takeProfit, reasoning: decisionData.reasoning, @@ -1271,7 +1295,7 @@ class SimpleAutomation { learningDecisionId: decisionId }) }); - console.log(`📊 AI Decision logged to live-decisions API: ${decisionData.decision}`); + console.log(`📊 AI Decision logged to live-decisions API: ${decisionData.decision} with entry: $${entryPrice}`); } catch (apiError) { console.warn('⚠️ Failed to log decision to live-decisions API:', apiError.message); } diff --git a/prisma/prisma/dev.db b/prisma/prisma/dev.db index f5be870640188183369791c26f76290dec3f4e64..8dabb7a777fb7c26f62682ed278f4799a1531070 100644 GIT binary patch delta 7375 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 Y5hDdwR_@tLbIG9v(P>GN@o7o_1W>t75C8xG delta 1785 zcmXBUX;hU(7zgloyWEZLWycM>xPgd;iYy{oLTcs$YKxjO1+oanH5JiFP#Q0}0;La{ z3trdK5-EJOT#yt+QCg%lQB%uM(|GN|{g7#Y^}}z@%sKP?&&-_jOi|@keNpXYeQ8%+ zupn6T%51~L;KhtHku!-inKOkm9cLb#={YlSX5`GonVB^%KXI(k###s<&-8p-fGaF~Yob}+WCuhAl>&;mo&O$f~<*YAf zVVw2jES$6coIS_c^PEL+Hh{B%oDHgBk=r)QQze!3m5~XQR2ex>w@R8J4ONd1*!pkrMM#3m~1xCZGFb2lLI2aE}kPH)GB20qU;B|Nd-h|081*XDVFb$?d3NUyZ z-hos|gBg$x8ITECFcY#N2WG*$kPCL04e!Amm<#hD59UKYEP#dZJ`}(Qum}pF2o}Q< zD25M#!%}cS348?0U^%RSm9Pp{Ln)L&IeZMCz#3Q!1QoCj*2AZ;0XD)W*bJ5G73Y?o zXB9)XkW4zeGnhi{&JtgGGsMa4Qs z2&ZGQ8v`k~daIYtCJ2_>l)T|q0QFDRd}To}(zSHWPra1y9OWSZ{NFPU(XA4}0D{vKlgKKadZou#G2i$}|p%reyZMXw}!Cf`V z^WM2)B}HfusC!#XsiUIw9{jCVl(uCxS!JV;A~XsHm*I@TDIK5{Z84n+rPYc{Iion0 z1xk`(fg#BdBBe|5N{IYWZq`54H|zIEe&QW@k6f%T)=v@Z#C7r%{Q%J}jx-(>y9@2| z0OJUu(HLYTW3GvrVoYAfR&%IXFkLWJnMyo6ncK{#%$4SRbCNE|dcj&{EwM6djMdB1 zYN@qUSSZNm3erp0@KAz4-fM3KQusi(H$BMEx=?1OmQ2?(wTX0Ss@qCyv$Wwh@)N{@C%_Yf62cKC!pC55;Z8kVVr(zGnC zFNHmhXbkG`qRH7>4wdIrAnS zF>B4z5~yjWwvZgvI7y!zEt@vvYH8%GKyht`){h#J-QH4Ex2M5D8MwnaliOR2qJ4R2 zyG7~R7E)(uC#gOUUG(Jachj^6vaN~sQPaa+n`MX2uEBj(XaDEHUJqOv22y3+LF4I%TI!7dNR`Mmv#)f_&@f%M6dt=