์•ˆ๋ณด๋ฉด ๋‹น์‹ ๋งŒ ์†ํ•ด Telegram ๋ด‡ ์ฃผ์‹ ์•Œ๋ฆผ ํŒŒ์ด์ฌ ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ

 



์ •๋ฆฌํ•ด์ฃผ๋ฉด:

  • ๐Ÿ“ˆ ๋ชฉํ‘œ๊ฐ€ ๋ŒํŒŒ ์•Œ๋ฆผ ๋ด‡ → Python

  • ๐Ÿš€ ๊ธ‰๋“ฑ/๊ธ‰๋ฝ ํผ์„ผํŠธ ์•Œ๋ฆผ → Python

  • ๐ŸŒŸ ์ด๋™ํ‰๊ท  ๊ณจ๋“ ํฌ๋กœ์Šค ์•Œ๋ฆผ → Python

  • ๐Ÿค– ํ…”๋ ˆ๊ทธ๋žจ ๋ช…๋ น์–ด๋กœ ์ข…๋ชฉ ์ถ”๊ฐ€/์‚ญ์ œ → Python

  • ๐Ÿ” ์ฆ๊ถŒ์‚ฌ API ์—ฐ๋™ ์ž๋™๋งค๋งค ๋ผˆ๋Œ€ → Python

๋ชจ๋‘ ์ด๋Ÿฐ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ์•ผ:

  • ์–ธ์–ด: Python 3.x

  • ์‹คํ–‰: python bot.py

  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ:

    • python-telegram-bot

    • yfinance

    • pandas

    • requests (์ฆ๊ถŒ์‚ฌ API์šฉ)

์ฆ‰, ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌํ•ด์„œ ํŒŒ์ด์ฌ ํŒŒ์ผ(.py) ๋กœ ์ €์žฅํ•ด์„œ ๋Œ๋ฆฌ๋ฉด ๋œ๋‹ค.

========

ํ•œ๊ตญํˆฌ์ž์ฆ๊ถŒ (REST API / Open API)

  • ํ•œ๊ตญํˆฌ์ž์ฆ๊ถŒ ์˜คํ”ˆAPI ๊ฐœ๋ฐœ์ž์„ผํ„ฐ (KIS Developers)
    ๐Ÿ‘‰ https://apiportal.koreainvestment.com/ — API ๋ฌธ์„œ, ์‹ ์ฒญ, ์ƒ˜ํ”Œ ์ฝ”๋“œ ์ œ๊ณต

    ์ด๊ณณ์—์„œ REST API & WebSocket ๊ธฐ๋ฐ˜ ์ž๋™๋งค๋งค API, ์‹œ์„ธ์กฐํšŒ, ์ฃผ๋ฌธ/๊ณ„์ขŒ ๊ธฐ๋Šฅ ๋“ฑ์„ ์‹ ์ฒญ ๋ฐ ๋ฌธ์„œ ํ™•์ธ ๊ฐ€๋Šฅ

๐Ÿฅˆ ํ‚ค์›€์ฆ๊ถŒ (Open API+ / REST API)

  • ํ‚ค์›€์ฆ๊ถŒ REST API / Open API ๊ณต์‹ ํŽ˜์ด์ง€
    ๐Ÿ‘‰ https://openapi.kiwoom.com/ — REST API ์„œ๋น„์Šค ์†Œ๊ฐœ ๋ฐ ์‹ ์ฒญ

    ๊ธฐ๋ณธ HTS ๊ธฐ๋ฐ˜ Open API+ ๋ชจ๋“ˆ๊ณผ ์ตœ๊ทผ REST API ์„œ๋น„์Šค๊ฐ€ ์žˆ์œผ๋ฉฐ ๊ณ„์ขŒ·์‹œ์„ธ·์ฃผ๋ฌธ ์—ฐ๋™ ๊ฐ€๋Šฅ

