This commit is contained in:
lunaticbum 2026-06-19 14:40:46 +09:00
parent ce07537eef
commit fd8283c507

View File

@ -855,19 +855,8 @@ object AutoTradingManager {
}
var loadedTops = mutableListOf<Pair<String, String>>()
var defaultStockCount = 30
fun poll100Stocks(): List<Pair<String, String>> {
loadedTops.shuffle()
val count = minOf(loadedTops.size, defaultStockCount)
if (count == 0) return emptyList()
// 앞의 100개를 복사
val batch = loadedTops.subList(0, count).toList()
// 원본에서 삭제 (이 작업이 큐의 pop/remove 역할을 합니다)
loadedTops.subList(0, count).clear()
return batch
}
var currentBalance : UnifiedBalance? = null
private var lastFetchTime: Long = 0L // 마지막 성공 시간 (Millisecond)
private val FETCH_INTERVAL = 2 * 60 * 1000 // 30분을 밀리초로 환산 (1800000 ms)
@ -963,11 +952,14 @@ object AutoTradingManager {
if (remainingCandidates.isEmpty()) {
if (loadedTops.size < defaultStockCount) {
loadedTops.addAll(StockUniverseLoader.loadUniverse())
loadedTops.shuffle()
println("✅ 총 ${loadedTops.size}개의 종목이 로드되있음.")
}
poll100Stocks().forEach { (code, name) ->
addToReanalysis(RankingStock(mksc_shrn_iscd = code, hts_kor_isnm = name))
loadedTops.shuffle()
val count = minOf(loadedTops.size, defaultStockCount)
for (i in 0 ..< count) {
loadedTops.removeFirst().let {
addToReanalysis(RankingStock(mksc_shrn_iscd = it.first, hts_kor_isnm = it.second))
}
}
val candidates: MutableList<RankingStock> = fetchCandidates(KisTradeService).apply {
@ -989,7 +981,6 @@ object AutoTradingManager {
}
}
.filter { !it.name.contains("호스팩", true) }
.sortedBy { (it.prdy_ctrt.toDoubleOrNull() ?: 0.0) }
.toMutableList()
if (reanalysisList.isNotEmpty()) {
@ -1022,8 +1013,8 @@ object AutoTradingManager {
it.code !in executionCache.values.map { it.code } &&
it.code !in failList &&
it.code !in isSafetyBeltStockCodes
}
.distinctBy { it.code })
}.distinctBy { it.code })
remainingCandidates.shuffle()
} else {
println("미확인 데이터 ${remainingCandidates.size}")
}