반응형
✅ 왜 실시간 체결가 기반 주문이 중요한가요?
- 실시간 체결가는 시장 움직임을 가장 빠르게 반영하는 지표입니다.
- 조건검색/전략 판단 후 실시간 체결 가격을 받아 정확한 타이밍에 주문을 넣는 것이 필수입니다.
🧩 STEP 1. 실시간 체결가 수신 등록
C#
axKHOpenAPI1.SetRealReg("1000", "005930", "10;15", "0");
필드 | 설명 |
10 | 현재가 |
15 | 체결량 |
🔔 STEP 2. 실시간 체결 데이터 수신 이벤트
C#
private void axKHOpenAPI1_OnReceiveRealData(object sender, _DKHOpenAPIEvents_OnReceiveRealDataEvent e)
{
if (e.sRealType == "주식체결")
{
string currentPrice = axKHOpenAPI1.GetCommRealData(e.sRealKey, 10).Trim();
string volume = axKHOpenAPI1.GetCommRealData(e.sRealKey, 15).Trim();
listBox1.Items.Add($"[체결 수신] 현재가: {currentPrice}, 체결량: {volume}");
// 조건에 따라 자동 매수 실행
if (int.Parse(volume.Replace("+", "").Replace("-", "")) > 1000)
{
SendBuyOrder(e.sRealKey, currentPrice);
}
}
}
📷 실시간 체결 수신 UI 예시
[체결 수신] 현재가: 78,500, 체결량: 1,200
→ 조건 충족 → 자동 매수 실행
💸 STEP 3. 자동 매수 주문 함수 (SendOrder)
C#
private void SendBuyOrder(string code, string price)
{
int order = axKHOpenAPI1.SendOrder(
"자동매수", // 화면번호
"1001", // 주문 고유 ID
"계좌번호", // 실제 계좌번호
1, // 주문유형: 1=매수, 2=매도
code, // 종목코드
10, // 수량
0, // 가격 (시장가일 경우 0)
"03", // 시장가 주문
""
);
if (order == 0)
listBox1.Items.Add($"✅ 매수주문 성공: {code}");
else
listBox1.Items.Add($"❌ 매수주문 실패: 코드 {order}");
}
주문 유형 코드표
코드 | 설명 |
00 | 지정가 |
03 | 시장가 |
05 | 조건부지정가 |
10 | 지정가IOC |
20 | 시장가IOC |
🔁 STEP 4. 자동 매도 주문 예시
C#
private void SendSellOrder(string code, int quantity)
{
axKHOpenAPI1.SendOrder(
"자동매도", "1002", "계좌번호", 2,
code, quantity, 0, "03", ""
);
}
🧠 주문 흐름 요약
📷 자동매매 구조 다이어그램
[실시간 체결 수신]
↓
[조건 판단]
↓
[자동 주문 실행 (SendOrder)]
↓
[실행 결과 알림 or 기록]
🔗 실전에서는 매수 후 → 일정 수익률 도달 시 자동 매도 구조도 함께 구성합니다.
✅ 실전 팁: 필수 보완 기능
기능 | 설명 |
✅ 주문 로그 기록 | CSV 또는 텍스트로 실행 로그 저장 |
✅ 잔고 조회 후 주문 | 매수 가능 여부 확인 필수 |
✅ 실계좌 분리 테스트 | 모의 계좌와 실계좌 구분 (계좌번호 조건 처리) |
반응형