๐Ÿ“Œ ์ฐธ๊ณ :

  • ํ•œ๊ตญํˆฌ์ž์ฆ๊ถŒ์€ REST API + Websocket ๊ณต์‹ ์ง€์›์œผ๋กœ ์ž๋™๋งค๋งค ๊ตฌํ˜„์— ๋งŽ์ด ํ™œ์šฉ๋จ (OS/ํ™˜๊ฒฝ ์ œ์•ฝ ์ ์Œ)

  • ํ‚ค์›€์ฆ๊ถŒ ์ปค๋ฎค๋‹ˆํ‹ฐ๋‚˜ ์ž๋ฃŒ์‹ค์—์„œ HTS Open API+ ๋‹ค์šด๋กœ๋“œ ๋ฐ ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ๋„ ์ œ๊ณต๋จ


๐Ÿง  API ํ™œ์šฉ ํŒ

✔ API ๋“ฑ ์‹ ์ฒญ ์ „์— ์ฆ๊ถŒ ๊ณ„์ขŒ ๊ฐœ์„ค์€ ํ•„์ˆ˜
✔ REST API๋Š” ์›น ๊ธฐ๋ฐ˜ ์„œ๋ฒ„/ํด๋ผ์šฐ๋“œ์—์„œ๋„ ์—ฐ๋™ ๊ฐ€๋Šฅ
✔ HTS ๊ธฐ๋ฐ˜ API(Open API+)๋Š” Windows ํ™˜๊ฒฝ + HTS ์„ค์น˜ ํ•„์š”

์›ํ•˜๋ฉด ํ•œ๊ตญํˆฌ์ž์ฆ๊ถŒ API๋ฅผ Python์œผ๋กœ ์—ฐ๋™ํ•˜๋Š” ์ƒ˜ํ”Œ ์ฝ”๋“œ๋„ ๋ฐ”๋กœ ์ œ๊ณตํ•ด์ค„๊นŒ? (์˜ˆ: ํ† ํฐ ๋ฐœ๊ธ‰ → ์‹œ์„ธ์กฐํšŒ → ์ฃผ๋ฌธ๊นŒ์ง€) ๐Ÿง‘‍๐Ÿ’ป

========================

(ํ•œ๊ตญ ์ฃผ์‹๋„ ๊ฐ€๋Šฅ, ์ผ์ • ๊ฐ€๊ฒฉ ๋„๋‹ฌ ์‹œ ์•Œ๋ฆผ)

1. ์ค€๋น„๋ฌผ

  1. ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡ ์ƒ์„ฑ (BotFather)

  2. ๋ด‡ ํ† ํฐ

  3. ๋ณธ์ธ Chat ID

  4. Python ์„ค์น˜

  5. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: python-telegram-bot, yfinance

---------------------------

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ 

pip install python-telegram-bot yfinance

=========================
A-1.  ํ…”๋ ˆ๊ทธ๋žจ ์ฃผ์‹ ์•Œ๋žŒ๋ด‡ ์ฝ”๋“œ

import time
import yfinance as yf
from telegram import Bot

TOKEN = "์—ฌ๊ธฐ์—_๋ด‡ํ† ํฐ"
CHAT_ID = "์—ฌ๊ธฐ์—_๋ณธ์ธ_CHAT_ID"

bot = Bot(token=TOKEN)

# ๊ฐ์‹œํ•  ์ข…๋ชฉ
stocks = {
    "005930.KS": 70000,  # ์‚ผ์„ฑ์ „์ž ๋ชฉํ‘œ๊ฐ€
    "035420.KS": 200000 # ๋„ค์ด๋ฒ„ ๋ชฉํ‘œ๊ฐ€
}

def send_message(text):
    bot.send_message(chat_id=CHAT_ID, text=text)

def check_price():
    for ticker, target in stocks.items():
        stock = yf.Ticker(ticker)
        price = stock.history(period="1d")["Close"].iloc[-1]

        if price >= target:
            msg = f"๐Ÿšจ {ticker} ๋ชฉํ‘œ๊ฐ€ ๋„๋‹ฌ!\nํ˜„์žฌ๊ฐ€: {int(price):,}์›\n๋ชฉํ‘œ๊ฐ€: {target:,}์›"
            send_message(msg)
            print(msg)

while True:
    try:
        check_price()
        time.sleep(300)  # 5๋ถ„๋งˆ๋‹ค ์ฒดํฌ
    except Exception as e:
        print("์—๋Ÿฌ:", e)
        time.sleep(60)
===============================

======================

 ๋ŒํŒŒ ์•Œ๋ฆผ ์ „์šฉ ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡


