Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- rci지표매매
- 주식지표매수
- 급등주패턴
- 주식분석
- 온라인쇼핑마진
- 트레이딩뷰지표
- 계엄령관련주
- 판매자계산기
- 할인가계산
- 보조지표매매법
- 할인율계산기
- 트레이딩뷰매매
- JP모건CEO
- rci매수매도
- 아마존CEO
- rci지표매매법
- 성공방정식
- 주린이매수타이밍
- 역마진계산기
- 주식지표
- 마진계산기
- 트레이딩뷰차트
- 주식보조지표
- 매수위치
- 주가예측
- 판매가계산
- 로또1등번호예측
- rci보조지표
- JP모건
- 생성형이미지
Archives
- Today
- Total
핫트레이딩
트레이딩뷰와 키움증권을 연동한 웹훅서버 AWS EC2 를 사용 자동 매매 프로그램 제작 본문
웹훅서버 AWS EC2 를 사용하는 방식으로 트레이딩뷰와 키움증권을 연동한 자동 매매 프로그램 제작하는 방법을 소개합니다.
TradingView와 키움증권 Open API를 AWS EC2에서 웹훅 서버로 연동하여 자동매매 프로그램을 만드는 방법을 아주 자세히 설명하겠습니다. 이 과정은 초보자도 따라 할 수 있도록 단계별로 세분화하고, 필요한 모든 설정과 코드를 포함합니다. AWS EC2에서 Windows Server를 사용해 키움 Open API를 실행하며, Flask로 웹훅 서버를 구축합니다. 현재 날짜가 2025년 3월 12일임을 감안해 최신 기준으로 설명하겠습니다.
전체 개요
- TradingView: 조건에 따라 경고(Alert)를 발생시켜 웹훅으로 데이터를 전송.
- AWS EC2: Windows Server 인스턴스에서 Flask 웹훅 서버를 실행하고, 키움 Open API로 주문을 처리.
- 키움증권 Open API: 주식 매수/매도 주문을 실행.
준비물
- AWS 계정: 신규 계정이라면 무료 티어(t2.micro) 사용 가능.
- 키움증권 계좌: 실계좌 또는 모의투자 계좌.
- TradingView 계정: 웹훅 기능이 있는 유료 플랜(Pro 이상).
- 로컬 PC: AWS EC2 설정 및 파일 전송용 (Windows/Mac/Linux 가능).
- 기본 도구: Python 3.x (32비트), 텍스트 에디터(예: VS Code).
단계별 구현 방법
단계 1: AWS EC2 설정
- AWS 계정 생성
- AWS 홈페이지(aws.amazon.com)에서 계정 생성.
- 신규 사용자라면 무료 티어로 12개월간 t2.micro 인스턴스를 무료로 사용 가능.
- EC2 인스턴스 생성
- AWS Management Console에 로그인.
- 좌측 상단 "서비스" > "EC2" 선택.
- "인스턴스 시작" 버튼 클릭.
- 운영 체제 선택:
- "Microsoft Windows Server 2022 Base" 선택 (키움 Open API가 Windows에서 동작).
- 인스턴스 유형:
- "t2.micro" 선택 (무료 티어 적합, 1 vCPU, 1GB RAM).
- 키 페어 생성:
- "새 키 페어 생성" 선택, 이름 입력(예: mykey).
- mykey.pem 파일 다운로드 후 안전한 곳에 저장 (RDP 접속 시 필요).
- 네트워크 설정:
- 기본 VPC와 서브넷 사용.
- "퍼블릭 IP 자동 할당" 활성화.
- 그외 설정은 수정하지 말고 그대로 둠.
- "시작" 클릭 후 인스턴스 생성 완료 대기 (약 2~3분).
- EC2에 RDP로 접속
- EC2 대시보드에서 생성된 인스턴스 선택.
- "연결" 버튼 클릭 > "RDP 클라이언트" 탭 선택.
- "비밀번호 가져오기" 클릭, 다운로드한 mykey.pem 파일 업로드해 비밀번호 복호화.
- 로컬 PC에서 "원격 데스크톱 연결" 실행 (Windows: mstsc).
- IP: EC2 퍼블릭 IP 입력 (예: 3.123.456.789).
- 사용자 이름: Administrator.
- 비밀번호: 복호화된 비밀번호 입력.
- 접속 성공 시 Windows Server 데스크톱 표시.
- 보안 그룹 설정 (포트 열기)
- EC2 대시보드에서 인스턴스 선택 > "보안" 탭 > "보안 그룹" 클릭.
- "인바운드 규칙 편집" 선택.
- 규칙 추가:
- 유형: 사용자 지정 TCP.
- 포트 범위: 5000 (Flask 서버 포트).
- 소스: 0.0.0.0/0 (모든 IP 허용, 테스트용).
- 저장 후 적용.




