diff --git a/src/main/kotlin/model/ChartModels.kt b/src/main/kotlin/model/ChartModels.kt index ee18566..124134c 100644 --- a/src/main/kotlin/model/ChartModels.kt +++ b/src/main/kotlin/model/ChartModels.kt @@ -38,6 +38,21 @@ cntg_vol : $cntg_vol acml_tr_pbmn : $acml_tr_pbmn """.trimIndent() } + + /** + * 시가 대비 현재가 변동률(%)을 계산하여 반환합니다. + */ + fun getFluctuationRate(): Double { + val openPrice = stck_oprc.toDoubleOrNull() ?: 0.0 + val currentPrice = stck_prpr.toDoubleOrNull() ?: 0.0 + + // 시가가 0이거나 데이터가 없는 경우 0.0 반환 (0으로 나누기 방지) + if (openPrice == 0.0) return 0.0 + + // 변동률 계산 공식: ((현재가 - 시가) / 시가) * 100 + return ((currentPrice - openPrice) / openPrice) * 100 + } + } @Serializable data class OverseasCandleData( diff --git a/src/main/kotlin/service/AutoTradingManager.kt b/src/main/kotlin/service/AutoTradingManager.kt index 2198789..f3a1c0b 100644 --- a/src/main/kotlin/service/AutoTradingManager.kt +++ b/src/main/kotlin/service/AutoTradingManager.kt @@ -968,7 +968,7 @@ object AutoTradingManager { }.filter { val rate = it.prdy_ctrt.toDouble() val corpInfo = DartCodeManager.getCorpCode(it.code) - val isOk = (rate > 0 && rate < KisSession.tradeConfig.plusFilter) || (rate < 0 && rate > (KisSession.tradeConfig.minusFilter * -1)) + val isOk = (rate > 0 && rate < KisSession.tradeConfig.plusFilter) || (rate < 0 && rate > (abs(KisSession.tradeConfig.minusFilter) * -1)) if (corpInfo?.cName.isNullOrEmpty()) { false