pip install python-telegram-bot yfinance


A-2 .๋ŒํŒŒ ์•Œ๋ฆผ๋ด‡ ์ฝ”๋“œ

import time
import yfinance as yf
from telegram import Bot

TOKEN = "์—ฌ๊ธฐ์—_ํ…”๋ ˆ๊ทธ๋žจ_๋ด‡_ํ† ํฐ"
CHAT_ID = "์—ฌ๊ธฐ์—_๋ณธ์ธ_CHAT_ID"

bot = Bot(token=TOKEN)

# ์ข…๋ชฉ : ๋ชฉํ‘œ๊ฐ€
targets = {
    "005930.KS": 70000,   # ์‚ผ์„ฑ์ „์ž
    "000660.KS": 150000,  # SKํ•˜์ด๋‹‰์Šค
    "AAPL": 200          # ์• ํ”Œ
}

sent = set()  # ์ด๋ฏธ ์•Œ๋ฆผ ๋ณด๋‚ธ ์ข…๋ชฉ ์ค‘๋ณต ๋ฐฉ์ง€

def check_targets():
    for code, target_price in targets.items():
        stock = yf.Ticker(code)
        price = stock.history(period="1d")["Close"].iloc[-1]

        if price >= target_price and code not in sent:
            message = f"""
๐Ÿ“ˆ ๋ชฉํ‘œ๊ฐ€ ๋ŒํŒŒ ์•Œ๋ฆผ!

์ข…๋ชฉ: {code}
ํ˜„์žฌ๊ฐ€: {int(price):,}
๋ชฉํ‘œ๊ฐ€: {int(target_price):,}
์ƒํƒœ: ๋ชฉํ‘œ๊ฐ€ ๋ŒํŒŒ ์„ฑ๊ณต ๐Ÿš€
"""
            bot.send_message(chat_id=CHAT_ID, text=message)
            sent.add(code)

while True:
    try:
        check_targets()
        time.sleep(180)  # 3๋ถ„๋งˆ๋‹ค ์ฒดํฌ
    except Exception as e:
        print("์˜ค๋ฅ˜:", e)
        time.sleep(60)


-===============

A-3.๊ธ‰๋“ฑ ๊ธ‰๋ฝ ํผ์„ผํŠธ ์•Œ๋ฆผ๋ด‡

pip install python-telegram-bot yfinance


import time
import yfinance as yf
from telegram import Bot

TOKEN = "์—ฌ๊ธฐ์—_๋ด‡ํ† ํฐ"
CHAT_ID = "์—ฌ๊ธฐ์—_CHAT_ID"

bot = Bot(token=TOKEN)

# ๊ฐ์‹œ ์ข…๋ชฉ
watch_list = ["005930.KS", "000660.KS", "AAPL", "TSLA"]

UP_ALERT = 5     # +5% ์ด์ƒ ๊ธ‰๋“ฑ
DOWN_ALERT = -5  # -5% ์ดํ•˜ ๊ธ‰๋ฝ

alerted = set()

def check_change():
    for code in watch_list:
        stock = yf.Ticker(code)
        data = stock.history(period="2d")

        yesterday = data["Close"].iloc[-2]
        today = data["Close"].iloc[-1]

        change = (today - yesterday) / yesterday * 100

        key = f"{code}_{int(change)}"
        if (change >= UP_ALERT or change <= DOWN_ALERT) and key not in alerted:
            arrow = "๐Ÿš€ ๊ธ‰๋“ฑ" if change >= UP_ALERT else "๐Ÿ”ป ๊ธ‰๋ฝ"
            msg = f"""
{arrow} ํผ์„ผํŠธ ์•Œ๋ฆผ

์ข…๋ชฉ: {code}
์ „์ผ์ข…๊ฐ€: {int(yesterday):,}
ํ˜„์žฌ๊ฐ€: {int(today):,}
๋“ฑ๋ฝ๋ฅ : {change:.2f}%
"""
            bot.send_message(chat_id=CHAT_ID, text=msg)
            alerted.add(key)

while True:
    try:
        check_change()
        time.sleep(180)  # 3๋ถ„๋งˆ๋‹ค ์ฒดํฌ
    except Exception as e:
        print("์—๋Ÿฌ:", e)
        time.sleep(60)
