1편에서 API 키를 받았고 2편에서 서버를 만들었고 3편에서 텔레그램 봇을 만들었습니다.
준비물이 다 모였으니 오늘은 코드를 만들어 서버에 올려보겠습니다.
이 시리즈의 정리와 코드는 AI(Claude)와 함께 만들었습니다. 직접 해 본 과정과 판단은 제가 썼습니다.
매매전략은 단순 적립식부터 비중 조절, 다양한 트리거 기반 매매까지 대부분의 아이디어들이 구현 가능합니다.
AI와 충분히 대화하면서 전략을 백테스트한 뒤 진행하는 것을 추천드립니다.
이번 시간엔 간단하게 매달 한번 지수 etf를 매수하는 코드를 만들어 보겠습니다.
AI에게 코딩을 시키기 전 1편에서 받아 둔 API 스펙 파일(혹은 텍스트 그대로)을 보내줍니다.
이 파일이 있어야 AI가 추측하거나 다른 증권사의 API 내용을 섞어서 쓰지 않고 정확한 코딩이 가능합니다.
그다음 원하는 규칙을 문장으로 적어서 요청합니다.
'텔레그램 봇과 연동해서 매달 정해진 금액으로 지수 etf를 매수하는 자동매매 봇을 만들고 싶어' '텔레그램 봇은 InlineButton 이용해서 현황판에는 새로고침, 설정에는 파라미터 값 세팅해주고 ReplyButton으로 현황판과 설정 쉽게 누르게 해줘' '텔레그램 봇 토큰과 토스 증권 api 키를 보관할 .env 파일 샘플도 만들어줘'
.env 파일은 유출되면 안되는 토큰과 api키를 담아두는 보안장치입니다.
코드에 토큰과 키를 직접 넣어서 사용하기 보다는 이렇게 env 파일을 통해 진행하는 것을 추천드립니다.
코드가 나왔으면 AI가 만들어준 py 파일을 서버로 옮깁니다.
2편에서 눌렀던 SSH 버튼으로 브라우저 접속 창을 열고 오른쪽 위 파일 업로드를 누릅니다.

올린 파일은 홈 폴더에 들어갑니다.
터미널을 쓴다면 아래 한 줄로도 됩니다.
scp main.py 계정이름@서버IP:~/
이제 .env 파일을 만들 차례입니다.
nano는 서버에서 바로 파일을 고칠 수 있는 편집기입니다.
nano ~/.env
창이 열리면 값을 채워 넣습니다.
따옴표 없이 등호 뒤에 값만 적습니다.
TOSS_CLIENT_ID=발급받은_클라이언트_ID
TOSS_CLIENT_SECRET=발급받은_시크릿
TELEGRAM_TOKEN=3편에서_받은_봇_토큰
TELEGRAM_CHAT_ID=3편에서_받은_채팅_ID
다 적었으면 Ctrl+O를 누르고 Enter로 저장한 뒤 Ctrl+X로 나옵니다.
마지막으로 다른 사람이 읽지 못하게 권한을 잠급니다.
chmod 600 ~/.env
여기까지 완료하셨다면 우리가 만든 봇을 systemd 서비스로 등록해야 합니다.
systemd는 혹시 문제가 생겨 봇이 종료되더라도 다시 실행시켜주는 일을 합니다.
먼저 서비스 파일을 만듭니다.
sudo nano /etc/systemd/system/mybot.service
아래 내용을 넣고 계정 이름과 파일 이름만 자기 것으로 바꿉니다.
[Unit]
Description=My Trading Bot
After=network-online.target
[Service]
User=계정이름
WorkingDirectory=/home/계정이름
EnvironmentFile=/home/계정이름/.env
ExecStart=/usr/bin/python3 /home/계정이름/mybot.py
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
Restart=always가 봇이 종료됐을 때 다시 켜 주는 줄입니다.RestartSec=3은 3초 뒤에 켠다는 뜻입니다.
EnvironmentFile은 아까 만든 .env를 읽어 오는 줄이라 코드에 키를 적지 않아도 됩니다.
다 적었으면 등록하고 바로 실행합니다.
sudo systemctl daemon-reload
sudo systemctl enable --now mybot
enable을 붙였기 때문에 서버가 재부팅되어도 봇이 스스로 켜집니다.
잘 돌고 있는지는 이렇게 확인합니다.
systemctl status mybot

