경제

nh투자증권 Namuh PLUG로 미국주식 루틴 바꾸기

운부키 2026. 9. 22. 13:37
반응형

- NH투자증권으로부터 경제적 대가를 받고 제작되었음
 

미국장 보려고 매일 밤늦게까지 화면 보고 계신가요? Namuh PLUG로 미국주식 루틴 바꾸기

 
서머타임 기준으로 밤 10시 반, 겨울이면 밤 11시 반. 피곤한 몸으로 침대에 누워 스마트폰 불빛을 끄지 못한 채 프리마켓과 본장 호가창을 들여다보던 날들이 있었습니다.
 
 
 
"오늘 테슬라나 애플이 내가 찜해둔 지지선까지 내려오면 꼭 잡아야 하는데..."
 
 
 
"내가 잠든 새벽에 변동성이 커지면 가격 흐름이 어떻게 될까?"

 
결국 새벽 1~2시까지 버티다 눈이 충혈된 채 잠들고, 새벽 4시에 화들짝 놀라 깨서 잔고를 확인하며 하루를 시작하는 만성 피로 루틴. 미국주식을 직접 매매해 본 서학개미라면 누구나 깊이 공감하실 겁니다.
 
 
 
하지만 밤새 호가창을 뚫어져라 지키고 서 있는다고 주가가 내 생각대로 움직여주는 것은 아니죠. 오히려 피로가 누적된 상태에서는 감정에 휩쓸려 충동적인 뇌동매매로 이어지기 일쑤였습니다.
 
 
 
 
오늘은 NH투자증권의 Open API 서비스인 'Namuh PLUG(나무 플러그)'와 생성형 AI(ChatGPT)를 활용해, 밤새 화면을 지키던 피로한 일상을 '데이터 기반의 똑똑한 루틴'으로 바꾼 실제 구현 과정과 솔직한 후기를 정리해 드립니다.

 

1. PROBLEM: 무엇이 나를 밤새 깨어있게 만들었을까?

 
기존 저의 미국주식 확인 루틴은 철저히 '수동'이자 '감정'에 의존하고 있었습니다.

  • 불안감에 의한 강박적 새로고침: 내가 정해둔 가격에 올지 안 올지도 모르는데 계속 시세 앱을 열어봄
  • MTS 기능의 한계: 일반적인 예약주문이나 단순 알림 기능은 시세 지연이 발생하거나, 복합적인 조건(장중 최저가 터치 여부, 전일 대비 변동률 등)을 내 입맛대로 정밀하게 분석해 대응하기 어려움
  • 일상과 수면의 붕괴: 새벽잠을 설치다 보니 다음 날 본업 컨디션이 무너지고, 장중 흔들림에 감정적으로 대응함

핵심 문제는 "내가 밤새 호가창을 감시하지 않아도, 내가 세운 원칙에 맞춰 실시간 데이터를 확인하고 기록해 줄 나만의 시스템이 없었다"는 점이었습니다.

2. MISSION: 오늘 해결할 목표

"밤새 스마트폰을 붙잡지 않아도, 내가 정한 조건(지지선/최저가)에 따라 미국주식 시세 데이터를 감시하고 대응하는 스마트한 루틴 만들기"

 
단순히 남이 만들어둔 프로그램을 무작정 쓰는 것이 아니라, 내가 평소에 원했던 구체적인 투자 기준(목표 지지선, 당일 최저가 체크 등)을 세우고, AI에게 요청해 코드로 변환한 뒤, 증권사 정식 API로 직접 연결해보는 것입니다.

반응형

3. EXPERIENCE: 실제 연결과 구현 과정

개발자가 아니더라도 단계별 흐름만 알면 누구나 차근차근 따라 할 수 있습니다.

 
STEP 1. Namuh PLUG에서 안전한 '접속 열쇠' 발급받기

 

 
먼저 NH투자증권의 OpenAPI 전용 포털인 나무 플러그(Namuh PLUG) 웹사이트에 접속했습니다.

 

  1. 서비스 신청 후 내 계좌 전용 App KeySecret Key를 발급받습니다.
  2. 이 키는 내 컴퓨터와 증권사 서버가 안전하게 통신하기 위한 고유 식별 열쇠입니다.

보안 체크포인트:

발급받은 App Key와 Secret Key는 내 계좌의 자물쇠와 같습니다. 절대로 챗GPT 채팅창이나 깃허브 같은 공개 웹사이트에 입력하지 마세요! 키는 나중에 내 컴퓨터 안에서만 직접 입력해야 안전합니다.

 
 