단계 2: EC2에 개발 환경 설정
- Python 설치
- EC2에서 웹 브라우저 실행 (Internet Explorer 또는 Edge).
- python.org 접속 > Python 3.9 이상 다운로드 (32비트 권장, 키움 API 호환성).
- 설치 시 "Add Python to PATH" 체크.
- 설치 확인: CMD에서 text 명령입력 python --version 실행.
ㄴ CMD에서 python --version 명령어를 실행했을 때 'python' is not recognized as an internal or external command, operable program or batch file.'라는 오류 메시지가 나타난다면, 해결방법 링크 포스팅 참조하세요.
https://hot-t.tistory.com/78
- 필요 라이브러리 설치
- CMD 열기 (Win + R > cmd).
- 명령어 실행:
text 명령입력pip --version (먼저 설치되어 있는지 확인 후 미 설치시 다음 실행)pip install flask pyqt5
- 키움증권 Open API 설치
- 키움증권 홈페이지(www.kiwoom.com) 접속.
- "Open API" 메뉴에서 신청 (이미 계좌 있다면 생략).
- OpenAPISetup.exe 다운로드 및 실행.
- 설치 후 "KHOpenAPI"가 제대로 설치되었는지 확인 (제어판 > 프로그램).


단계 3: Flask 웹훅 서버 코드 작성
- 코드 작성
- EC2에서 메모장 열기, 아래 코드를 붙여넣기: python 코드
from flask import Flask, request, jsonify
from PyQt5.QAxContainer import QAxWidget
from PyQt5.QtWidgets import QApplication
import sys
import logging
# 로깅 설정
logging.basicConfig(filename='trade.log', level=logging.INFO,
format='%(asctime)s - %(message)s')
# Flask 앱 생성
app = Flask(__name__)
# PyQt5와 키움 API 초기화
sys.argv.append("--remote-debugging-port=9222") # Flask와 충돌 방지
kiwoom_app = QApplication(sys.argv)
kiwoom = QAxWidget("KHOPENAPI.KHOpenAPICtrl.1")
kiwoom.dynamicCall("CommConnect()") # 로그인 대기
def send_order(symbol, action, quantity, price):
account = "YOUR_ACCOUNT_NUMBER" # 본인 계좌번호 입력
order_type = 1 if action == "buy" else 2 # 1: 매수, 2: 매도
kiwoom.dynamicCall("SendOrder(QString, QString, QString, int, QString, int, int, QString, QString)",
["주문", "0101", account, order_type, symbol, quantity, price, "03", ""]) # 시장가 주문
logging.info(f"Order sent: {symbol}, {action}, {quantity}, {price}")
@app.route('/webhook', methods=['POST'])
def webhook():
try:
data = request.json
if not data:
return jsonify({"error": "No data received"}), 400
symbol = data.get('symbol')
action = data.get('action')
price = int(float(data.get('price'))) # 정수로 변환
quantity = 1 # 주문 수량 (조정 가능)
send_order(symbol, action, quantity, price)
return jsonify({"message": f"Order sent: {symbol}, {action}, {price}"}), 200
except Exception as e:
logging.error(f"Error: {str(e)}")
return jsonify({"error": str(e)}), 500
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000, threaded=True) # 외부 접속 허용, 멀티스레드
-
- 파일 저장: C:\webhook_server.py.
- 계좌번호 입력
- YOUR_ACCOUNT_NUMBER 를 본인의 키움증권 계좌번호로 교체 (모의투자 계좌 사용 권장).
- 서버 실행
- CMD에서 디렉토리 이동: cd C:\.
- 실행: python webhook_server.py.
- 실행 시 키움증권 로그인 창이 나타남 > ID/비밀번호 입력 후 로그인.
- "Running on http://0.0.0.0:5000" 메시지 확인.

