글

파이썬 pytz와 datetime으로 완성하는 글로벌 장 시작 시간 정교화: 뉴욕·런던·시드니 오버랩 구간 자동 플래그 생성법

  반갑습니다! 글로벌 시장의 흐름을 한눈에 읽고 싶어 하시는 분들을 위해, 오늘은 파이썬 코드로 전 세계 주요 증권시장인 뉴욕, 런던(전경련/유럽), 시드니의 장 시작 시간과 겹치는(Overlap) 골든타임을 정교하게 잡아내는 방법을 준비했습니다. 오늘은 파이썬의 표준 라이브러리인 datetime 과 강력한 타임존 라이브러리인 pytz 를 활용해, 주요 글로벌 증시(뉴욕, 런던, 시드니)의 개장 시간을 정밀하게 파악하고 이들이 동시에 열리는 '오버랩(Overlap) 구간'을 자동으로 판별하여 플래그를 생성하는 실전 코드 를 완벽하게 파헤쳐 보겠습니다. 1. 글로벌 증시 시간 관리의 핵심: 왜 pytz 인가? 전 세계 시간대를 다룰 때 단순 시차 계산(-14시간 등)만 믿었다가는 서머타임 적용 시점에 큰 오차가 발생합니다. pytz 라이브러리는 각 국가의 복잡한 서머타임 규칙까지 완벽하게 반영하므로, 금융 데이터 분석이나 자동매매 시스템에서 필수적으로 쓰이는 도구입니다. 주요 증권시장 타임존 (IANA 기준) 뉴욕 (NYSE/NASDAQ): America/New_York 런던 (LSE - 유럽 금융 중심): Europe/London 시드니 (ASX): Australia/Sydney 2. 파이썬 구현: 오버랩 구간 자동 플래그 생성 코드 아래 코드는 UTC 기준 혹은 특정 로컬 타임 기준으로 현재 시각을 파악한 뒤, 각 시장이 정규 개장 시간 내에 있는지 확인하고 모든 시장이 겹치는 황금 시간대를 자동으로 True / False 플래그로 반환해 주는 예제입니다.

[파이썬 자동매매] CCXT 웹소켓(WebSocket)으로 해외 거래소 호가창 실시간 수집 및 DataFrame 재구성

 안녕하세요! 요즘 코인 자동매매나 알고리즘 트레이딩에 푹 빠져 계신가요? 트레이딩봇을 만들 때 가장 심장이 되는 데이터가 바로 실시간 호가창(Order Book) 정보인데요. 오늘은 개발자들 사이에서 끝판왕 라이브러리로 불리는 CCXT 와 실시간 데이터의 핵심인 웹소켓(WebSocket)을 결합하여, 해외 거래소의 오더북을 실시간으로 긁어오고 판다스(Pandas) 데이터프레임으로 깔끔하게 정리하는 방법을 완벽하게 파헤쳐 보겠습니다. 1. 왜 REST API 대신 웹소켓(WebSocket)과 CCXT를 써야 할까? 암호화폐 시장은 1초가 아니라 밀리초(ms) 단위로 가격이 급변합니다. REST API 방식: 우리가 흔히 쓰는 fetch_order_book() 방식은 거래소에 "지금 호가 줘!" 하고 요청(Request)을 보내야만 응답(Response)을 받는 구조입니다. 이걸 0.1초마다 반복하면 거래소로부터 IP 차단(Rate Limit) 폭탄을 맞기 딱 좋죠. WebSocket(웹소켓) 방식: 반면 웹소켓은 거래소 서버와 한 번 연결을 맺어두면, 호가창에 변동이 생길 때마다 거래소에서 알아서 실시간으로 데이터를 쑤셔 넣어주는(Push) 방식입니다. CCXT 라이브러리의 장점: 바이낸스, 바이비트, OKX 등 수십 개가 넘는 해외 거래소마다 API 규격이 다릅니다. 하지만 CCXT 를 사용하면 표준화된 코드로 이 거대한 거래소들을 일관되게 제어할 수 있어 개발 생산성이 하늘과 땅 차이로 올라갑니다. 2. 개발 환경 세팅 및 필수 라이브러리 설치 이 작업을 수행하기 위해서는 파이썬 환경이 필요하며, 실시간 비동기 처리를 위해 ccxt (특히 웹소켓을 지원하는 ccxt.pro )와 pandas 패키지가 필수적입니다. 터미널이나 명령 프롬프트에서 아래 명령어를 입력해 필요한 라이브러리를 설치해 주세요. pip install ccxt pandas asyncio 참고: CCXT는 프로 버전( ccxt.pro )을 통해 웹소켓 비동기 기...

