반응형
✅ 시스템 구성 요소별 상세 설명
① 실시간 체결가 수신 → 1분봉 저장
영웅문4 OpenAPI의 실시간 이벤트 OnReceiveRealData를 통해 실시간 체결가를 수신합니다.
이를 기반으로 1분 간격으로 캔들 데이터를 누적하여 분봉(1분봉) 데이터를 생성합니다.
vb.net
Private Sub axKH_OnReceiveRealData(...) Handles axKH.OnReceiveRealData
Dim price = axKH.GetCommRealData(e.sRealKey, 10)
currentPrices.Add(price)
End Sub
' 타이머(1분 간격)에서 저장
Sub OnOneMinuteTick()
Dim avg = currentPrices.Average()
SaveMinuteCandle("101Q3000", avg, totalVolume)
currentPrices.Clear()
End Sub
✅ 분봉 저장은 추후 백테스트, 추세 분석, 지표 계산, AI 학습 데이터 생성 등에 핵심 자료로 사용됩니다.
② 분봉 기반 기술적 지표 계산 – 예: 볼린저 밴드
누적된 1분봉 가격 데이터를 바탕으로 볼린저 밴드를 계산합니다.
(20봉 이동평균 ± 2표준편차)
vb.net
Function CalculateBollingerBands(prices As List(Of Double)) As (Double, Double, Double)
Dim sma = prices.TakeLast(20).Average()
Dim stdDev = Math.Sqrt(prices.TakeLast(20).Sum(Function(p) (p - sma) ^ 2) / 20)
Return (sma - 2 * stdDev, sma, sma + 2 * stdDev)
End Function
📈 볼린저 밴드는 변동성 기반 추세 반전 전략 또는 스캘핑에 매우 유용합니다.
③ 실시간 조건 판단 + 자동 주문 실행
현재가가 하단 밴드보다 낮으면 매수, 상단 밴드보다 높으면 매도하도록 설정합니다.
이를 자동화해 실시간으로 주문이 들어가도록 만듭니다.
vb.net
Sub EvaluateAndTrade(prices As List(Of Double), currentPrice As Double, code As String)
Dim (lower, middle, upper) = CalculateBollingerBands(prices)
If currentPrice <= lower Then
SendOrderBuy(code)
ElseIf currentPrice >= upper Then
SendOrderSell(code)
End If
End Sub
④ 주문 기록 → 백데이터로 저장
매수/매도 주문 발생 시, 그 내역을 별도로 백업합니다 (CSV, DB, 구글 시트 등).
vb.net
Sub LogTrade(code As String, price As Double, qty As Integer, action As String)
Dim log = $"{Now},{code},{price},{qty},{action}"
File.AppendAllText("trade_log.csv", log & vbCrLf)
End Sub
📁 백업 예시:
2025-04-07 09:32:10,101Q3000,297.80,1,BUY
2025-04-07 09:55:44,101Q3000,298.90,1,SELL
⑤ 향후 백테스트 / AI 전략 개선에 그대로 활용 가능
위의 백데이터들은 추후 다음 목적으로 재활용됩니다:
활용처 | 설명 |
📊 백테스트 | 과거 분봉 데이터를 불러와 전략 시뮬레이션 가능 |
🤖 AI 학습 데이터 | 전략을 자동으로 추천하거나 최적화하는 데 필요한 피드백 데이터 |
📈 전략 성능 통계 분석 | 기간별 수익률, 승률, 리스크 지표 분석 가능 |
🧠 조건 추천 시스템 | GPT 기반 자동 조건 생성 시스템 구축 가능 |
🧩 전체 시스템 흐름 요약 (시각화)
[실시간 체결] → [1분봉 저장] → [볼린저밴드 계산] → [조건 판단] → [자동 주문 실행]
↓ ↓
[CSV 저장] [조건 만족 여부 기록]
↓ ↓
[백테스트용 데이터] [성과 분석 및 AI 추천]
📌 이 구조를 반드시 사용하는 이유
이유 | 효과 |
데이터 중심 전략 판단 | 감에 의존하지 않고, 수치 기반으로 전략 결정 가능 |
조건 자동화 가능 | 사람이 일일이 모니터링할 필요 없이 실시간 조건 실행 |
데이터 자산화 | 수개월치 데이터를 누적 → 백테스트, AI 분석, 전략 튜닝에 재사용 가능 |
성능 추적 및 개선 가능 | 실행 로그를 통해 성능 비교, 손절/익절 조정, 조건 리파인 가능 |
🔚 결론: “VB.NET + 영웅문4 + 백데이터”는 자동매매 전략의 ‘기본 골격’이다.
자동매매를 단순히 주문만 넣는 수준에서 그치지 않으려면,
“실시간 체결 → 분봉 저장 → 지표 계산 → 조건 매매 → 데이터 로그”
이 전체 구조를 반드시 갖추어야 합니다.
백데이터를 기반으로 조건을 검증하고, 전략을 반복 개선하는 것만이
지속 가능한 자동매매 시스템을 만드는 유일한 길입니다.
반응형