상세 컨텐츠

본문 제목

키움 OpenAPI로 종목 스캐너 만들기 4 — 좌측 조건·섹터 패널

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

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

본문

반응형

안녕하세요! 상단 상태바까지 올렸으니, 오늘은 화면 왼쪽 패널을 채웁니다. 위쪽엔 내가 쓰는 매매 조건 목록, 아래쪽엔 오늘 강한 섹터를 알록달록한 타일로 보여줄 거예요. 그리고 이번 편부터 드디어 "데이터"가 등장합니다!

데이터는 한곳에 모은다

화면에 뿌릴 값(조건, 섹터 등)을 폼 코드 여기저기에 흩어놓으면 나중에 키움 연동할 때 골치 아파집니다. 그래서 MockScannerDataProvider라는 클래스를 하나 만들어, 화면에 필요한 데이터를 전부 여기서 꺼내 쓰기로 했어요. 지금은 고정값을 돌려주지만, 나중에 이 클래스만 키움 버전으로 바꾸면 됩니다.

public class MockScannerDataProvider
{
    public ConditionSettings GetSettings() => new ConditionSettings();

    public IList<SectorStrength> GetStrongSectors() => new List<SectorStrength>
    {
        new SectorStrength("반도체", 6),
        new SectorStrength("2차전지", 4),
        new SectorStrength("바이오", 3),
        // ...
    };
}

 

폼에서는 private readonly MockScannerDataProvider _data = new MockScannerDataProvider(); 한 줄로 들고 다니며 꺼내 씁니다.

조건 목록 — 라벨 2열 표

"항목 — 값" 형태가 9줄 반복되니, 배열로 정의해두고 반복문으로 라벨을 찍습니다. 값마다 색을 다르게 줘서 진입시간은 파랑, 손절은 빨강, 트레일링은 초록으로 강조했어요.

var rows = new (string label, string value, Color color)[]
{
    ("갭상승 범위",   s.GapRange,        ScannerTheme.TextDark),
    ("진입 시간",     s.EntryTime,       ScannerTheme.SettingBlue),
    ("손절",          s.StopLoss,        ScannerTheme.SettingRed),
    ("트레일링 시작", s.TrailingStart,   ScannerTheme.SettingGreen),
    // ...
};
foreach (var r in rows) { /* 항목 라벨 + 값 라벨을 2열에 추가 */ }

핵심 — 섹터별 색을 한 함수로

강세 섹터 타일은 반도체는 파랑 계열, 2차전지는 초록 계열처럼 섹터마다 색이 정해져 있습니다. 이걸 if문으로 패널마다 칠하면 지저분하니, ScannerTheme.SectorColor() 함수가 섹터명을 받아 (배경색, 글자색) 한 쌍을 돌려주게 했어요. 타일을 만들 땐 이 함수 결과만 쓰면 끝!

var c = ScannerTheme.SectorColor(sec.Name);   // (배경, 글자) 한 쌍
var tile = new Panel { Dock = DockStyle.Fill, BackColor = c.back };
// 섹터명 + "n종목" 라벨을 c.text 색으로 추가

 

타일은 2열 그리드(i % 2, i / 2)로 차곡차곡 배치합니다. 섹터가 늘어도 알아서 줄이 추가돼요.

 

마무리하며
이제 실행하면 왼쪽에 조건 목록과 6개의 컬러 섹터 타일이 채워집니다. 화면 절반이 살아났네요! 가운데와 오른쪽은 아직 비어 있죠. 다음 편에서는 화면의 주인공, 선정 종목 표(DataGridView)를 만들고 갭상승·전일봉·상태에 색을 입혀보겠습니다. 프로젝트는 아래에서 받으세요.

 

StockRader_04.zip
0.01MB

반응형

관련글 더보기

댓글 영역