======================================

์ด๋™ํ‰๊ท ์„  ๊ณจ๋“ ํฌ๋กœ์Šค ๋ฐœ์ƒ ์‹œ ํ…”๋ ˆ๊ทธ๋žจ์œผ๋กœ ์•Œ๋ฆผ ์˜ค๋Š” ๋ด‡

pip install python-telegram-bot yfinance pandas


A-4.๊ณจ๋“ ํฌ๋กœ์Šค ์•Œ๋ฆผ ๋ด‡ ์ฝ”๋“œ (5์ผ์„  / 20์ผ์„  ์˜ˆ์‹œ)

import time
import yfinance as yf
import pandas as pd
from telegram import Bot

TOKEN = "์—ฌ๊ธฐ์—_๋ด‡ํ† ํฐ"
CHAT_ID = "์—ฌ๊ธฐ์—_CHAT_ID"

bot = Bot(token=TOKEN)

watch_list = ["005930.KS", "000660.KS", "AAPL", "TSLA"]
SHORT_MA = 5
LONG_MA = 20

alerted = set()

def check_golden_cross():
    for code in watch_list:
        df = yf.download(code, period="3mo", interval="1d")

        df["MA_S"] = df["Close"].rolling(SHORT_MA).mean()
        df["MA_L"] = df["Close"].rolling(LONG_MA).mean()

        prev = df.iloc[-2]
        now = df.iloc[-1]

        # ๊ณจ๋“ ํฌ๋กœ์Šค ์กฐ๊ฑด: ์–ด์ œ๋Š” ์•„๋ž˜, ์˜ค๋Š˜์€ ์œ„
        if prev["MA_S"] < prev["MA_L"] and now["MA_S"] > now["MA_L"]:
            if code not in alerted:
                msg = f"""
๐ŸŒŸ ๊ณจ๋“ ํฌ๋กœ์Šค ๋ฐœ์ƒ!

์ข…๋ชฉ: {code}
๋‹จ๊ธฐ์„ ({SHORT_MA}์ผ): {now["MA_S"]:.2f}
์žฅ๊ธฐ์„ ({LONG_MA}์ผ): {now["MA_L"]:.2f}
ํ˜„์žฌ๊ฐ€: {now["Close"]:.2f}
์‹ ํ˜ธ: ์ƒ์Šน ์ถ”์„ธ ์ „ํ™˜ ๐Ÿš€
"""
                bot.send_message(chat_id=CHAT_ID, text=msg)
                alerted.add(code)

while True:
    try:
        check_golden_cross()
        time.sleep(300)  # 5๋ถ„๋งˆ๋‹ค ์ฒดํฌ
    except Exception as e:
        print("์—๋Ÿฌ:", e)
        time.sleep(60)



=========

ํ…”๋ ˆ๊ทธ๋žจ ์•Œ๋ฆผ → ์ฆ๊ถŒ์‚ฌ API ์—ฐ๋™ → ์ž๋™๋งค์ˆ˜/๋งค๋„๊นŒ์ง€ ํ•˜๋Š” ์™„์ „ ์ž๋™๋งค๋งค ๋ด‡ ๊ตฌ์กฐ

[์‹ค์‹œ๊ฐ„ ์‹œ์„ธ ์ˆ˜์ง‘]
        ↓
[์กฐ๊ฑด ํŒ๋‹จ (๊ณจ๋“ ํฌ๋กœ์Šค, ๋ชฉํ‘œ๊ฐ€, ํผ์„ผํŠธ)]
        ↓
[๋งค์ˆ˜/๋งค๋„ ์‹œ๊ทธ๋„ ๋ฐœ์ƒ]
        ↓
[์ฆ๊ถŒ์‚ฌ REST API ์ฃผ๋ฌธ ์ „์†ก]
        ↓
[์ฒด๊ฒฐ ํ™•์ธ]
        ↓
[ํ…”๋ ˆ๊ทธ๋žจ์œผ๋กœ ๊ฒฐ๊ณผ ํ†ต๋ณด]

==================


pip install requests python-telegram-bot yfinance pandas

A-5. ์ž๋™๋งค๋งค ๊ธฐ๋ณธ์˜ˆ์‹œ ์ฝ”๋“œ