STEP 2. 개발자 문서 확인 및 최적의 API 선정

 
나무 PLUG 사이트의 [API 가이드]를 꼼꼼히 살펴보며 AI와 상의한 결과, 30초~1분 주기 시세 모니터링에 가장 최적화된 API를 찾았습니다. 바로 해외주식 현재가 조회가 포인트입니다.

  • 요청 파라미터: 복잡한 날짜나 구분값 없이 종목코드(iem_cd: "TSLA") 하나만 전송
  • 응답 데이터: 현재가(trdprc), 전일대비 등락률(pctchng), 당일 최저가(low)를 한 번에 직관적으로 제공

이 사양을 확인하고 챗GPT에게 "토큰 1회 발급 24시간 재사용 + 30초 주기 시세 모니터링 + 목표가 도달 시 1회 알림" 로직을 요청했습니다.
 

STEP 3. 실제 파이썬 모니터링 스크립트 완성

 
AI가 작성해 준 파이썬 완성 코드는 다음과 같습니다.

import time
import requests
from datetime import datetime, timedelta

# ============================================================
# 1. 사용자 설정 (내 컴퓨터에서만 안전하게 입력)
# ============================================================
APPKEY = "여기에_본인의_APPKEY"
APPSECRETKEY = "여기에_본인의_APPSECRETKEY"

# 감시할 종목 (TSLA = 테슬라, AAPL = 애플)
STOCK_CODE = "TSLA"

# 목표 지지선 가격
TARGET_PRICE = 210.00

# 조회 주기 (30초 권장)
CHECK_INTERVAL = 30

# ============================================================
# 2. NH PLUG API 설정
# ============================================================
BASE_URL = "https://api.nhplug.com:8443"
TOKEN_URL = f"{BASE_URL}/oauth2/token"
CURRENT_PRICE_URL = f"{BASE_URL}/gbstock/quote/v1/current"

# ============================================================
# 3. Access Token 관리 (중복 발급 방지 및 24시간 재사용)
# ============================================================
access_token = None
token_expire_time = None

def get_access_token():
    global access_token, token_expire_time
    print("🔑 Access Token 발급 중...")

    headers = {"Content-Type": "application/x-www-form-urlencoded"}
    data = {
        "appkey": APPKEY,
        "appsecretkey": APPSECRETKEY,
        "grant_type": "client_credentials",
        "scope": "oob"
    }

    response = requests.post(TOKEN_URL, headers=headers, data=data, timeout=10)
    response.raise_for_status()
    result = response.json()

    if "access_token" not in result:
        raise RuntimeError(f"Access Token 발급 실패: {result}")

    access_token = result["access_token"]
    expires_in = int(result.get("expires_in", 86400))
    token_expire_time = datetime.now() + timedelta(seconds=expires_in - 300)

    print("✅ Access Token 발급 완료")
    print(f"⏰ 토큰 재사용 가능: {token_expire_time:%Y-%m-%d %H:%M:%S}\n")
    return access_token

def ensure_access_token():
    global access_token, token_expire_time
    if access_token is None or token_expire_time is None or datetime.now() >= token_expire_time:
        return get_access_token()
    return access_token

# ============================================================
# 4. 현재가 조회 (/gbstock/quote/v1/current)
# ============================================================
def get_current_price():
    token = ensure_access_token()
    headers = {
        "Content-Type": "application/json; charset=UTF-8",
        "Authorization": f"Bearer {token}"
    }
    data = {
        "Input_0": {
            "iem_cd": STOCK_CODE
        }
    }

    response = requests.post(CURRENT_PRICE_URL, headers=headers, json=data, timeout=10)
    response.raise_for_status()
    result = response.json()

    if result.get("rsp_cd") != "00000":
        raise RuntimeError(f"시세 조회 실패: {result}")

    output = result.get("Output_0")
    if not output:
        raise RuntimeError(f"Output_0 데이터가 없습니다: {result}")

    current_price = float(output["trdprc"])
    pct_change = float(output["pctchng"])
    day_low = float(output["low"])

    return current_price, pct_change, day_low

# ============================================================
# 5. 목표가 감시 로직
# ============================================================
target_alerted = False

def check_target_price(current_price):
    global target_alerted
    if current_price <= TARGET_PRICE:
        if not target_alerted:
            print("\n" + "=" * 65)
            print("🎯 [조건 도달] 목표가 이하 감지! 매수 타이밍입니다")
            print(f"   종목   : {STOCK_CODE}")
            print(f"   현재가 : ${current_price:.2f}")
            print(f"   목표가 : ${TARGET_PRICE:.2f}")
            print("=" * 65 + "\n")
            target_alerted = True
            return True
    return False

