This commit is contained in:
2026-02-20 15:21:38 +09:00
parent d5ab55b336
commit 55b82c23af
5 changed files with 101 additions and 80 deletions
+6 -3
View File
@@ -28,6 +28,7 @@ import network.KisTradeService
import service.AutoTradingManager
import util.MarketUtil
import kotlin.math.min
import kotlin.math.roundToInt
enum class InvestmentGrade(
val displayName: String,
@@ -259,7 +260,7 @@ fun IntegratedOrderSection(
basePrice = completeTradingDecision.currentPrice
println("basePrice $basePrice")
val minScore = KisSession.config.getValues(ConfigIndex.MIN_PURCHASE_SCORE_INDEX)
val maxBudget = KisSession.config.getValues(ConfigIndex.MAX_BUDGET_INDEX)
var maxBudget = KisSession.config.getValues(ConfigIndex.MAX_BUDGET_INDEX)
val buyWeight = KisSession.config.getValues(ConfigIndex.BUY_WEIGHT_INDEX)
val baseProfit = KisSession.config.getValues(ConfigIndex.PROFIT_INDEX)
@@ -291,7 +292,9 @@ fun IntegratedOrderSection(
println("🚀 [매수 진행] 토탈 스코어: ${String.format("%.1f", totalScore)} -> 종목: ${completeTradingDecision.stockCode}")
// basePrice(현재가 혹은 지정가)를 기준으로 매수 가능 수량 산출 (최소 1주 보장)
val gradeRate = (1.0 - (investmentGrade.ordinal * 0.1))
val maxQty = (KisSession.config.getValues(ConfigIndex.MAX_COUNT_INDEX) * gradeRate).roundToInt()
maxBudget = maxBudget * gradeRate
val calculatedQty = if (basePrice > 0) {
(maxBudget / basePrice).toInt().coerceAtLeast(1)
} else {
@@ -300,7 +303,7 @@ fun IntegratedOrderSection(
// 5. 매수 실행 (계산된 finalMargin 전달)
excuteTrade(
willEnableAutoSell = true,
orderQty = min(calculatedQty, KisSession.config.getValues(ConfigIndex.MAX_COUNT_INDEX).toInt()).toString(),
orderQty = min(calculatedQty, maxQty).toString(),
profitRate1 = finalMargin,
investmentGrade = investmentGrade,
)