서론
지금 대학생 신분으로 시험을 치는 기간이다.
힘든 시기를 많이 겪고 있지만 최근 6달 동안 나 자신을 돌이켜 보면 많은 성장을 한 것 같다.
공부한 것들을 모두 정리해서 블로그에 올리고 싶었지만 꽤 소홀하게 한 것에 대해 한 번의 반성을 하고 들어간다,,,
꽤 바쁜 이 와중에 본인 기준(?) 꽤 대형 프로젝트 겸 외주가 들어왔다. ( 블로그에 코드 베포만 아니면 써도 된다고 허락 받음 히히 ^^ )
바로 Trading View에서 지원하는 기능 중 하나인 Alert을 바탕으로 코인을 자동으로 매매하는 시스템이다.
바로 최종적인 결과물로 가기전에 중간 결과물로 가는 과정이 지금 alert 기반으로 하는 코인 자동 매매 시스템이다.
최종 결과물은 Trading View에서 지원하는 분봉 변화에 따라 색깔이 변화하는 기능이 있다.
이 후에 중간 결과물이 끝나면 이 기능에 대해 깊게 설명할 것이지만
대충 롱 진입과 숏 진입에 대한 변화를 기준으로 색깔이 변화하는 것이다.
참고 자료 @@
https://youtube.com/watch?v=xbBs0BoqimE
https://youtube.com/watch?v=jIU-JEoif9Q
그럼 Trading View는 무엇일까?
주식과 코인을 동시에 관리할 수 있고 유료로 차트 분석과 전문가들의 의견들을 모두 열람할 수 있는
거래소이자 소셜 네트워크이다.
그럼 alert은 무슨 기능을 해줄까?
쉽게 말해서 자신이 설정한 목푯 값, 평균값 등을 입력해서 만약 차트가 그 값에 도달했을 때 사용자에게 알람을 해주는 기능이다.
그럼 이것들을 어떻게 활용한다는 것?
중간 결과물은 분석을 해주는 유료 차트를 실제로 연결해서 가장 이상적인 값을 찾아서 사용자가 넣는다.
그러면 사용자는 자동 매매 시스템이 아닌 상황을 보자면 그 값이 언제 도달할지도 모르고 또 이상적인 차트가 언제 나올지도 몰라
매번 잠을 제대로 자지 못하고 차트를 계속 들여다보며 시간을 매번 소모하는 상황을 가진다.
그렇기 때문에 이 외주의 가장 큰 목적은 다른 일을 해야하고 바쁜 대상이 코인 차트를 매번 들여다보고 알람을 기다릴 수도 없고
자는 시간에 가장 이상적인 값에서 알람이 뜨면 잠에 깊게 빠지지 못한다.
자동 매매 시스템은 많이 듣고 몇 번 봤지만 이런 유로로 사용한 차트 분석들과 알람 기능을 통해 사용자가 설정한 모든 값과
분봉 분석을 모두 자동으로 돌리는 것!
이것이 이 프로젝트를 하는 이유이다.
그렇다면 이제부터 내가 기초적으로 구상한 것들을 설명하겠다.
본론
큰 시스템
- 트레이딩뷰 웹훅
- PHP 서버
- 파이썬 스크립트
- AWS EC2 (WAS)
전체 시스템 구조
자동매매 시스템의 전체 흐름을 한눈에 정리하면
트레이딩뷰에서 조건이 맞을 때 자동으로 매수/매도 요청이 보내지고,
PHP가 그걸 받아 파이썬을 통해 실제로 거래소에 주문을 넣는 구조.
EC2는 어떤 역할을 할까?
AWS EC2 인스턴스는 이 시스템의 WAS(Web Application Server) 역할을 하고 있다.
트레이딩뷰에서 웹훅을 호출할 때, 내 EC2 서버의 Public IP나 도메인으로 요청이 들어온다.
EC2 안에는 Apache + PHP + Python 환경이 구축되어 있음.
PHP는 webhook 요청을 받고, Python은 거래 실행 로직을 담당함.
- EC2 준비 요약
- Ubuntu 또는 Amazon Linux 기반 EC2 인스턴스 생성
- Apache2 + PHP 설치
- GetWebhook.py 등 Python 스크립트 업로드
- 80번 포트(HTTP) 오픈 (보안 그룹 설정!)
- 트레이딩뷰 웹훅에 들어갈 URL:
http://<EC2_PUBLIC_IP>/webhook.php
참고 @@
https://docs.aws.amazon.com/ko_kr/linux/al2023/ug/ec2-lamp-amazon-linux-2023.html
자습서: AL2023에 LAMP 서버 설치 - Amazon Linux 2023
Amazon Linux를 사용하지 않는 경우, 이러한 연결을 허용하도록 인스턴스에서 방화벽을 구성해야 할 수도 있습니다. 방화벽 구성 방법에 대한 자세한 내용은 사용자의 특정 배포에 대한 문서를 참
docs.aws.amazon.com
webhook.php – PHP 코드 설명
이 코드는 트레이딩뷰에서 오는 웹훅 데이터를 받아 파이썬 스크립트로 전달해 주는 역할을 한다.
좀 더 수정을 할 것이 많지만 기초적인 코드와 Test를 ( TDD ) 위해서
php
복사편집
<?php
header("Content-Type: application/json; charset=utf-8");
$data = file_get_contents('php://input'); // JSON 형태로 받은 웹훅 데이터
$command = "python3 /var/autobot/GetWebhook.py " . escapeshellarg($data); // Python에 데이터 전달
exec($command, $output, $return_var); // Python 실행 결과 받아오기
$json_array = json_encode($output); // 결과를 다시 JSON으로 인코딩
echo $json_array;
?>
- file_get_contents('php://input'): 트레이딩뷰에서 보낸 JSON 요청을 그대로 받아옴
- escapeshellarg($data): 파이썬에 넘길 수 있도록 문자열 이스케이프.
- exec(): 실제 파이썬 코드 실행! 코인 매매 처리는 여기서 진행.
Python 코드 – 주문 처리
이제 핵심 매매 로직은 GetWebhook.py에서 처리하게 된다.
예를 들어, 받은 JSON이 아래와 같다면:
파이썬에서는 이 데이터를 받아서, 바이낸스 API나 업비트 API를 통해 실제 매수/매도를 실행.
느낀 점
가장 중요한 것은 PHP 웹훅, AWS EC2를 이용한 php 연결 웹훅 그리고 API와 기능을 어떻게 불러서 기능을 사용할 것인지가
가장 큰 숙제인거 같다. 나는 AWS를 공부를 했지 실제로 바로 써본 적도 없고 php도 사용도 이번에 처음이다.
그래서 공부를 좀 많이 하면서 이것들을 구현해야겠다...
아직 많이 부족하다는 것을 깨달으며 1장은 여기까지..
'백엔드' 카테고리의 다른 글
FastAPI ( with gRPC를 곁들인.. ) (0) | 2025.05.29 |
---|---|
📚중고 도서 예약 시스템 (1) | 2025.05.08 |
TDD 방법론 이게 뭘까 ? (0) | 2025.01.27 |
[Web] HTTP 와 Method #2 (1) | 2024.10.17 |
[Web] HTTP 와 Method #1 (1) | 2024.10.16 |