단계 4: TradingView 설정
- 경고 생성
- TradingView 로그인 > 차트 열기.
- 지표 추가(예: RSI) > 조건 설정(예: "RSI > 70").
- 우클릭 > "경고 추가".
- 웹훅 설정:
- "Webhook URL" 활성화.
- URL 입력: http://<EC2-퍼블릭-IP>:5000/webhook (예: http://3.123.456.789:5000/webhook).
- 메시지 설정:
json code{ "symbol": "005930", // 삼성전자 종목 코드 "action": "buy", // 또는 "sell" "price": "{{close}}"
- 테스트
- 차트에서 조건 충족 시 경고 발생 > EC2의 trade.log 파일 확인.
단계 5: 테스트 및 디버깅
- 모의투자 테스트
- 키움증권 모의투자 계좌로 로그인.
- TradingView에서 RSI 조건 충족 시 주문 실행 여부 확인 (로그 확인).
- 로그 확인
- C:\trade.log 열어 주문 내역 확인 (예: 2025-03-12 10:00:00 - Order sent: 005930, buy, 1, 75000).
- 문제 해결
- 포트 문제: EC2 보안 그룹에서 5000번 포트가 열려 있는지 재확인.
- 로그인 실패: 키움 API 로그인 창에서 오류 시 계정 정보 점검.
단계 6: 실전 배포
- 24시간 실행
- EC2에서 CMD를 항상 켜두거나, Windows 작업 스케줄러로 부팅 시 자동 실행 설정:
- "작업 스케줄러" 열기 > "작업 만들기".
- 트리거: "시스템 시작 시".
- 작업: python C:\webhook_server.py.
- EC2에서 CMD를 항상 켜두거나, Windows 작업 스케줄러로 부팅 시 자동 실행 설정:
- 실계좌 전환
- 모의투자 성공 후 실계좌 번호로 코드 수정, 소액으로 실전 테스트.
주의사항
- 비용: 무료 티어 초과 시 t2.micro 기준 월 $10~$15 발생.
- 법적 문제: 한국 자본시장법상 자동매매는 개인 용도로만 사용 권장.
- 보안: 실전 시 0.0.0.0/0 대신 특정 IP(TradingView IP)만 허용하도록 보안 그룹 수정.
추가 개선
- 알림: 텔레그램 봇 추가로 주문 결과 전송.
- 다중 종목: JSON 데이터에 여러 종목 처리 로직 추가.
- UI: Flask에 간단한 웹 페이지 추가로 상태 모니터링.
이 과정을 따라가면 AWS EC2에서 TradingView와 키움증권을 연동한 자동매매 프로그램을 완성할 수 있습니다. 각 단계에서 문제가 생기면 구체적으로 질문 주시면 더 자세히 도와드리겠습니다!
반응형
'IT 정보 > 트레이딩뷰 자동매매' 카테고리의 다른 글
키움API ID와 비밀번호를 입력 후 "Running on http://0.0.0.0:5000" 메시지가 출력되지 않는 문제 (0) | 2025.03.13 |
---|---|
키움증권 Open API 작동시 AWS EC2에서 한글 깨짐 현상 해결 (0) | 2025.03.12 |
파이션 설치 후 CMD 명령 python --version 에러메시지 해결방법 (0) | 2025.03.12 |
트레이딩뷰 자동매매 웹훅 클라우드 서버 비교 및 추천 (0) | 2025.03.12 |
트레이딩뷰 자동매매 기능 사용 방법 상세 (0) | 2025.02.21 |