# ============================================================
# 6. 메인 모니터링 실행
# ============================================================
def monitor():
    print("=" * 60)
    print("🌙 미국주식 밤샘 모니터링 시작 (Namuh PLUG)")
    print("=" * 60)
    print(f"종목       : {STOCK_CODE}")
    print(f"목표가     : ${TARGET_PRICE:.2f}")
    print(f"조회주기   : {CHECK_INTERVAL}초")
    print("=" * 60 + "\n")

    while True:
        try:
            current_price, pct_change, day_low = get_current_price()
            now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

            print(f"[{now}] {STOCK_CODE} ${current_price:.2f} ({pct_change:+.2f}%) | 오늘 최저 ${day_low:.2f}")

            if current_price <= TARGET_PRICE:
                check_target_price(current_price)
            else:
                print(f"💤 현재가 ${current_price:.2f} (최저가 ${day_low:.2f}) - 아직 목표가에 도달하지 않았습니다. 편안히 주무세요.\n")

            time.sleep(CHECK_INTERVAL)

        except KeyboardInterrupt:
            print("\n🛑 모니터링을 종료합니다.")
            break
        except Exception as e:
            print(f"\n⚠️ 오류 발생: {e} (30초 후 재시도)\n")
            time.sleep(30)

if __name__ == "__main__":
    monitor()

 
 [초보자 필독] 파이썬을 처음 써보더라도 메모장으로 1분 만에 실행하는 법!

 
"코딩 프로그램도 없는데 이 코드를 어디에 넣어서 돌리나요?" 전혀 걱정하실 필요 없습니다. 복잡한 개발 툴 없이 윈도우 기본 메모장과 검은 창(명령 프롬프트)만 있으면 누구나 1분 만에 실행할 수 있습니다.

  1. 파이썬 설치: 파이썬 공식 홈페이지(python.org)에서 설치 파일을 받아 설치합니다. (※ 설치 창이 떴을 때 맨 밑의 Add python.exe to PATH 네모 박스를 반드시 체크해 주세요!)
  2. 필수 도구 설치: 윈도우 검색창에 cmd를 입력해 [명령 프롬프트]를 연 뒤, 아래 명령어를 입력하고 엔터를 누릅니다.
     
    python -m pip install requests
  3. 메모장에 저장: 윈도우 [메모장]을 켜서 위 코드를 그대로 붙여넣고, APPKEY와 APPSECRETKEY 자리에 내 실제 발급 키를 넣습니다. 그 후 다른 이름으로 저장을 눌러 바탕화면에 파일 이름을 stock_monitor.py로 저장합니다. (파일 형식은 '모든 파일'로 선택!)
    • 저장 위치: 바탕화면
    • 파일 형식: 기본으로 설정된 텍스트 문서(.txt)를 클릭해 반드시 모든 파일로 바꿔주세요!
    • 파일 이름: stock_monitor.py
    (※ 만약 '모든 파일'로 바꾸지 않으면 뒤에 .txt가 몰래 붙어서 stock_monitor.py.txt로 저장됩니다. 이렇게 되면 컴퓨터가 파이썬 프로그램으로 인식하지 못해 오류가 나니, 꼭 파일 형식을 '모든 파일'로 선택하고 저장해 주세요!)
  4. 실행하기: 다시 검은 창(CMD)으로 가서 바탕화면 경로로 이동한 뒤 파이썬 파일을 실행합니다.(※ 한글 윈도우에서 경로 오류가 나면 cd 바탕화면을 입력해 주세요.)
    cd Desktop
    python stock_monitor.py

(※ 한글 윈도우에서 경로 오류가 나면 cd 바탕화면을 입력해 주세요.)

STEP 4. 직접 실행해 보며 배운 스마트한 세팅 팁

엔터를 누르자마자 터미널 검은 창에 딜레이 없이 실시간 시세 데이터가 정돈되어 찍혀 나왔습니다.

이 과정에서 챗GPT와 대화하며 알게 된 Namuh PLUG의 효율적이고 완성도 높은 활용 팁 두 가지가 매우 인상 깊었습니다.

 데이터 기반 루틴을 만드는 핵심 팁

  1. 토큰 1회 발급 후 재사용: 증권사 시스템과 안정적으로 통신하기 위해, 시세를 확인할 때마다 매번 토큰을 새로 받지 않고 프로그램 시작 시 발급받은 토큰을 24시간 동안 알뜰하게 재사용하도록 구성했습니다.
  2. 단계별 기능 확장 (검증 ➔ 실행): 무작정 전체 과정을 한 번에 돌리기보다, 먼저 시세 감시와 알림을 통해 내가 세운 가격 기준이 시장에서 정확히 작동하는지 데이터로 검증한 뒤 다음 단계로 확장하는 방식이 훨씬 정교하고 안정적인 투자 루틴을 완성해 줍니다. 특히 조건에 도달했을 때 딱 1회만 강조 알림을 띄우고 그 이후엔 화면을 도배하지 않는 디테일한 설계가 돋보였습니다.

 
 