이 아래부턴 선택사항입니다.
터미널 명령을 실행할 수 있는 AI 코딩 도구라면(클로드, 코덱스 등) 서버를 관리 시킬 수 있습니다.
저는 클로드 코드에게 서버 접속 키를 주고 로그와 서비스 상태를 확인하게 합니다.
수정이 필요하거나 문제가 생겼을 경우 이렇게 질문합니다.
'지금 텔레그램 봇이 반응을 안하는데 ssh서버 한번 확인해줘'
이전엔 제가 일일이 서버에 접속해서 명령어를 입력하고 로그를 복사해 알려주어야 했는데
키를 주고 나서는 그럴 일이 없어졌습니다.
키는 내 컴퓨터에서 만듭니다.
윈도우라면 Git Bash에서 아래를 칩니다.
ssh-keygen -t ed25519 -f ~/.ssh/bot_agent_key -C 서버계정이름
bot_agent_key가 개인키이고 bot_agent_key.pub가 공개키입니다.
서버에 올리는 것은 공개키 쪽입니다.
맨 뒤 -C에 적는 주석을 서버 계정 이름으로 맞춰야 합니다.
구글 클라우드가 이 주석을 리눅스 계정 이름으로 읽기 때문입니다.
이제 공개키 내용을 확인합니다.
cat ~/.ssh/bot_agent_key.pub
ssh-ed25519로 시작해서 주석으로 끝나는 한 줄 전체를 복사합니다.ssh-keygen -lf가 보여주는 지문은 다른 값이라 그것을 넣으면 접속되지 않습니다.
콘솔에서 VM 인스턴스를 열고 수정을 누른 뒤 SSH 키 항목으로 내려갑니다.
항목 추가를 누르면 빈 칸이 생깁니다.
거기에 공개키를 붙여 넣고 저장합니다.

잠시 기다리면 서버에 저절로 반영됩니다.
이제 AI에게 개인키 위치와 서버 주소를 알려주면 됩니다.
대신 만약을 대비해 제약을 걸어두었습니다.
| 걸어 둔 제약 | 까닭 |
|---|---|
| AI에게 줄 키를 따로 만들기 | 문제가 생기면 그 키만 지우면 됩니다. 브라우저로 접속하는 길은 그대로 남습니다 |
| 읽기 전용으로만 사용 | 로그와 서비스 상태만 보게 하고 고치는 일은 제 승인을 거칩니다 |
| 코드는 내가 올리기 | 서버 파일을 직접 고치게 하지 않고 제 컴퓨터에서 고쳐 다시 올립니다 |
| 구조를 바꾸는 일은 먼저 묻기 | 작은 수정은 바로 하되 구조를 바꾸는 일은 제안을 받고 제가 정합니다 |
구글 클라우드 서버라면 키를 등록할 때 한 가지를 조심해야 합니다. 서버의 authorized_keys 파일에만 손으로 넣은 키는 조용히 사라집니다.
마지막으로 백테스트를 진행할 때 주의 해야하는 부분이 있습니다.
사람이 실수하듯 AI도 실수합니다.
백테스트 결과가 너무 아름답다면 한번 의심해보는 것이 좋습니다.
'단순 보유보다 더 많이 벌수가 있어? 너무 과한데 백테스트 엔진 다시 체크해줘'
이후 실제로 백테스트 코드에 문제가 있었다는 사실을 발견했습니다.
이런 실수나 오류가 발생했을 땐 AI에게 감정적으로 화를 내거나 욕설을 하기보다는
실수가 왜 발생했는지 원인을 파악하고 같은 실수를 반복하지 않는 구조를 AI와 같이 고민하며 설계하는 것이 좋습니다.
이것으로 나만의 자동매매 봇 만들기 시리즈를 마칩니다.
여러분 모두 여러분만의 전략을 통해 성공적인 투자 생활이 되시기를 바라겠습니다.
이 글은 제가 직접 해 본 기록이고 투자 권유가 아닙니다. AI가 만들어 준 코드는 그대로 믿지 말고 소액으로 충분히 돌려 본 뒤에 쓰세요. 주문 금액 상한을 코드에 넣어 두면 실수가 커지지 않습니다. 자동매매는 코드 한 줄의 실수가 그대로 주문으로 나갑니다.
관련 글: 나만의 24시간 자동매매봇 만들기 3편: 텔레그램 봇 만들기 · 나만의 24시간 자동매매봇 만들기 1편: 증권사 API 키 발급 · 이 블로그에 대해
'만든 것들' 카테고리의 다른 글
| 나만의 24시간 자동매매봇 만들기 3편: 텔레그램 봇 만들기 (0) | 2026.09.16 |
|---|---|
| 나만의 24시간 자동매매봇 만들기 2편: 구글 클라우드 무료 서버 만들기 (0) | 2026.09.16 |
| 나만의 24시간 자동매매봇 만들기 1편: 증권사 API 키 발급 (0) | 2026.09.15 |
| 클로드 코드로 웹사이트 만들기: 금융 계산기 8개를 하루에 만들어 올린 기록 (0) | 2026.09.12 |
| 한 계좌로 여러 퀀트 전략 돌리기: 자동매매 봇에 가상 장부가 필요한 이유 (0) | 2026.09.06 |