diff --git a/src/main/kotlin/network/KisTradeService.kt b/src/main/kotlin/network/KisTradeService.kt index 97e29f1..5a20b96 100644 --- a/src/main/kotlin/network/KisTradeService.kt +++ b/src/main/kotlin/network/KisTradeService.kt @@ -610,8 +610,8 @@ object KisTradeService { println("๐Ÿ“ก [Step $pageCount] ์š”์ฒญ ์ „์†ก ์ค‘... (tr_cont: $trCont)") val response = client.get("$baseUrl/uapi/domestic-stock/v1/trading/inquire-balance") { header("authorization", "Bearer ${config.tradeToken}") - header("appkey", if (config.isSimulation) config.vtsAppKey else config.realAppKey) - header("appsecret", if (config.isSimulation) config.vtsSecretKey else config.realSecretKey) + header("appkey", config.realAppKey) + header("appsecret", config.realSecretKey) header("tr_id", trId) header("tr_cont", trCont) @@ -654,7 +654,7 @@ object KisTradeService { pageCount++ trCont = "N" println("โณ [์—ฐ์† ์กฐํšŒ] 250ms ๋Œ€๊ธฐ ํ›„ ๋‹ค์Œ ํŽ˜์ด์ง€ ์š”์ฒญ...") - delay(400) // API ๊ณผ๋ถ€ํ•˜ ๋ฐฉ์ง€ + delay(500) // API ๊ณผ๋ถ€ํ•˜ ๋ฐฉ์ง€ } } while (trCont == "N") diff --git a/src/main/kotlin/service/AutoTradingManager.kt b/src/main/kotlin/service/AutoTradingManager.kt index 6110780..c794beb 100644 --- a/src/main/kotlin/service/AutoTradingManager.kt +++ b/src/main/kotlin/service/AutoTradingManager.kt @@ -848,16 +848,27 @@ object AutoTradingManager { return batch } var currentBalance : UnifiedBalance? = null + private var lastFetchTime: Long = 0L // ๋งˆ์ง€๋ง‰ ์„ฑ๊ณต ์‹œ๊ฐ„ (Millisecond) + private val FETCH_INTERVAL = 30 * 60 * 1000 // 30๋ถ„์„ ๋ฐ€๋ฆฌ์ดˆ๋กœ ํ™˜์‚ฐ (1800000 ms) - suspend fun checkBalance(isMorning: Boolean = true) { - if (isMorning) { + suspend fun checkBalance() { + val currentTime = System.currentTimeMillis() + if (currentBalance == null || (currentTime - lastFetchTime) > FETCH_INTERVAL) { KisTradeService.fetchIntegratedBalance().getOrNull()?.let { currentBalance = it + lastFetchTime = currentTime // ํ˜ธ์ถœ ์„ฑ๊ณต ์‹œ ํ˜„์žฌ ์‹œ๊ฐ„์œผ๋กœ ๊ฐฑ์‹  + println("์ž”๊ณ  ๋™๊ธฐํ™” ์™„๋ฃŒ") + } ?: run { + println("์ž”๊ณ  ์กฐํšŒ ์‹คํŒจ (๋„คํŠธ์›Œํฌ ์˜ค๋ฅ˜ ๋“ฑ)") } - if (KisSession.config.take_profit) currentBalance?.let { resumePendingSellOrders(KisTradeService, it) } - if (KisSession.tradeConfig.auto_cancel_pending_buy) { checkAndCancelPendingBuyOrders() } + } else { + // 30๋ถ„์ด ์ง€๋‚˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๊ธฐ์กด์— ์ €์žฅ๋œ currentBalance๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ + println("30๋ถ„์ด ์ง€๋‚˜์ง€ ์•Š์•„ ๊ธฐ์กด ์ž”๊ณ  ๋ฐ์ดํ„ฐ ์œ ์ง€ (๋‚จ์€ ์‹œ๊ฐ„: ${(FETCH_INTERVAL - (currentTime - lastFetchTime)) / 1000}์ดˆ)") } + if (KisSession.config.take_profit) currentBalance?.let { resumePendingSellOrders(KisTradeService, it) } + if (KisSession.tradeConfig.auto_cancel_pending_buy) { checkAndCancelPendingBuyOrders() } + } suspend fun checkAndCancelPendingBuyOrders(