또한 코드를 실행하기 전, 나무 PLUG 공식 웹사이트의 [대시보드 / API 콘솔] 메뉴에서 종목코드를 입력해 실시간 호가와 주요 시세 지표를 직관적인 UI로 미리 확인해 볼 수 있었던 점도 데이터 구조를 이해하는 데 큰 도움이 되었습니다.
 

4. RESULT: 무엇이 달라졌을까? (Before & After)

 
Namuh PLUG를 투자 루틴에 도입한 후, 저의 저녁과 밤은 완전히 달라졌습니다.

비교 항목기존 미국주식 확인 루틴Namuh PLUG 활용 후 루틴

 
밤새 스마트폰의 파란 불빛을 보지 않아도 된다는 것 하나만으로도 수면의 질이 완전히 회복되었고, 장중 가격 흔들림에 흔들리지 않고 "내가 세운 원칙과 기준이 시장에서 어떻게 반응했는지"를 데이터로 차분하게 복기할 수 있게 되었습니다.

 
한 걸음 더: 나만의 투자 환경 확장하기

 
기본적인 시세 데이터 조회가 익숙해졌다면, 다음과 같은 기능을 추가해 루틴을 더욱 편리하게 발전시킬 수 있습니다.

  • 호가(best_ask / best_bid) 감시: 목표가 도달 시 현재 매수/매도 1호가 정보까지 함께 로그에 띄우기
  • 장 운영 구분(marketperiod_cls) 활용: 프리마켓, 정규장, 애프터마켓 상태를 구분해 장별 맞춤 알림 만들기
  • 메신저 알림 연동: 자는 동안 내가 설정한 지지선 가격에 도달했을 때만 텔레그램이나 디스코드로 폰 알림 받기

MTS의 닫힌 화면을 벗어나, 내가 원하는 편의 기능을 레고 블록처럼 얼마든지 덧붙일 수 있다는 점이 바로 Open API의 가장 큰 매력입니다.

5. REVIEW: 실제 사용자 관점 총평

 
처음에는 'Open API'라는 단어만 듣고 "개발자나 퀀트 전문가들만 쓰는 복잡한 영역"이라고 생각했습니다.
하지만 직접 부딪혀보니, AI의 도움을 받으면 비개발자라도 내 투자 기준을 명확하게 구체화하고 훌륭한 시스템으로 확장할 수 있다는 것을 실감했습니다.

  • 이런 분들께 특히 추천합니다:
    • 미국장 시차 때문에 밤마다 잠을 설치는 서학개미
    • MTS의 기본 주문 조건만으로는 내 투자 시나리오를 온전히 담기 답답했던 분
    • 충동적인 감정 매매를 줄이고 데이터와 원칙에 기반한 투자 습관을 만들고 싶은 분

 
 
밤새 호가창을 지키고 있는다고 주가가 올라가는 것은 아닙니다. 반복적인 시세 감시와 데이터 확인은 똑똑한 API 도구에 맡겨두고, 우리는 일상의 수면과 건강한 투자 원칙을 지키는 루틴으로 바꿔보는 건 어떨까요?

https://myip.kr/QvgKR

NAMUH PLUG OpenAPI - NH투자증권

www.nhplug.com


- 투자자는 금융투자상품<주식>에 대하여 증권사로부터 충분한 설명을 받을 권리가 있으며, 투자전 상품설명서 등을 반드시 읽어보시기 바랍니다.

 
- 금융투자상품(주식)은 <자산가격 변동>, <환율 변동>, <신용등급 하락> 등에 따라 투자원금의 손실(0~100%)이 발생할 수 있으며, 그 손실은 투자자에게 귀속됩니다.  
- 국내주식매매시 수수료 온라인 0.01%~0.50%, 오프라인 0.40%~0.50% (소수점셋째자리 반올림기준, 거래금액별/매체별 상이, KRX, NXT 포함)이며, 기타 수수료에 대한 상세내용은 홈페이지 등을 참고하시기 바랍니다. NXT(넥스트레이드)는 자본시장법상 다자간매매체결회사로 대체거래소(ATS:  Alternative Trading System)입니다.
- 해외주식매매시 수수료 및 제비용 발생하며, 상세 내용은 홈페이지 등을 참고하시기 바랍니다. (예시) 미국주식 매매시 수수료 0.25%( 온라인 기준) 및 제비용 (미국주식 매도시 SEC Fee(0.00206%)) (예시) 중국주식 매매시 수수료 0.3%(선강퉁/후강퉁 동일, 온라인 기준) 및 제비용(중국 선강퉁/후강퉁 기준, 매수시 Handling Fee 0.00341%, Securities Management Fee 0.002%, Transfer Fee 0.003%, 매도시 Stamp Fee(인지세) 0.05%, 온/오프라인 동일)
NH투자증권 준법감시인 심사필 제2026-1632호(2026-09-21~2026-12-20)

반응형