주식이나 코인 등 상품의 가격을 조회하기 위해서 사용하는 유명한 서비스로 investing.com과 tradingview.com이 있습니다.
이 글에서 TradingView를 이용해서 자동 매매할 수 있는 방법을 공유하고자 합니다.
이는 암호화폐뿐만 아니라 주식, 외환 등 다양한 자산에 적용할 수 있습니다.

TradingView의 주요 기능
- 고급 차트 시스템: HTML5 기반으로 설계된 차트는 직관적이며 다양한 기술적 분석 도구를 제공합니다.
- 스크리너 기능: 암호화폐, 주식, 외환 등 다양한 자산의 스크리너를 통해 거래 기회를 탐색할 수 있습니다.
- 서버 측 알림 시스템: 실시간 시장 움직임에 대한 알림을 제공하여 빠른 대응이 가능합니다.
- 소셜 네트워크: 다른 트레이더들과 아이디어를 공유하고 토론할 수 있는 기능을 지원합니다.
- 다양한 계정 옵션: 초보자를 위한 기본 계정부터 전문가를 위한 프리미엄 계정까지 선택 가능.
장점
- 다양한 시장과 거래소를 지원하며, 암호화폐뿐만 아니라 주식, 선물, 통화 등도 분석이 가능합니다.
- 모바일(iOS, Android) 및 웹 플랫폼에서 모두 사용 가능하여 편리함을 제공합니다.
단점
- 라이선스가 없기 때문에 규제 감독이 부족하며, 이에 따른 잠재적 위험이 존재합니다.
- 일부 사용자 리뷰에서 고객 지원 품질에 대한 불만이 언급되었습니다.
TradingView의 alert을 웹훅으로 파이썬 fastapi 서버에서 받고 자동 매수/매도할 수 있는 방법을 설명합니다.
1. 먼저, 투자 종목을 선택하고 알림을 생성합니다.
- 트레이딩뷰에서 차트를 열고, 원하는 전략 (Strategy)을 설정합니다.
- 알림 버튼(Alert)을 클릭하여 새 알림을 생성합니다.
- 메시지에 JSON 형식의 데이터를 작성합니다. 예를 들어:
{
"symbol": "{{ticker}}",
"price": "{{close}}",
"side": "buy",
"qty": 0.01
}


- 그리고 웹훅 URL을 입력합니다 (예:
https://yourserver.com/webhook
). - 다음으로 “Webhook URL”을 체크하고, FastAPI 서버의 URL을 입력합니다.
2. FastAPI 서버 구성
FastAPI 서버를 설정하여 트레이딩뷰에서 전송된 웹훅 데이터를 처리합니다.
from fastapi import FastAPI, Request
import json
app = FastAPI()
@app.post("/webhook")
async def webhook_handler(request: Request):
data = await request.json()
print("Received data:", data)
# 주문 처리 로직
symbol = data.get("symbol")
price = data.get("price")
side = data.get("side")
qty = data.get("qty")
# 예: 바이낸스 API로 매수/매도 요청
if side == "buy":
execute_buy_order(symbol, qty, price)
elif side == "sell":
execute_sell_order(symbol, qty, price)
return {"status": "success", "message": f"Order executed for {symbol}"}
def execute_buy_order(symbol, qty, price):
print(f"Buying {qty} of {symbol} at {price}")
# 빗썸, 업비트, 바이낸스 등 API 호출 로직 추가
def execute_sell_order(symbol, qty, price):
print(f"Selling {qty} of {symbol} at {price}")
# 빗썸, 업비트, 바이낸스 등 API 호출 로직 추가
2) 바이낸스 연동 예시
from binance.client import Client
# API 키와 시크릿 설정
client = Client(api_key="your_api_key", api_secret="your_api_secret")
def execute_buy_order(symbol, qty, price):
order = client.order_market_buy(
symbol=symbol,
quantity=qty
)
print(order)
def execute_sell_order(symbol, qty, price):
order = client.order_market_sell(
symbol=symbol,
quantity=qty
)
print(order)
3. 주의사항
- 보안: 웹훅 URL은 외부에 노출되지 않도록 주의하세요.
- 오류 처리: 주문 실패 시 재시도 로직을 추가하는 것이 좋습니다.
- 실시간성: 거래소 API 호출 시 지연 시간이 발생할 수 있으므로 빠른 응답을 위한 최적화를 고려하세요.
이 과정을 참고하면 트레이딩뷰와 FastAPI를 활용한 자동 매매 시스템을 구축이 가능합니다.
가장 중요한 것은
TradingView에서 매수/매도 타이밍을 잘 예측할 수 있는 Strategy 선택하는 것!!!