상세 컨텐츠

본문 제목

키움 OpenAPI로 종목 스캐너 만들기 7 — 우측 패널 (UI 완성)

주식 자동매매 시스템/Kiwoom OpenAPI

by 별을 보는 사람 2026. 6. 16. 07:00

본문

반응형

안녕하세요! 드디어 UI의 마지막 조각입니다. 오른쪽 패널에 오늘 성적표(시황 요약), 섹터별 진입 현황, 그리고 까만 콘솔처럼 글자가 색색으로 흐르는 실시간 로그를 올립니다. 이번 편을 마치면 처음 보여드린 그 화면이 똑같이 완성돼요!

 

시황 요약 — 숫자 타일 2×3

선정 종목 수, 진입 완료, 수익 중, 손절, 가상 손익, 수익률. 이 6개를 작은 타일 6칸(2열×3행)에 큼직한 숫자로 보여줍니다. 타일 하나는 "작은 제목 + 큰 값" 구조라 SummaryTile() 헬퍼로 찍어냈어요. 수익은 빨강, 손절·손실은 파랑으로요.

grid.Controls.Add(SummaryTile("선정 종목", sm.Selected.ToString(),  ScannerTheme.TextDark), 0, 0);
grid.Controls.Add(SummaryTile("수익 중",   sm.InProfit.ToString(),  ScannerTheme.Gain),     0, 1);
grid.Controls.Add(SummaryTile("가상 손익",
        $"{(sm.VirtualPnL >= 0 ? "+" : "")}{sm.VirtualPnL:#,0}원",
        sm.VirtualPnL >= 0 ? ScannerTheme.Gain : ScannerTheme.Loss), 0, 2);

섹터별 현황 — 한 줄씩 쌓기

"반도체 6종목 / 3진입"처럼 섹터마다 한 줄. 왼쪽엔 섹터명(섹터 색), 오른쪽엔 종목/진입 수를 붙여 FlowLayoutPanel에 위에서 아래로 차곡차곡 쌓습니다. 4편에서 만든 SectorColor()를 또 재활용해요.

핵심 — 로그 한 줄씩 색 입히기

실시간 로그는 RichTextBox로 만듭니다. 일반 TextBox와 달리 글자마다 색을 다르게 줄 수 있거든요. 비결은 글을 덧붙이기 직전에 SelectionColor를 바꾸는 것! 가상매수는 초록, 손절은 빨강, 트레일링은 하늘색으로 칠합니다.

private void AppendColored(RichTextBox box, string text, Color color)
{
    box.SelectionStart = box.TextLength;   // 맨 끝으로 커서 이동
    box.SelectionLength = 0;
    box.SelectionColor = color;            // 이 색으로
    box.AppendText(text);                  // 글자 덧붙이기
}

// 시각은 회색, 내용은 종류별 색
AppendColored(box, log.Time.ToString(@"hh\:mm\:ss") + " ", ScannerTheme.LogTime);
AppendColored(box, log.Message + "\n", LogColor(log.Level));

 

로그 종류(LogLevel)에 따라 색을 돌려주는 LogColor()만 두면, 나중에 실제 이벤트가 들어올 때도 같은 함수로 깔끔하게 찍을 수 있습니다.

 

마무리하며
축하합니다 — UI가 완성됐습니다! 실행하면 좌·중·우가 가득 찬, 처음 설계한 그 대시보드가 그대로 뜹니다. 여기까지(1~7편)는 전부 Mock 데이터라 키움 없이도 돌아갔죠. 다음 편(8편)부터는 2부예요. 이 Mock 자리에 진짜 키움 데이터를 끼우기 위해, 먼저 IScannerDataProvider 인터페이스로 데이터 공급부를 분리하겠습니다. 완성 UI 프로젝트는 아래에서 받으세요!

 

StockRader_07.zip
0.01MB

반응형

관련글 더보기

댓글 영역