Files
atrade/src/main/kotlin/model/TradeModels.kt
T

103 lines
2.8 KiB
Kotlin
Raw Normal View History

2026-01-10 18:16:50 +09:00
package model
2026-04-16 15:48:23 +09:00
import analyzer.ScalpingSignalModel
import analyzer.TechnicalAnalyzer
2026-01-10 18:16:50 +09:00
import kotlinx.serialization.Serializable
2026-04-16 15:48:23 +09:00
import service.InvestmentGrade
2026-01-10 18:16:50 +09:00
@Serializable
data class RealTimeTrade(
2026-02-12 15:31:34 +09:00
val code: String,
2026-01-10 18:16:50 +09:00
val time: String, // 체결 시간 (HH:mm:ss)
val price: String, // 체결가
val change: String, // 전일 대비 (대비 기호 포함)
val volume: String, // 체결량
val type: TradeType // 매수체결(빨강) / 매도체결(파랑)
)
2026-04-16 15:48:23 +09:00
enum class TradeType { BUY, SELL, NEUTRAL }
@Serializable
class TradingDecision {
var corpName : String = ""
var stockName : String = ""
var ultraShortScore: Double = 0.0 // 초단기 (분봉/에너지)
var shortTermScore: Double = 0.0 // 단기 (일봉/뉴스)
var midTermScore: Double = 0.0 // 중기 (주봉/재무)
var longTermScore: Double = 0.0
// [추가] 화면 전환용 종목명
var currentPrice: Double = 0.0
var stockCode: String = ""
var decision: String? = null
var reason: String? = null
var confidence: Double = 0.0
var newsScore : Double = 0.0
var systemScore : Double = 0.0
var financialScore : Double = 0.0
var technicalScore : Double = 0.0
var investmentGrade : InvestmentGrade? = null
var techSummary : String? = null
var newsContext : String? = null
var financialData : String? = null
var analyzer : TechnicalAnalyzer? = null
var signalModel : ScalpingSignalModel? = null
fun shortPossible() =
listOf<Double>(ultraShortScore,
shortTermScore).average()
fun profitPossible() =
listOf<Double>(ultraShortScore,
shortTermScore,
midTermScore,
longTermScore).average()
fun safePossible() =
listOf<Double>(
midTermScore,
longTermScore).average()
fun summary() : String{
return """
$corpName[$stockName]
수익실현 가능성 : ${profitPossible()}
investmentGrade:${investmentGrade!!.name}
ultraShortScore :$ultraShortScore
shortTermScore :$shortTermScore
midTermScore :$midTermScore
longTermScore :$longTermScore
systemScore :$systemScore
technicalScore: $technicalScore
financialScore: $financialScore
newsScore: $newsScore
decision: $decision
reason: $reason
""".trimIndent()
}
override fun toString(): String {
return """
$corpName($stockName)
수익실현 가능성 : ${profitPossible()}
ultraShortScore :$ultraShortScore
shortTermScore :$shortTermScore
midTermScore :$midTermScore
longTermScore :$longTermScore
decision: $decision
investmentGrade:${investmentGrade!!.name}
reason: $reason
confidence: $confidence
기술 분석: $techSummary
뉴스 점수: $newsScore
""".trimIndent()
}
}
//재무재표: $financialData
//뉴스: $newsContext