From aa4f8daadf18ca9c3b328da410ac6846645132e6 Mon Sep 17 00:00:00 2001 From: lunaticbum Date: Thu, 4 Jun 2026 10:42:54 +0900 Subject: [PATCH] ... --- src/main/kotlin/service/AutoTradingManager.kt | 18 +++++++++++------- src/main/kotlin/util/MarketUtil.kt | 2 +- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/service/AutoTradingManager.kt b/src/main/kotlin/service/AutoTradingManager.kt index 5a19b3d..6110780 100644 --- a/src/main/kotlin/service/AutoTradingManager.kt +++ b/src/main/kotlin/service/AutoTradingManager.kt @@ -238,13 +238,16 @@ object AutoTradingManager { var tax = KisSession.config.getValues(ConfigIndex.TAX_INDEX) val effectiveProfitRate = (profitRate1 ?: KisSession.config.getValues(ConfigIndex.PROFIT_INDEX)) + tax - var oldTarget = currentBalance?.getHoldings()?.filter { it.code.equals(decision.stockCode) }?.first() - if (hasCode && oldTarget != null) { - var avgPrive = oldTarget.avgPrice.toDouble() - var qty = oldTarget.quantity.toDouble() - basePrice = ((avgPrive * qty) + (decision.currentPrice * orderQty.toInt())).div(qty!!.toInt() + (orderQty.toInt())) - println("물타기 ${avgPrive}, ${qty} ${basePrice}") - } + try { + var oldTarget = currentBalance?.getHoldings()?.first { it.availOrderCount.toInt() > 0 && it.code.equals(decision.stockCode) } + if (hasCode && oldTarget != null) { + var avgPrive = oldTarget.avgPrice.toDouble() + var qty = oldTarget.quantity.toDouble() + basePrice = ((avgPrive * qty) + (decision.currentPrice * orderQty.toInt())).div(qty!!.toInt() + (orderQty.toInt())) + println("물타기 ${avgPrive}, ${qty} ${basePrice}") + } + } catch (e:Exception) {e.printStackTrace()} + val calculatedTarget = MarketUtil.roundToTickSize(basePrice * (1 + effectiveProfitRate / 100.0)) @@ -326,6 +329,7 @@ object AutoTradingManager { var onExecutionReceived : ((String, String, String, String, Boolean) -> Unit)? = {code, qty, price,orderNo, isBuy -> scope.launch { val exec = ExecutionData(orderNo, code, price, qty, isBuy) + println("exec >> ${exec}") executionCache[orderNo] = exec syncAndExecute(orderNo) } diff --git a/src/main/kotlin/util/MarketUtil.kt b/src/main/kotlin/util/MarketUtil.kt index 4b43d6a..83ceee7 100644 --- a/src/main/kotlin/util/MarketUtil.kt +++ b/src/main/kotlin/util/MarketUtil.kt @@ -33,7 +33,7 @@ object MarketUtil { holiDays.put(todayStr, isHoliday) println("🌐 [API Call] 오늘($todayStr)의 휴장 여부를 새로 조회하여 DB에 저장했습니다.") - !isHoliday + isHoliday } catch (e: Exception) { e.printStackTrace() false