트레이딩뷰 리페인팅(Repainting)의 공포와 Non-Repainting 수식 설계의 모든 것

  반갑습니다! 트레이딩 시스템 개발이나 지표 백테스팅을 하시다 보면 '백테스트에서는 승률이 90%인데 실전에서는 왜 이 모양이지? ' 하고 허탈했던 경험, 한 번쯤 있으실 겁니다. 그 주범이 바로 리페인팅(Repainting, 과거 데이터 왜곡 현상)인데요. 오늘은 실전 트레이더와 개발자분들이 가장 골치 아파하는 Non-Repainting(리페인팅 방지) 스크립트의 수식 구조 설계 원리 를 블로그 포스팅 스타일로 알기 쉽게 파헤쳐 보겠습니다. 트레이딩 자동화나 지표 개발을 공부하다 보면 가장 많이 마주치는 용어가 바로 '논리페인팅(Non-Repainting)'입니다. 백테스트 화면에서는 완벽한 승률을 자랑하던 신호가 실전 매매만 들어가면 뒤늦게 사라지거나 위치가 바뀌어 버리는 현상, 겪어보셨나요? 이번 글에서는 과거 데이터와 실시간 봉 완성 시점 사이에서 발생하는 시그널 왜곡의 원인을 짚어보고, 이를 원천 차단하는 견고한 수식 구조와 파인스크립트(Pine Script) 설계 노하우를 상세히 알아보겠습니다. 1. 왜 리페인팅(Repainting)은 발생할까? (근본 원인 분석) 리페인팅은 단순히 지표의 오류가 아니라, 컴퓨터가 과거 데이터와 실시간 데이터를 처리하는 방식의 허점 때문에 발생합니다. 주요 원인은 크게 세 가지로 나뉩니다. 완성되지 않은 현재 봉( close ) 참조: 실시간으로 움직이는 캔들의 종가는 봉이 마감되기 전까지 계속 변합니다. 마감 전의 close 값을 기준으로 신호를 내면, 봉이 끝났을 때 가격이 반대로 움직여 신호가 증발해 버립니다. 미래 데이터를 끌어오는 security() 함수의 오류: 상위 타임프레임(예: 일봉, 4시간봉)의 데이터를 현재 1분봉으로 가져올 때, 미래의 시점 데이터를 미리 참조( lookahead = barmerge.lookahead_on )하게 되면 백테스트에서는 신성장 동력처럼 보이지만 실전에서는 구현 불가능한 허상이 됩니다. 지그재그(Z...

트레이딩뷰 매매 승률 높이는 법: 손익비(RRR) 자동 계산 & 차트 박스 시각화 Pine Script

  안녕하세요! 오늘은 트레이딩뷰(TradingView)를 이용하시는 분들이라면 꼭 알아두어야 할 필수 팁을 들고 왔습니다. 매매할 때 손익비 계산하느라 머리 아프셨던 분들, 진입 가격에 맞춰 목표가와 손절가를 일일이 눈으로 짐작하느라 피곤하셨던 분들 많으시죠? 오늘 소개해 드릴 Pine Script 코드를 활용하면 매수(Long) 진입 직후 손익비가 어떻게 되는지, Target Price와 Stop Loss 영역이 차트 위에 깔끔한 박스(Box) 객체로 실시간 시각화됩니다. 트레이딩의 승률을 높이는 가장 확실한 방법 중 하나는 바로 '철저한 손익비 관리'인데요, 이 과정을 자동화하여 차트 가독성을 극대화하는 방법을 구글 SEO 최적화 블로그 포스팅 형식으로 상세히 정리해 드리겠습니다. 본문 바로 시작해 볼까요? 1. 트레이딩에서 손익비(Risk-Reward Ratio) 자동 계산이 필수적인 이유 주식, 코인, 해외선물 등 어떤 시장에서 매매를 하든 성공적인 트레이더들의 공통점은 '철저한 리스크 관리'에 있습니다. 매매 진입 전 손실을 볼 금액(Risk)과 수익을 볼 금액(Reward)의 비율을 명확히 계산하고 진입해야 장기적으로 살아남을 수 있습니다. 하지만 수동으로 매번 진입가, 손절가(Stop Loss, SL), 목표가(Take Profit, TP)를 계산하여 수평선을 긋고 손익비를 따지는 것은 번거롭고 실수를 유발하기 쉽습니다. 특히 급변하는 변동성 장세에서는 찰나의 순간에 대응해야 하므로 시각적인 직관성이 무엇보다 중요합니다. 이번에 구현할 Pine Script v5 기반의 손익비 자동 계산 및 박스 시각화 지표 는 이러한 불편함을 단번에 해결해 줍니다. 실시간 계산: 진입 가격 기준 설정된 손절 폭과 목표가 배율에 따라 손익비를 자동으로 산출합니다. 직관적인 박스 시각화: 수익 구간(Reward Zone)과 손실 구간(Risk Zone)을 서로 다른 색상의 박스(Box) 객체로 차트에 직접 그려줍니다. 리스크 관...

거짓 돌파(False Breakout) 필터링을 위한 커스텀 VWMA(거래량 가중 이동평균) 알고리즘 개발

이미지
  코인 선물이나 주식 매매를 하다 보면 가장 뼈아픈 순간 중 하나가 바로 ‘거짓 돌파(False Breakout, fakeout)’에 걸릴 때입니다. 저항선을 강력한 거래량과 함께 시원하게 뚫고 올라가는 줄 알고 롱 포지션을 잡았는데, 알고 보니 세력의 흔들기나 꼬리 달기였고 곧바로 급락해 손절매를 맞았던 경험, 다들 한 번쯤 있으실 겁니다. 시장에서 거래량은 거짓말을 하지 않는다고 하지만, 순간적인 물량 폭탄이나 일시적인 호가창 얇아짐으로 인해 표준 거래량 가중 이동평균(VWMA)도 왜곡되기 쉽습니다. 그래서 오늘은 표준 VWMA의 한계를 극복하고, 가중치 산정 알고리즘을 변형하여 거짓 돌파를 효과적으로 걸러내는 커스텀 VWMA 전략과 파인스크립트(Pine Script) 구현 아이디어 를 자세히 파헤쳐 보겠습니다! 1. 기존 VWMA의 한계와 거짓 돌파의 메커니즘 기존 VWMA의 공식 표준 VWMA는 특정 기간 동안의 가격에 거래량을 가중치로 곱한 뒤, 총 거래량으로 나누어 산출합니다. 왜 거짓 돌파에 취약할까? 이 공식의 가장 큰 약점은 ‘거래량이 많기만 하면 무조건 큰 가중치를 부여한다’는 점입니다. 세력들이 특정 가격대에서 물량을 떠넘기기 위해 일시적으로 수백만 주(또는 대규모 계약)를 터트리며 윗꼬리를 길게 남길 때, 표준 VWMA는 이 거대한 거래량에 그대로 반응하여 위로 훅 꺾여 올라갑니다. 트레이더는 이를 보고 "추세 전환이다" 하고 진입하지만, 실제로는 매도 물량이 쏟아진 '허수 거래량'이거나 '스톱헌팅(Stop Hunting)' 구간이기 때문에 곧바로 가격이 주저앉게 됩니다. 2. 거짓 돌파를 걸러내기 위한 커스텀 VWMA 알고리즘 아이디어 이러한 왜곡을 막기 위해 우리는 가중치 산정 알고리즘에 두 가지 변형을 줄 수 있습니다. ① 로그 스케일링(Logarithmic Volume Scaling) 도입 초대형 거래량이 터졌을 때, 거래량 숫자가 선형(Linear)으로 그대로 반영되면 지...

트레이딩뷰 파인스크립트 v5: request.financial()로 PER, PBR, 매출액 재무제표 차트 오버레이 및 수식화 가이드

  안녕하세요! 트레이딩뷰(TradingView)에서 나만의 맞춤형 지표를 만들며 효율적인 투자 전략을 고민하고 계신가요? 오늘은 많은 분들이 궁금해하시는 파인스크립트 v5(Pine Script v5)의 강력한 기능 중 하나인 request.financial() 함수를 활용해 기업의 재무제표 데이터(PER, PBR, 매출액)를 차트에 직접 오버레이하고 수식화하는 방법을 상세히 알아보겠습니다. 코딩이 조금 낯설더라도 차근차근 따라오시면 누구나 쉽게 나만의 재무 분석 차트를 완성하실 수 있습니다! 1. 파인스크립트 v5 request.financial() 함수란? 트레이딩뷰 파인스크립트 v5에서 제공하는 request.financial() 함수는 개별 종목의 재무제표 데이터(손익계산서, 재무상태표 등)를 스크립트 내에서 직접 호출할 수 있게 해주는 핵심 기능입니다. 기존에는 수동으로 재무 정보를 확인해야 했지만, 이 함수를 이용하면 차트 위에서 바로 기업의 펀더멘털 지표를 계산하고 조건검색이나 백테스팅에 적극적으로 활용할 수 있습니다. 주요 특징 및 장점 실시간 데이터 연동: 기업 실적 발표 및 공시에 따른 최신 재무 데이터를 스크립트로 신속하게 불러올 수 있습니다. 지표 커스텀마이징: 단순한 숫자 표기를 넘어, PER이나 매출액 추이를 이동평균선이나 커스텀 오실레이터 형태로 변환할 수 있습니다. 전략 결합: 이동평균선, RSI 같은 기술적 분석과 PER, 매출액 성장률 등의 기본적 분석을 결합한 퀀트 전략 구현의 발판이 됩니다. 2. request.financial() 기본 문법과 주요 파라미터 request.financial() 함수를 안정적으로 사용하기 위해서는 올바른 문법 구조와 재무 항목별 고유 식별자( fin_id )를 이해해야 합니다.