This commit is contained in:
lunaticbum 2026-05-26 14:18:41 +09:00
parent 1cca11edc4
commit ef32260bdb
2 changed files with 9 additions and 12 deletions

View File

@ -258,6 +258,9 @@ class TradeConfig {
var noticeGapTime : Int = 60
var lowerAveragePrice : Boolean = false
var lowerAverageStockCount : Int = 1
var lowerAverageMaxRate : Double = 1.0
var lowerAverageMinRate : Double = 40.0
var lowerAverageTargetCount : Int = 2
}

View File

@ -121,7 +121,7 @@ object AutoTradingManager {
val maxBudget = KisSession.config.getValues(ConfigIndex.MAX_BUDGET_INDEX) * gradeRate
TradingLogStore.addLog(decision,"BUY",decision.summary())
var hasCodes = currentBalance?.getHoldings()?.any { it.code.equals(decision.stockCode) && it.quantity.toInt() > 2 && it.isTodayEntry == false}
var hasCodes = currentBalance?.getHoldings()?.any { it.code.equals(decision.stockCode) && it.quantity.toInt() > 2 && !it.isTodayEntry}
if (hasCodes == true) {
buysCodes.add(decision.stockCode)
TradingLogStore.addNotice(decision.stockName,decision.stockCode,"물타기 시도 1주 매수")
@ -380,7 +380,7 @@ object AutoTradingManager {
println("🎊 [매칭 성공] 매도 완료: ${dbItem.name} | 매도가: ${actualSellPrice.toInt()}")
TradingLogStore.addSellLog(dbItem.name,actualSellPrice.toString(),"SELL","매도 완료")
myOredsAndBalanceCodes.remove(dbItem.code)
TradingReportManager.closePositionCycle(dbItem.code) // 사이클 종료 알림
DatabaseFactory.updateStatusAndOrderNo(dbItem.id!!, TradeStatus.COMPLETED)
@ -834,7 +834,7 @@ object AutoTradingManager {
return batch
}
var currentBalance : UnifiedBalance? = null
var myOredsAndBalanceCodes : MutableSet<String> = mutableSetOf()
suspend fun checkBalance(isMorning: Boolean = true) {
if (isMorning) {
currentBalance = KisTradeService.fetchIntegratedBalance().getOrNull()
@ -906,16 +906,10 @@ object AutoTradingManager {
suspend fun executeMarketLoop() {
myOredsAndBalanceCodes.clear()
checkBalance()
val myCash = currentBalance?.deposit?.replace(",", "")?.toLongOrNull() ?: 0L
val myHoldings = currentBalance?.getHoldings()?.map {
myOredsAndBalanceCodes.add(it.code)
it.code }?.toSet() ?: emptySet()
val pendingStocks = DatabaseFactory.findAllMonitoringTrades().map {
myOredsAndBalanceCodes.add(it.code)
it.code
}
val myHoldings = currentBalance?.getHoldings()?.filter { !it.isTodayEntry }?.map { it.code }?.toSet() ?: emptySet()
val pendingStocks = DatabaseFactory.findAllMonitoringTrades().map { it.code }
if (remainingCandidates.isEmpty()) {
if (loadedTops.size < 200) {
@ -948,7 +942,7 @@ object AutoTradingManager {
reanalysisList.clear()
if (KisSession.tradeConfig.lowerAveragePrice) {
currentBalance?.getHoldings()?.map {
if(!it.isTodayEntry && it.quantity.toInt() > 2) {
if(!it.isTodayEntry && it.quantity.toInt() > KisSession.tradeConfig.lowerAverageTargetCount && it.profitRate.toDouble() < (KisSession.tradeConfig.lowerAverageMaxRate * -1) && it.profitRate.toDouble() > (KisSession.tradeConfig.lowerAverageMinRate * -1) ) {
remainingCandidates.add(RankingStock(mksc_shrn_iscd = it.code, hts_kor_isnm = it.name))
}
}