From d804c7061b623dc8ea906ec850e68e2e404ae444 Mon Sep 17 00:00:00 2001 From: lunaticbum Date: Fri, 20 Mar 2026 17:55:27 +0900 Subject: [PATCH] ... --- build.gradle.kts | 10 ++- src/main/kotlin/Main.kt | 42 +++++++++++- src/main/kotlin/database/DatabaseFactory.kt | 21 +++++- src/main/kotlin/network/KisTradeService.kt | 23 +++++++ src/main/kotlin/service/AutoTradingManager.kt | 39 +++++++++++ src/main/kotlin/ui/TradingDecisionLog.kt | 63 ++++++++++++++++-- src/main/kotlin/util/MarketUtil.kt | 33 +++++++++ src/main/resources/neko.png | Bin 0 -> 47539 bytes 8 files changed, 220 insertions(+), 11 deletions(-) create mode 100644 src/main/resources/neko.png diff --git a/build.gradle.kts b/build.gradle.kts index f87ebb8..77818fb 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -68,11 +68,19 @@ compose.desktop { isEnabled.set(false) // 임시로 false 설정 } nativeDistributions { - targetFormats(TargetFormat.Dmg) + targetFormats(TargetFormat.Dmg, TargetFormat.Exe, TargetFormat.Msi) packageName = "AutoTradeAI" + macOS { bundleID = "com.autotrade.ai" } + + // 윈도우 관련 상세 설정 (선택 사항) + windows { + packageVersion = "1.0.0" + shortcut = true // 바탕화면 바로가기 생성 + menu = true // 시작 메뉴 등록 + } } } } diff --git a/src/main/kotlin/Main.kt b/src/main/kotlin/Main.kt index b8c4568..0331d0f 100644 --- a/src/main/kotlin/Main.kt +++ b/src/main/kotlin/Main.kt @@ -14,9 +14,12 @@ import androidx.compose.material.* import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.window.Tray import androidx.compose.ui.window.Window import androidx.compose.ui.window.WindowPlacement import androidx.compose.ui.window.application +import androidx.compose.ui.window.rememberTrayState import androidx.compose.ui.window.rememberWindowState import io.ktor.client.HttpClient import io.ktor.client.engine.cio.CIO @@ -75,14 +78,47 @@ fun getLlamaBinPath(): String { } } fun main() = application { - SystemSleepPreventer.start() + + val trayState = rememberTrayState() + var isWindowOpen by remember { mutableStateOf(true) } // 창의 표시 상태 관리 + + + LaunchedEffect(Unit) { + SystemSleepPreventer.start() + AutoTradingManager.startBackgroundScheduler() + } + LaunchedEffect(AutoTradingManager.shouldShowFullWindow) { + if (AutoTradingManager.shouldShowFullWindow) { + isWindowOpen = true + // 신호를 처리했으므로 다시 초기화 (트레이에서 수동으로 닫았을 때 다시 뜰 수 있게 함) + AutoTradingManager.shouldShowFullWindow = false + } + } + // 트레이 아이콘 설정 + Tray( + state = trayState, + icon = painterResource("neko.png"), // resources 폴더에 아이콘 파일 필요 + tooltip = "KIS AI 자동매매", + onAction = { isWindowOpen = true }, // 트레이 아이콘 더블클릭 시 창 열기 + menu = { + Item("앱 열기", onClick = { isWindowOpen = true }) + Separator() + Item("종료", onClick = { + // 종료 전 리소스 정리 호출 + AutoTradingManager.stopDiscovery() + exitApplication() + }) + } + ) // 앱 실행 시 필요한 바이너리 경로 (실행 파일 위치) val binPath = getLlamaBinPath() val windowState = rememberWindowState( placement = WindowPlacement.Floating ) - Window(onCloseRequest = ::exitApplication, title = "KIS AI 자동매매", state = windowState) { + if (isWindowOpen) { + + Window(onCloseRequest = { isWindowOpen = false }, title = "KIS AI 자동매매", state = windowState) { var currentScreen by remember { mutableStateOf(AppScreen.Settings) } var isLoaded by remember { mutableStateOf(false) } val scope = rememberCoroutineScope() @@ -142,6 +178,7 @@ fun main() = application { AutoTradingManager.onMarketClosed = { println("프로그램 초기화 실행됨") currentScreen = AppScreen.Settings + isWindowOpen = false } SettingsScreen( onAuthSuccess = { @@ -178,4 +215,5 @@ fun main() = application { } } } + } } \ No newline at end of file diff --git a/src/main/kotlin/database/DatabaseFactory.kt b/src/main/kotlin/database/DatabaseFactory.kt index 952cb7e..e6ab279 100644 --- a/src/main/kotlin/database/DatabaseFactory.kt +++ b/src/main/kotlin/database/DatabaseFactory.kt @@ -90,6 +90,12 @@ object TradeLogTable : Table("trade_logs") { override val primaryKey = PrimaryKey(id) } +object HolidayTable : Table("holiday_cache") { + val bassDt = varchar("bass_dt", 8) // YYYYMMDD + val isHoliday = bool("is_holiday") + override val primaryKey = PrimaryKey(bassDt) +} + object DatabaseFactory { fun init() { val dbPath = File("db/autotrade_db").absolutePath @@ -101,10 +107,23 @@ object DatabaseFactory { transaction { // 테이블 생성 (AutoTradeTable 포함) - SchemaUtils.createMissingTablesAndColumns(ConfigTable, TradeLogTable, AutoTradeTable) + SchemaUtils.createMissingTablesAndColumns(ConfigTable, TradeLogTable, AutoTradeTable,HolidayTable) } } + fun saveHoliday(date: String, holiday: Boolean) = transaction { + HolidayTable.replace { + it[bassDt] = date + it[isHoliday] = holiday + } + } + + // 특정 날짜의 휴장 여부 조회 + fun getHoliday(date: String): Boolean? = transaction { + HolidayTable.select { HolidayTable.bassDt eq date } + .map { it[HolidayTable.isHoliday] } + .singleOrNull() + } /** * 새로운 자동매매 건 등록 (주로 PENDING_BUY 상태로 시작) diff --git a/src/main/kotlin/network/KisTradeService.kt b/src/main/kotlin/network/KisTradeService.kt index 786be52..dcfff27 100644 --- a/src/main/kotlin/network/KisTradeService.kt +++ b/src/main/kotlin/network/KisTradeService.kt @@ -52,6 +52,29 @@ object KisTradeService { private val prodUrl = "https://openapi.koreainvestment.com:9443" private val vtsUrl = "https://openapivts.koreainvestment.com:29443" + suspend fun fetchIsHoliday(date: String): Result { + val config = KisSession.config + return try { + val response = client.get("$prodUrl/uapi/domestic-stock/v1/quotations/chk-holiday") { + header("authorization", "Bearer ${config.marketToken}") + header("appkey", config.realAppKey) + header("appsecret", config.realSecretKey) + header("tr_id", "CTCA0903R") + header("custtype", "P") + + parameter("BASS_DT", date) + parameter("CTX_AREA_NK", "") + parameter("CTX_AREA_FK", "") + } + val body = response.body() + // output의 opnd_yn (영업일 여부)가 'Y'이면 영업일, 'N'이면 휴장일 + val isOpeningDay = body["output"]?.jsonArray?.firstOrNull()?.jsonObject?.get("opnd_yn")?.jsonPrimitive?.content == "Y" + Result.success(!isOpeningDay) + } catch (e: Exception) { + Result.failure(e) + } + } + /** * [1] 통합 잔고 조회 (국내 + 해외 합산) */ diff --git a/src/main/kotlin/service/AutoTradingManager.kt b/src/main/kotlin/service/AutoTradingManager.kt index ccff1f7..c873b52 100644 --- a/src/main/kotlin/service/AutoTradingManager.kt +++ b/src/main/kotlin/service/AutoTradingManager.kt @@ -4,6 +4,9 @@ import AutoTradeItem import network.TradingDecision import TradingLogStore import TradingLogStore.decisionLogs +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue import getLlamaBinPath import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers @@ -61,6 +64,31 @@ object AutoTradingManager { // private val processedCodes = mutableSetOf() // 중복 처리 방지용 (선택 사항) private val reanalysisList = mutableListOf() private val retryCountMap = mutableMapOf() + var shouldShowFullWindow by mutableStateOf(false) + fun startBackgroundScheduler() { +// scope.launch { +// while (isActive) { +// val now = LocalTime.now(ZoneId.of("Asia/Seoul")) +// +// // 1. 오전 8시 30분 ~ 15시 30분 사이인지 확인 +// if (now.isAfter(LocalTime.of(8, 30)) && now.isBefore(LocalTime.of(15, 30))) { +// // 2. 아직 오늘 시스템 준비가 안 되었고, 설정값이 있는 경우 +// if (!isSystemReadyToday && KisSession.config.realAppKey.isNotEmpty()) { +// println("⏰ [Scheduler] 자동 실행 시간이 되어 인증을 시작합니다.") +// SystemSleepPreventer.wakeDisplay() // +// +// // 인증 및 토큰 갱신 시도 +// val success = KisAuthService.refreshAllTokens() && KisTradeService.refreshWebsocketKey() +// if (success) { +// isSystemReadyToday = true +// startAutoDiscoveryLoop() // 자동 매매 루프 시작 +// } +// } +// } +// delay(60_000) // 1분마다 체크 +// } +// } + } val globalCallback = { completeTradingDecision: TradingDecision?, isSuccess: Boolean -> if (isSuccess && completeTradingDecision != null) { @@ -389,6 +417,7 @@ object AutoTradingManager { } KisWebSocketManager.connect() isSystemReadyToday = true + shouldShowFullWindow = true } else { println("❌ [System] 토큰 갱신 실패. 2분 후 재시도합니다.") } @@ -425,6 +454,16 @@ object AutoTradingManager { // Main.kt에 설정 화면으로 가라고 신호 전송 stopDiscovery() // 발굴 루프 완전 폭파 (내일 8시 30분에 다시 켜짐) return@launch + } else if (now.isAfter(H08M30) && now.isBefore(H08M50) && !isSystemReadyToday) { + if (MarketUtil.canTradeToday()) { + println("✅ [System] 오늘은 영업일입니다. 시스템을 가동합니다.") + tryRefreshToken() // 토큰 갱신 및 화면 표시 신호(shouldShowFullWindow = true) + } else { + println("💤 [System] 오늘은 휴장일(또는 주말)입니다. 대기 모드를 유지합니다.") + isSystemReadyToday = false + delay(3600_000) // 휴장일이면 1시간 뒤에 다시 체크하도록 긴 지연시간 부여 + continue + } } when { diff --git a/src/main/kotlin/ui/TradingDecisionLog.kt b/src/main/kotlin/ui/TradingDecisionLog.kt index 7d0964e..92f9676 100644 --- a/src/main/kotlin/ui/TradingDecisionLog.kt +++ b/src/main/kotlin/ui/TradingDecisionLog.kt @@ -11,6 +11,8 @@ import androidx.compose.foundation.lazy.items import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material.* +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Search import androidx.compose.runtime.* import androidx.compose.ui.Modifier import androidx.compose.ui.focus.onFocusChanged @@ -23,15 +25,62 @@ import androidx.compose.ui.unit.sp import model.ConfigIndex import model.KisSession +@OptIn(ExperimentalMaterialApi::class) @Composable fun TradingDecisionLog() { + var searchQuery by remember { mutableStateOf("") } + var selectedFilter by remember { mutableStateOf("전체") } + val filterOptions = listOf("전체", "BUY", "SELL", "HOLD", "SETTING") + + // [핵심] 원본 로그에서 필터 조건에 맞는 리스트만 산출 + val filteredLogs = TradingLogStore.decisionLogs.filter { log -> + val matchesType = if (selectedFilter == "전체") true else log.decision == selectedFilter + val matchesQuery = log.stockName.contains(searchQuery, ignoreCase = true) || + log.reason.contains(searchQuery, ignoreCase = true) + matchesType && matchesQuery + } + Row(modifier = Modifier.fillMaxSize().background(Color(0xFFF2F2F2))) { Column(modifier = Modifier.weight(0.5f).padding(8.dp).fillMaxHeight().background(Color.White)) { Text("AI 자동매매 실시간 로그", style = MaterialTheme.typography.h6) - Divider(Modifier.padding(vertical = 8.dp)) - LazyColumn(reverseLayout = true) { // 최신 로그가 위로 오게 함 - items(TradingLogStore.decisionLogs) { log -> + // [추가] 상단 검색 및 필터 UI + Column(modifier = Modifier.padding(vertical = 8.dp)) { + // 1. 검색창 + OutlinedTextField( + value = searchQuery, + onValueChange = { searchQuery = it }, + label = { Text("종목명 또는 내용 검색") }, + modifier = Modifier.fillMaxWidth(), + leadingIcon = { Icon(Icons.Default.Search, contentDescription = null) }, + singleLine = true + ) + + Spacer(modifier = Modifier.height(8.dp)) + + // 2. 필터 버튼 그룹 (Chip 형태) + Row(horizontalArrangement = Arrangement.spacedBy(4.dp)) { + filterOptions.forEach { option -> + val isSelected = selectedFilter == option + FilterChip( + selected = isSelected, + onClick = { selectedFilter = option }, + colors = ChipDefaults.filterChipColors( + selectedBackgroundColor = Color(0xFF0E62CF), + selectedContentColor = Color.White + ) + ) { + Text(option, fontSize = 11.sp) + } + } + } + } + + Divider(Modifier.padding(bottom = 8.dp)) + + // [수정] filteredLogs를 사용하여 최신 로그가 위로 오게 표시 + LazyColumn(reverseLayout = true) { + items(filteredLogs) { log -> Card( modifier = Modifier.fillMaxWidth().padding(vertical = 4.dp), elevation = 2.dp @@ -43,10 +92,10 @@ fun TradingDecisionLog() { text = log.decision, color = when (log.decision) { "BUY" -> Color.Red - "SETTING" -> Color(0xFFFFA500) // 주황색 - "SELL" -> Color(0xFF800080) // 보라색 - "HOLD" -> Color.Gray // HOLD는 그레이 - else -> Color.Gray // 그 외 기본값 그레이 + "SETTING" -> Color(0xFFFFA500) + "SELL" -> Color(0xFF800080) + "HOLD" -> Color.Gray + else -> Color.Gray }, fontWeight = FontWeight.ExtraBold ) diff --git a/src/main/kotlin/util/MarketUtil.kt b/src/main/kotlin/util/MarketUtil.kt index 6e89c2f..e83a94d 100644 --- a/src/main/kotlin/util/MarketUtil.kt +++ b/src/main/kotlin/util/MarketUtil.kt @@ -1,9 +1,42 @@ package util +import network.KisTradeService import java.time.LocalTime import java.time.ZoneId object MarketUtil { + private var isHolidayCached: Boolean? = null // 하루 한 번만 체크하기 위한 캐시 + + suspend fun canTradeToday(): Boolean { + val seoulZone = java.time.ZoneId.of("Asia/Seoul") + val now = java.time.ZonedDateTime.now(seoulZone) + val todayStr = now.format(java.time.format.DateTimeFormatter.ofPattern("yyyyMMdd")) + + // 1. 주말 체크 + val dayOfWeek = now.dayOfWeek.value + if (dayOfWeek >= 6) return false + // 1. 주말 체크 (토, 일) + val cachedHoliday = DatabaseFactory.getHoliday(todayStr) + if (cachedHoliday != null) { + println("📂 [DB Cache] 오늘($todayStr)의 휴장 여부를 DB에서 로드했습니다: ${if(cachedHoliday) "휴장" else "영업일"}") + return !cachedHoliday + } + + // 3. DB에 없으면 API 호출 + return try { + val result = KisTradeService.fetchIsHoliday(todayStr) + val isHoliday = result.getOrDefault(true) + + // 결과를 DB에 저장하여 다음 실행 시 재사용 + DatabaseFactory.saveHoliday(todayStr, isHoliday) + + println("🌐 [API Call] 오늘($todayStr)의 휴장 여부를 새로 조회하여 DB에 저장했습니다.") + !isHoliday + } catch (e: Exception) { + false + } + } + fun isKoreanMarketOpen(): Boolean { // 한국 시간대 기준 현재 시간 가져오기 val now = LocalTime.now(ZoneId.of("Asia/Seoul")) diff --git a/src/main/resources/neko.png b/src/main/resources/neko.png new file mode 100644 index 0000000000000000000000000000000000000000..03970c15482c869aeb9f41929ee1566cce208360 GIT binary patch literal 47539 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 literal 0 HcmV?d00001