import requests
import time
import yfinance as yf
import pandas as pd
from telegram import Bot

# ===== ํ…”๋ ˆ๊ทธ๋žจ =====
TG_TOKEN = "ํ…”๋ ˆ๊ทธ๋žจ_๋ด‡ํ† ํฐ"
CHAT_ID = "๋ณธ์ธ_CHAT_ID"
bot = Bot(TG_TOKEN)

# ===== ์ฆ๊ถŒ์‚ฌ API (์˜ˆ: ํ•œ๊ตญํˆฌ์ž) =====
APP_KEY = "์ฆ๊ถŒ์‚ฌ_APP_KEY"
APP_SECRET = "์ฆ๊ถŒ์‚ฌ_APP_SECRET"
ACCESS_TOKEN = "๋ฐœ๊ธ‰๋ฐ›์€_ACCESS_TOKEN"
ACCOUNT = "๊ณ„์ขŒ๋ฒˆํ˜ธ"

BASE_URL = "https://openapi.koreainvestment.com:9443"

headers = {
    "authorization": f"Bearer {ACCESS_TOKEN}",
    "appkey": APP_KEY,
    "appsecret": APP_SECRET,
    "tr_id": "TTTC0802U",  # ์ฃผ์‹ ์‹œ์žฅ๊ฐ€ ๋งค์ˆ˜
    "content-type": "application/json"
}

def send_telegram(msg):
    bot.send_message(chat_id=CHAT_ID, text=msg)

# ===== ๋งค์ˆ˜ ํ•จ์ˆ˜ =====
def buy(stock_code, qty):
    url = f"{BASE_URL}/uapi/domestic-stock/v1/trading/order-cash"
    data = {
        "CANO": ACCOUNT[:8],
        "ACNT_PRDT_CD": ACCOUNT[8:],
        "PDNO": stock_code,
        "ORD_DVSN": "01",   # ์‹œ์žฅ๊ฐ€
        "ORD_QTY": str(qty),
        "ORD_UNPR": "0"
    }
    res = requests.post(url, headers=headers, json=data)
    return res.json()

# ===== ๊ณจ๋“ ํฌ๋กœ์Šค ์กฐ๊ฑด =====
def golden_cross(code):
    df = yf.download(code, period="3mo")
    df["MA5"] = df["Close"].rolling(5).mean()
    df["MA20"] = df["Close"].rolling(20).mean()

    prev = df.iloc[-2]
    now = df.iloc[-1]

    return prev["MA5"] < prev["MA20"] and now["MA5"] > now["MA20"]

# ===== ๋ฉ”์ธ ๋ฃจํ”„ =====
watch = ["005930.KS", "000660.KS"]
bought = set()

while True:
    try:
        for stock in watch:
            code = stock.replace(".KS","")
            if golden_cross(stock) and code not in bought:
                result = buy(code, 1)  # 1์ฃผ ๋งค์ˆ˜
                send_telegram(f"๐Ÿš€ ์ž๋™๋งค์ˆ˜ ์‹คํ–‰\n์ข…๋ชฉ: {code}\n๊ฒฐ๊ณผ: {result}")
                bought.add(code)
        time.sleep(60)
    except Exception as e:
        sen. d_telegram(f"⚠ ์˜ค๋ฅ˜ ๋ฐœ์ƒ: {e}")
        time.sleep(30)
====================

A-6.ํ…”๋ ˆ๊ทธ๋žจ์—์„œ ๋ช…๋ น์–ด๋กœ ์ข…๋ชฉ ์ถ”๊ฐ€/์‚ญ์ œํ•˜๋Š” ์ฃผ์‹ ์•Œ๋ฆผ ๋ด‡

pip install python-telegram-bot yfinance pandas

ํ…”๋ ˆ๊ทธ๋žจ ๋ช…๋ น์–ดํ˜• ์ฃผ์‹ ๊ด€๋ฆฌ ๋ด‡

๊ธฐ๋Šฅ

  • /add 005930 → ์ข…๋ชฉ ์ถ”๊ฐ€

  • /del 005930 → ์ข…๋ชฉ ์‚ญ์ œ

  • /list → ํ˜„์žฌ ๊ฐ์‹œ ์ข…๋ชฉ ๋ณด๊ธฐ

from telegram.ext import Application, CommandHandler
import yfinance as yf
import pandas as pd

TOKEN = "์—ฌ๊ธฐ์—_๋ด‡ํ† ํฐ"

watch_list = set()

async def start(update, context):
    await update.message.reply_text(
        "๐Ÿ“ˆ ์ฃผ์‹ ์•Œ๋ฆผ ๋ด‡ ์‹œ์ž‘!\n\n"
        "/add ์ข…๋ชฉ์ฝ”๋“œ\n"
        "/del ์ข…๋ชฉ์ฝ”๋“œ\n"
        "/list"
    )

async def add_stock(update, context):
    code = context.args[0].upper()
    watch_list.add(code)
    await update.message.reply_text(f"✅ {code} ๊ฐ์‹œ์ข…๋ชฉ์— ์ถ”๊ฐ€๋จ")

async def del_stock(update, context):
    code = context.args[0].upper()
    if code in watch_list:
        watch_list.remove(code)
        await update.message.reply_text(f"❌ {code} ๊ฐ์‹œ์ข…๋ชฉ์—์„œ ์‚ญ์ œ๋จ")
    else:
        await update.message.reply_text("⚠ ๋ชฉ๋ก์— ์—†๋Š” ์ข…๋ชฉ์ž…๋‹ˆ๋‹ค.")

async def list_stock(update, context):
    if not watch_list:
        await update.message.reply_text("ํ˜„์žฌ ๊ฐ์‹œ ์ข…๋ชฉ์ด ์—†์Šต๋‹ˆ๋‹ค.")
    else:
        msg = "๐Ÿ“‹ ํ˜„์žฌ ๊ฐ์‹œ ์ข…๋ชฉ\n\n"
        msg += "\n".join(watch_list)
        await update.message.reply_text(msg)

app = Application.builder().token(TOKEN).build()

app.add_handler(CommandHandler("start", start))
app.add_handler(CommandHandler("add", add_stock))
app.add_handler(CommandHandler("del", del_stock))
app.add_handler(CommandHandler("list", list_stock))

app.run_polling()




====================
์ž๋™๋งค๋งค ์ปจํŠธ๋กค๊ธฐ๋Šฅ ์ถ”๊ฐ€์ œ

/target 005930 72000   → ๋ชฉํ‘œ๊ฐ€ ์„ค์ •
/ma 5 20               → ์ด๋™ํ‰๊ท  ๋ณ€๊ฒฝ
/buy 005930 10         → ์‹ค๋งค์ˆ˜
/sell 005930 10        → ์‹ค๋งค๋„
/on                    → ์ž๋™๋งค๋งค ์‹œ์ž‘
/off                   → ์ž๋™๋งค๋งค ์ค‘์ง€




์ด ๋ธ”๋กœ๊ทธ์˜ ์ธ๊ธฐ ๊ฒŒ์‹œ๋ฌผ

๋ชจ๋ฅด๋ฉด ๋‹น์‹ ๋งŒ ์†ํ•ด! ์“ฐ๋ ˆ๋“œ ํ”„๋กœํ•„ ์ตœ์ ํ™”๋กœ ์ฒซ ์ฃผ ๋งŒ๋ช… ํŒ”๋กœ์›Œ ๋ชจ์œผ๋Š” ์‹ค์ „ ํŒ๊ณผ ์‚ฌ๋ก€

์™•์ดˆ๋ณด ๋ฐฉ๋ฒ•๋งŒ ์•Œ๋ฉด ๋‹คํ•˜๋Š” ํ•˜๋ฃจ 20๋ถ„ ํˆฌ์ž๋กœ Threads ํŒ”๋กœ์›Œ ๋งŒ๋ช… ๋งŒ๋“œ๋Š” ํ™•์‹คํ•œ ๋ฐฉ๋ฒ•

์‰ฌ์›Œ ๊ธˆ๋ฐฉ์ด์•ผ! ์“ฐ๋ ˆ๋“œ ํ•˜๋ฃจ 10ํฌ์ŠคํŒ… ์‹œ๋ฆฌ์ฆˆ ์ฝ˜ํ…์ธ ๋กœ ํŒ”๋กœ์›Œ ๋Œ€๋ฐ• ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋ฃจํ‹ด