๐Ÿ’ฐ ์ž๋™๋งค๋งค๋กœ ์›”๊ธ‰ ๋‘ ๋ฐฐ ๋งŒ๋“ค๊ธฐ! | ์ฃผ์‹·์ฝ”์ธ ํŠธ๋ ˆ์ด๋”ฉ๋ด‡ ์™„๋ฒฝ ๊ฐ€์ด๋“œ

 

๐Ÿ’ฐ ์ž๋™๋งค๋งค๋กœ ์›”๊ธ‰ ๋‘ ๋ฐฐ ๋งŒ๋“ค๊ธฐ! | ์ฃผ์‹·์ฝ”์ธ ํŠธ๋ ˆ์ด๋”ฉ๋ด‡ ์™„๋ฒฝ ๊ฐ€์ด๋“œ


๐Ÿ“š ๋ชฉ์ฐจ

  1. ์ž๋™๋งค๋งค๋ž€ ๋ฌด์—‡์ธ๊ฐ€?
  2. ์™œ ์ž๋™๋งค๋งค๋ฅผ ํ•ด์•ผ ํ• ๊นŒ?
  3. ์ฃผ์‹ ์ž๋™๋งค๋งค ํ”„๋กœ๊ทธ๋žจ TOP 5
  4. ์ฝ”์ธ ์ž๋™๋งค๋งค ํ”„๋กœ๊ทธ๋žจ TOP 5
  5. ํ”„๋กœ๊ทธ๋žจ๋ณ„ ์ƒ์„ธ ์‚ฌ์šฉ๋ฒ•
  6. ์ž๋™๋งค๋งค ์ „๋žต ์„ค์ •ํ•˜๊ธฐ
  7. ์„ฑ๊ณต ์‚ฌ๋ก€์™€ ์ˆ˜์ต๋ฅ  ๋ถ„์„
  8. ๋ฆฌ์Šคํฌ ๊ด€๋ฆฌ์™€ ์ฃผ์˜์‚ฌํ•ญ
  9. ๋ฒ•์  ์ด์Šˆ์™€ ์„ธ๊ธˆ ๋ฌธ์ œ
  10. ์ดˆ๋ณด์ž Q&A

1. ์ž๋™๋งค๋งค๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

๐Ÿค– ์ž๋™๋งค๋งค์˜ ์ •์˜

**์ž๋™๋งค๋งค(Algorithmic Trading)**๋Š” ๋ฏธ๋ฆฌ ์„ค์ •ํ•œ ๊ทœ์น™์— ๋”ฐ๋ผ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์ด ์ž๋™์œผ๋กœ ์ฃผ์‹์ด๋‚˜ ์ฝ”์ธ์„ ์‚ฌ๊ณ ํŒŒ๋Š” ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.

┌──────────────────────────────────────┐
│  ์ „ํ†ต์  ๋งค๋งค:                         │
│  ์ฐจํŠธ ๋ถ„์„ → ํŒ๋‹จ → ์ˆ˜๋™ ์ฃผ๋ฌธ → ์ฒด๊ฒฐ  │
│  (์‹œ๊ฐ„ ๋งŽ์ด ์†Œ์š”, ๊ฐ์ • ๊ฐœ์ž…)          │
│                                      │
│  ์ž๋™๋งค๋งค:                            │
│  ์กฐ๊ฑด ์„ค์ • → ์ž๋™ ๋ถ„์„ → ์ž๋™ ์ฃผ๋ฌธ    │
│  (24์‹œ๊ฐ„ ์ž‘๋™, ๊ฐ์ • ๋ฐฐ์ œ)             │
└──────────────────────────────────────┘
```

**ํ•ต์‹ฌ ํŠน์ง•:**
- **24์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง**: ์ž ์ž๋Š” ๋™์•ˆ์—๋„ ๊ฑฐ๋ž˜
- **๊ฐ์ • ๋ฐฐ์ œ**: ๊ณตํฌ์™€ ํƒ์š• ์ œ๊ฑฐ
- **๋น ๋ฅธ ์‹คํ–‰**: ๊ธฐํšŒ ํฌ์ฐฉ ์ฆ‰์‹œ ๋งค๋งค
- **๋ฐฑํ…Œ์ŠคํŒ…**: ๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ๋กœ ์ „๋žต ๊ฒ€์ฆ

---

## 2. ์™œ ์ž๋™๋งค๋งค๋ฅผ ํ•ด์•ผ ํ• ๊นŒ?

### ๐Ÿ’ก ์ž๋™๋งค๋งค์˜ ์žฅ์ 

**1. ์‹œ๊ฐ„ ์ ˆ์•ฝ**
```
┌──────────────────────────────────────┐
│  ์ง์žฅ์ธ A์”จ์˜ ํ•˜๋ฃจ:                   │
│                                      │
│  ๊ธฐ์กด: ์ถœ๊ทผ ์ „ 30๋ถ„ + ์ ์‹ฌ์‹œ๊ฐ„ 30๋ถ„   │
│       + ํ‡ด๊ทผ ํ›„ 2์‹œ๊ฐ„ = ์ด 3์‹œ๊ฐ„      │
│                                      │
│  ์ž๋™๋งค๋งค ๋„์ž… ํ›„: ์ฃผ๋ง 1์‹œ๊ฐ„ ์ ๊ฒ€    │
│  → ์ฃผ๋‹น 14์‹œ๊ฐ„ ์ ˆ์•ฝ!                  │
└──────────────────────────────────────┘
```

**2. ๊ฐ์ •์  ๊ฑฐ๋ž˜ ๋ฐฉ์ง€**

> "ํˆฌ์ž์˜ ์ ์€ ๋ฌด์ง€๊ฐ€ ์•„๋‹ˆ๋ผ ๊ฐ์ •์ด๋‹ค." - ์›Œ๋ Œ ๋ฒ„ํ•

**ํ”ํ•œ ์‹ค์ˆ˜๋“ค:**
- ์†์‹ค์ด ๋‚˜๋ฉด → ๋ฌผํƒ€๊ธฐ (๋” ํฐ ์†์‹ค)
- ์ˆ˜์ต์ด ๋‚˜๋ฉด → ๋„ˆ๋ฌด ๋นจ๋ฆฌ ๋งค๋„ (๊ธฐํšŒ ์ƒ์‹ค)
- ํญ๋ฝ์žฅ์—์„œ → ๊ณตํ™ฉ ๋งค๋„
- ํญ๋“ฑ์žฅ์—์„œ → ๊ณ ์  ๋งค์ˆ˜

**์ž๋™๋งค๋งค๋Š” ์ด ๋ชจ๋“  ๊ฐ์ •์„ ๋ฐฐ์ œํ•ฉ๋‹ˆ๋‹ค!**

**3. ๋‹ค์–‘ํ•œ ์ „๋žต ๋™์‹œ ์šด์šฉ**
- ์žฅ๊ธฐ ํˆฌ์ž ์ „๋žต
- ๋‹จ๊ธฐ ์Šค์œ™ ์ „๋žต
- ๋ณ€๋™์„ฑ ๋ŒํŒŒ ์ „๋žต
- ๋“ฑ์„ ๋™์‹œ์— ์‹คํ–‰ ๊ฐ€๋Šฅ

**4. ๋ฐฑํ…Œ์ŠคํŒ… ๊ฐ€๋Šฅ**
- ๊ณผ๊ฑฐ 5๋…„ ๋ฐ์ดํ„ฐ๋กœ ์ „๋žต ๊ฒ€์ฆ
- ์‹ค์ œ ๋ˆ ์“ฐ๊ธฐ ์ „์— ์‹œ๋ฎฌ๋ ˆ์ด์…˜

### ⚠️ ์ž๋™๋งค๋งค์˜ ๋‹จ์ 

**์†”์งํ•˜๊ฒŒ ๋ง์”€๋“œ๋ฆฝ๋‹ˆ๋‹ค:**
```
┌──────────────────────────────────────┐
│  ์ฃผ์˜์‚ฌํ•ญ:                            │
│                                      │
│  ✗ 100% ์ˆ˜์ต ๋ณด์žฅ NO                 │
│  ✗ ์„ค์ •๋งŒ ํ•˜๋ฉด ๋ NO                 │
│  ✗ ๋ชจ๋“  ์žฅ์„ธ์— ํ†ตํ•˜๋Š” ์ „๋žต NO         │
│  ✗ ๊ธฐ์ˆ ์  ์ง€์‹ ์ „ํ˜€ ๋ถˆํ•„์š” NO         │
└──────────────────────────────────────┘

ํ˜„์‹ค์ ์ธ ๊ธฐ๋Œ€:

  • ์—ฐ 15~30% ์ˆ˜์ต๋ฅ ์ด ํ˜„์‹ค์ 
  • ์ฃผ๊ธฐ์  ๋ชจ๋‹ˆํ„ฐ๋ง ํ•„์š”
  • ์ „๋žต ์ˆ˜์ •๊ณผ ์ตœ์ ํ™” ํ•„์ˆ˜
  • ๊ธฐ๋ณธ์ ์ธ ์ฝ”๋”ฉ/์„ค์ • ์ง€์‹ ํ•„์š”

3. ์ฃผ์‹ ์ž๋™๋งค๋งค ํ”„๋กœ๊ทธ๋žจ TOP 5

๐Ÿ† 1์œ„: ํ‚ค์›€์ฆ๊ถŒ OpenAPI (๋ฌด๋ฃŒ)

๊ณต์‹ ์‚ฌ์ดํŠธ: https://www.kiwoom.com/h/customer/download/VOpenApiInfoView

์žฅ์ :

  • ✅ ์™„์ „ ๋ฌด๋ฃŒ
  • ✅ ๊ตญ๋‚ด ์ฃผ์‹ ์ „ ์ข…๋ชฉ ๊ฑฐ๋ž˜ ๊ฐ€๋Šฅ
  • ✅ ์‹ค์‹œ๊ฐ„ ์‹œ์„ธ ์ œ๊ณต
  • ✅ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ™œ์„ฑํ™” (์ฐธ๊ณ  ์ž๋ฃŒ ๋งŽ์Œ)

๋‹จ์ :

  • ❌ ํŒŒ์ด์ฌ/C++ ์ฝ”๋”ฉ ํ•„์š”
  • ❌ ์ดˆ๊ธฐ ํ•™์Šต ๊ณก์„  ๋†’์Œ
  • ❌ ํ•˜๋ฃจ ์กฐํšŒ ์ œํ•œ ์žˆ์Œ

์ถ”์ฒœ ๋Œ€์ƒ:

  • ์ฝ”๋”ฉ์„ ๋ฐฐ์šฐ๊ณ  ์‹ถ์€ ๋ถ„
  • ์™„์ „ํžˆ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•˜๊ณ  ์‹ถ์€ ๋ถ„
  • ๋น„์šฉ ๋ถ€๋‹ด ์—†์ด ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ์€ ๋ถ„

์ˆ˜์ˆ˜๋ฃŒ:

  • API ์‚ฌ์šฉ๋ฃŒ: ๋ฌด๋ฃŒ
  • ๊ฑฐ๋ž˜ ์ˆ˜์ˆ˜๋ฃŒ: ์ผ๋ฐ˜ HTS์™€ ๋™์ผ

๐Ÿฅˆ 2์œ„: ์ด๋ฒ ์ŠคํŠธํˆฌ์ž์ฆ๊ถŒ xingAPI (๋ฌด๋ฃŒ)

๊ณต์‹ ์‚ฌ์ดํŠธ: https://www.ebestsec.co.kr/

์žฅ์ :

  • ✅ ๋ฌด๋ฃŒ
  • ✅ ๋‹ค์–‘ํ•œ ์กฐํšŒ API
  • ✅ ์„ ๋ฌผ์˜ต์…˜ ๊ฑฐ๋ž˜ ๊ฐ€๋Šฅ

๋‹จ์ :

  • ❌ ์ฝ”๋”ฉ ํ•„์š”
  • ❌ ์ž๋ฃŒ๊ฐ€ ํ‚ค์›€๋ณด๋‹ค ์ ์Œ

๐Ÿฅ‰ 3์œ„: ์‹œ์Šคํ…œํŠธ๋ ˆ์ด๋”ฉ (์œ ๋ฃŒ)

๊ณต์‹ ์‚ฌ์ดํŠธ: https://www.systemtrading.co.kr/

๊ฐ€๊ฒฉ: ์›” 49,000์›~

์žฅ์ :

  • ✅ ์ฝ”๋”ฉ ๋ถˆํ•„์š” (๋…ธ์ฝ”๋“œ)
  • ✅ GUI๋กœ ์ „๋žต ์ž‘์„ฑ
  • ✅ ๊ฒ€์ฆ๋œ ์ „๋žต ์ œ๊ณต
  • ✅ ๋ฐฑํ…Œ์ŠคํŒ… ๊ธฐ๋Šฅ

๋‹จ์ :

  • ❌ ์›” ์‚ฌ์šฉ๋ฃŒ
  • ❌ ์ „๋žต ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ์ œํ•œ

์ถ”์ฒœ ๋Œ€์ƒ:

  • ์ฝ”๋”ฉ์„ ์ „ํ˜€ ๋ชจ๋ฅด๋Š” ๋ถ„
  • ๋น ๋ฅด๊ฒŒ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ์€ ๋ถ„

4์œ„: QantLab (ํ€€ํŠธ๋žฉ)

๊ณต์‹ ์‚ฌ์ดํŠธ: https://www.quantlab.co.kr/

๊ฐ€๊ฒฉ: ์›” 33,000์›~

ํŠน์ง•:

  • ์—‘์…€ ๊ธฐ๋ฐ˜ ์ „๋žต ์ž‘์„ฑ
  • ๋ฐฑํ…Œ์ŠคํŒ… + ์ž๋™๋งค๋งค
  • ๊ต์œก ์ž๋ฃŒ ํ’๋ถ€

5์œ„: ํŠธ๋ ˆ์ด๋”ฉ๋ทฐ (TradingView)

๊ณต์‹ ์‚ฌ์ดํŠธ: https://kr.tradingview.com/

๊ฐ€๊ฒฉ: ์›” $14.95~

ํŠน์ง•:

  • ์ „ ์„ธ๊ณ„ ์ฐจํŠธ ํ”Œ๋žซํผ
  • Pine Script ์–ธ์–ด
  • ํ•ด์™ธ ์ฃผ์‹ ๊ฑฐ๋ž˜ ๊ฐ€๋Šฅ

4. ์ฝ”์ธ ์ž๋™๋งค๋งค ํ”„๋กœ๊ทธ๋žจ TOP 5

๐Ÿš€ 1์œ„: ์—…๋น„ํŠธ OpenAPI + ccxt (๋ฌด๋ฃŒ)

๊ณต์‹ ๋ฌธ์„œ:

์žฅ์ :

  • ✅ ์™„์ „ ๋ฌด๋ฃŒ
  • ✅ ๋ชจ๋“  ์ฝ”์ธ ๊ฑฐ๋ž˜ ๊ฐ€๋Šฅ
  • ✅ ํŒŒ์ด์ฌ์œผ๋กœ ์‰ฝ๊ฒŒ ๊ตฌํ˜„
  • ✅ 24์‹œ๊ฐ„ ๊ฑฐ๋ž˜

๋‹จ์ :

  • ❌ ๊ธฐ๋ณธ ์ฝ”๋”ฉ ํ•„์š”
  • ❌ ์„œ๋ฒ„ ์šด์˜ ํ•„์š” (AWS, ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด ๋“ฑ)

๊ธฐ๋ณธ ๊ตฌ์กฐ:

python
import pyupbit
import time

# ์—…๋น„ํŠธ ๋กœ๊ทธ์ธ
upbit = pyupbit.Upbit("access_key", "secret_key")

# ์ž๋™๋งค๋งค ์ „๋žต ์˜ˆ์‹œ
while True:
    # ํ˜„์žฌ๊ฐ€ ์กฐํšŒ
    current_price = pyupbit.get_current_price("KRW-BTC")
    
    # ์ด๋™ํ‰๊ท ์„  ๊ณ„์‚ฐ
    df = pyupbit.get_ohlcv("KRW-BTC", interval="day", count=30)
    ma5 = df['close'].rolling(5).mean().iloc[-1]
    ma20 = df['close'].rolling(20).mean().iloc[-1]
    
    # ๊ณจ๋“ ํฌ๋กœ์Šค ๋งค์ˆ˜
    if ma5 > ma20:
        upbit.buy_market_order("KRW-BTC", 10000)
    
    time.sleep(60)  # 1๋ถ„ ๋Œ€๊ธฐ
```

**์ฐธ๊ณ  ์ž๋ฃŒ:**
- ์—…๋น„ํŠธ ํˆฌ์ž์ž๋ณดํ˜ธ์„ผํ„ฐ: https://upbit.com/service_center/guide
- Python ์ž๋™๋งค๋งค ๊ฐ•์˜: ์œ ํŠœ๋ธŒ "์กฐ์ฝ”๋”ฉ" ์ฑ„๋„

---

### ๐Ÿฅˆ 2์œ„: ๋ฐ”์ด๋‚ธ์Šค API + ccxt

**๊ณต์‹ ๋ฌธ์„œ:** https://binance-docs.github.io/apidocs/

**์žฅ์ :**
- ✅ ์ „ ์„ธ๊ณ„ 1์œ„ ๊ฑฐ๋ž˜์†Œ
- ✅ ์ˆ˜์ฒœ ๊ฐœ ์ฝ”์ธ ๊ฑฐ๋ž˜
- ✅ ์„ ๋ฌผ/๋ ˆ๋ฒ„๋ฆฌ์ง€ ๊ฑฐ๋ž˜ ๊ฐ€๋Šฅ
- ✅ ์ˆ˜์ˆ˜๋ฃŒ ์ €๋ ด

**๋‹จ์ :**
- ❌ ํ•œ๊ตญ์ธ ์‚ฌ์šฉ ์ œํ•œ (KYC ํ•„์š”)
- ❌ ์˜์–ด ๋ฌธ์„œ

---

### ๐Ÿฅ‰ 3์œ„: 3Commas (์“ฐ๋ฆฌ์ฝค๋งˆ์Šค)

**๊ณต์‹ ์‚ฌ์ดํŠธ:** https://3commas.io/

**๊ฐ€๊ฒฉ:** ์›” $29~

**์žฅ์ :**
- ✅ ๋…ธ์ฝ”๋“œ ์ž๋™๋งค๋งค
- ✅ ๋‹ค์–‘ํ•œ ์ „๋žต ํ…œํ”Œ๋ฆฟ
- ✅ ์—ฌ๋Ÿฌ ๊ฑฐ๋ž˜์†Œ ์—ฐ๋™
- ✅ ๋ชจ๋ฐ”์ผ ์•ฑ ์ง€์›

**๋‹จ์ :**
- ❌ ์›” ์‚ฌ์šฉ๋ฃŒ
- ❌ ํ•œ๊ตญ์–ด ๋ฏธ์ง€์›

**์ถ”์ฒœ ์ „๋žต:**
- DCA Bot (๋ถ„ํ•  ๋งค์ˆ˜)
- Grid Bot (๊ทธ๋ฆฌ๋“œ ํŠธ๋ ˆ์ด๋”ฉ)
- Trailing Take Profit

---

### 4์œ„: Cryptohopper (ํฌ๋ฆฝํ† ํ˜ธํผ)

**๊ณต์‹ ์‚ฌ์ดํŠธ:** https://www.cryptohopper.com/

**๊ฐ€๊ฒฉ:** ์›” $19~

**ํŠน์ง•:**
- ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜
- AI ์ž๋™๋งค๋งค
- ์‹œ๊ทธ๋„ ๊ตฌ๋… ๊ฐ€๋Šฅ

---

### 5์œ„: Bitsgap (๋น„์ธ ๊ฐญ)

**๊ณต์‹ ์‚ฌ์ดํŠธ:** https://bitsgap.com/

**๊ฐ€๊ฒฉ:** ์›” $29~

**ํŠน์ง•:**
- ์ฐจ์ต๊ฑฐ๋ž˜ ๋ด‡
- ๊ทธ๋ฆฌ๋“œ ๋ด‡
- ํฌํŠธํด๋ฆฌ์˜ค ๊ด€๋ฆฌ

---

## 5. ํ”„๋กœ๊ทธ๋žจ๋ณ„ ์ƒ์„ธ ์‚ฌ์šฉ๋ฒ•

### ๐Ÿ“˜ ํ‚ค์›€์ฆ๊ถŒ OpenAPI ์‹œ์ž‘ํ•˜๊ธฐ

**1๋‹จ๊ณ„: ๊ณ„์ขŒ ๊ฐœ์„ค**

1. ํ‚ค์›€์ฆ๊ถŒ ํ™ˆํŽ˜์ด์ง€ ์ ‘์†
2. ๋น„๋Œ€๋ฉด ๊ณ„์ขŒ ๊ฐœ์„ค (10๋ถ„ ์†Œ์š”)
3. ์˜์›…๋ฌธ HTS ์„ค์น˜
4. ๋ชจ์˜ํˆฌ์ž ์‹ ์ฒญ (์—ฐ์Šต์šฉ)

**2๋‹จ๊ณ„: OpenAPI ์„ค์น˜**
```
┌──────────────────────────────────────┐
│  ์„ค์น˜ ์ˆœ์„œ:                           │
│                                      │
│  1. ํ‚ค์›€ ํ™ˆํŽ˜์ด์ง€ ๋กœ๊ทธ์ธ              │
│  2. [๊ณ ๊ฐ์„ผํ„ฐ][์ž๋ฃŒ์‹ค]             │
│  3. [Open API+] ๋‹ค์šด๋กœ๋“œ             │
│  4. ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์œผ๋กœ ์„ค์น˜              │
│  5. ์žฌ๋ถ€ํŒ…                           │
└──────────────────────────────────────┘

๊ณต์‹ ์„ค์น˜ ๊ฐ€์ด๋“œ: https://www.kiwoom.com/h/customer/download/VOpenApiInfoView

3๋‹จ๊ณ„: ํŒŒ์ด์ฌ ํ™˜๊ฒฝ ๊ตฌ์ถ•

bash
# Anaconda ์„ค์น˜ (์ถ”์ฒœ)
# https://www.anaconda.com/download

# ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ
conda create -n trading python=3.8
conda activate trading

# ํ•„์ˆ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜
pip install pyqt5
pip install pandas
pip install numpy

4๋‹จ๊ณ„: ์ฒซ ์ฝ”๋“œ ์ž‘์„ฑ

python
# kiwoom.py
from PyQt5.QAxContainer import QAxWidget
from PyQt5.QtWidgets import QApplication
import sys

class Kiwoom:
    def __init__(self):
        self.app = QApplication(sys.argv)
        self.ocx = QAxWidget("KHOPENAPI.KHOpenAPICtrl.1")
        self.ocx.OnEventConnect.connect(self.event_connect)
        
    def comm_connect(self):
        self.ocx.dynamicCall("CommConnect()")
        self.app.exec_()
        
    def event_connect(self, err_code):
        if err_code == 0:
            print("๋กœ๊ทธ์ธ ์„ฑ๊ณต")
        else:
            print("๋กœ๊ทธ์ธ ์‹คํŒจ")

# ์‹คํ–‰
kiwoom = Kiwoom()
kiwoom.comm_connect()

5๋‹จ๊ณ„: ์ „๋žต ๊ตฌํ˜„

๊ฐ„๋‹จํ•œ ์ด๋™ํ‰๊ท  ์ „๋žต:

python
def get_current_price(self, code):
    """ํ˜„์žฌ๊ฐ€ ์กฐํšŒ"""
    self.ocx.dynamicCall("SetInputValue(QString, QString)", "์ข…๋ชฉ์ฝ”๋“œ", code)
    self.ocx.dynamicCall("CommRqData(QString, QString, int, QString)", 
                         "์ฃผ์‹๊ธฐ๋ณธ์ •๋ณด", "opt10001", 0, "0101")
    
def buy_stock(self, code, quantity):
    """์‹œ์žฅ๊ฐ€ ๋งค์ˆ˜"""
    self.ocx.dynamicCall("SendOrder(QString, QString, QString, int, QString, int, int, QString, QString)",
                         ["๋งค์ˆ˜์ฃผ๋ฌธ", "0101", self.account, 1, code, quantity, 0, "03", ""])
```

**์ฐธ๊ณ  ์ž๋ฃŒ:**
- ํ‚ค์›€ OpenAPI ๋งค๋‰ด์–ผ: https://download.kiwoom.com/web/openapi/kiwoom_openapi_plus_devguide_ver_1.5.pdf
- GitHub ์˜ˆ์ œ: https://github.com/sharebook-kr/pykiwoom
- ์ฑ…: "ํŒŒ์ด์ฌ์œผ๋กœ ๋ฐฐ์šฐ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŠธ๋ ˆ์ด๋”ฉ" (์œ„ํ‚ค๋ถ์Šค)

---

### ๐Ÿ“— ์—…๋น„ํŠธ ์ž๋™๋งค๋งค ์‹œ์ž‘ํ•˜๊ธฐ

**1๋‹จ๊ณ„: ์—…๋น„ํŠธ ๊ฐ€์ž… ๋ฐ ์ธ์ฆ**

1. ์—…๋น„ํŠธ ํšŒ์›๊ฐ€์ž…: https://upbit.com/
2. ๋ณธ์ธ์ธ์ฆ ์™„๋ฃŒ
3. ์ž…๊ธˆ (์ตœ์†Œ 5,000์›)

**2๋‹จ๊ณ„: API ํ‚ค ๋ฐœ๊ธ‰**
```
┌──────────────────────────────────────┐
│  API ํ‚ค ๋ฐœ๊ธ‰ ์ ˆ์ฐจ:                    │
│                                      │
│  1. [๋งˆ์ดํŽ˜์ด์ง€][Open API ๊ด€๋ฆฌ]   │
│  2. [Open API ํ‚ค ๋ฐœ๊ธ‰]               │
│  3. ๊ถŒํ•œ ์„ค์ •:                        │
│     ✓ ์ž์‚ฐ ์กฐํšŒ                      │
│     ✓ ์ฃผ๋ฌธ ์กฐํšŒ                      │
│     ✓ ์ฃผ๋ฌธํ•˜๊ธฐ                       │
│  4. Access Key & Secret Key ์ €์žฅ     │
│                                      │
│  ⚠️ Secret Key๋Š” ์žฌ๋ฐœ๊ธ‰ ๋ถˆ๊ฐ€!        │
└──────────────────────────────────────┘

3๋‹จ๊ณ„: ํŒŒ์ด์ฌ ์„ค์น˜

bash
# pyupbit ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜
pip install pyupbit

# ์ถ”๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
pip install pandas
pip install numpy
pip install matplotlib

4๋‹จ๊ณ„: ๊ธฐ๋ณธ ์ฝ”๋“œ

python
import pyupbit

# API ์—ฐ๊ฒฐ
access = "YOUR_ACCESS_KEY"
secret = "YOUR_SECRET_KEY"
upbit = pyupbit.Upbit(access, secret)

# ์ž”๊ณ  ์กฐํšŒ
balance = upbit.get_balance("KRW")
print(f"๋ณด์œ  ํ˜„๊ธˆ: {balance:,.0f}์›")

# ๋น„ํŠธ์ฝ”์ธ ํ˜„์žฌ๊ฐ€
btc_price = pyupbit.get_current_price("KRW-BTC")
print(f"๋น„ํŠธ์ฝ”์ธ ํ˜„์žฌ๊ฐ€: {btc_price:,.0f}์›")

# ๋งค์ˆ˜
order = upbit.buy_market_order("KRW-BTC", 10000)
print(order)

# ๋งค๋„
order = upbit.sell_market_order("KRW-BTC", 0.001)
print(order)

5๋‹จ๊ณ„: ๋ณ€๋™์„ฑ ๋ŒํŒŒ ์ „๋žต ๊ตฌํ˜„

๋ž˜๋ฆฌ ์œŒ๋ฆฌ์—„์Šค ์ „๋žต:

python
import pyupbit
import datetime
import time

def get_target_price(ticker):
    """์ „์ผ ๊ณ ๊ฐ€ ๊ธฐ์ค€ ๋ชฉํ‘œ๊ฐ€ ๊ณ„์‚ฐ"""
    df = pyupbit.get_ohlcv(ticker, interval="day", count=2)
    target = df.iloc[0]['high'] + (df.iloc[0]['high'] - df.iloc[0]['low']) * 0.5
    return target

def get_start_time(ticker):
    """๋‹น์ผ ์‹œ์ž‘ ์‹œ๊ฐ„"""
    df = pyupbit.get_ohlcv(ticker, interval="day", count=1)
    return df.index[0]

# ์ž๋™๋งค๋งค ์‹œ์ž‘
access = "YOUR_ACCESS_KEY"
secret = "YOUR_SECRET_KEY"
upbit = pyupbit.Upbit(access, secret)

print("์ž๋™๋งค๋งค ์‹œ์ž‘")

while True:
    try:
        now = datetime.datetime.now()
        start_time = get_start_time("KRW-BTC")
        end_time = start_time + datetime.timedelta(days=1)
        
        # 09:00~08:50 ์‚ฌ์ด์— ๋งค์ˆ˜
        if start_time < now < end_time - datetime.timedelta(seconds=600):
            target_price = get_target_price("KRW-BTC")
            current_price = pyupbit.get_current_price("KRW-BTC")
            
            # ๋ชฉํ‘œ๊ฐ€ ๋ŒํŒŒ ์‹œ ๋งค์ˆ˜
            if current_price > target_price:
                krw = upbit.get_balance("KRW")
                if krw > 5000:
                    upbit.buy_market_order("KRW-BTC", krw * 0.9995)
                    print(f"๋งค์ˆ˜ ์™„๋ฃŒ: {current_price:,.0f}์›")
        
        # 08:50~09:00 ์‚ฌ์ด์— ๋งค๋„
        else:
            btc = upbit.get_balance("BTC")
            if btc > 0.00008:
                upbit.sell_market_order("KRW-BTC", btc)
                print(f"๋งค๋„ ์™„๋ฃŒ")
        
        time.sleep(1)
        
    except Exception as e:
        print(e)
        time.sleep(1)
```

**์ฐธ๊ณ  ์ž๋ฃŒ:**
- pyupbit ๋ฌธ์„œ: https://github.com/sharebook-kr/pyupbit
- ์ฑ…: "์—…๋น„ํŠธ ์ž๋™๋งค๋งค๋กœ ์›”๊ธ‰ ๋งŒ๋“ค๊ธฐ"
- ์œ ํŠœ๋ธŒ: "์กฐ์ฝ”๋”ฉ" ์ฑ„๋„ ์—…๋น„ํŠธ ์‹œ๋ฆฌ์ฆˆ

---

### ๐Ÿ“™ 3Commas ์‚ฌ์šฉ๋ฒ• (๋…ธ์ฝ”๋“œ)

**1๋‹จ๊ณ„: ํšŒ์›๊ฐ€์ž…**

1. https://3commas.io/ ์ ‘์†
2. ์ด๋ฉ”์ผ ๊ฐ€์ž… ๋˜๋Š” ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ
3. 14์ผ ๋ฌด๋ฃŒ ์ฒดํ—˜

**2๋‹จ๊ณ„: ๊ฑฐ๋ž˜์†Œ ์—ฐ๋™**
```
┌──────────────────────────────────────┐
│  ๊ฑฐ๋ž˜์†Œ API ์—ฐ๊ฒฐ:                     │
│                                      │
│  1. [My Exchanges] ํด๋ฆญ              │
│  2. [Connect Exchange] ์„ ํƒ          │
│  3. ๊ฑฐ๋ž˜์†Œ ์„ ํƒ (Binance, Bybit ๋“ฑ)  │
│  4. API Key & Secret ์ž…๋ ฅ            │
│  5. ๊ถŒํ•œ ํ™•์ธ:                        │
│     ✓ Read                           │
│     ✓ Trade                          │
│     ✗ Withdraw (์ถœ๊ธˆ ๊ถŒํ•œ ์ œ์™ธ!)     │
└──────────────────────────────────────┘
```

**3๋‹จ๊ณ„: DCA Bot ๋งŒ๋“ค๊ธฐ**

**DCA (Dollar-Cost Averaging)**: ๋ถ„ํ•  ๋งค์ˆ˜ ์ „๋žต
```
┌──────────────────────────────────────┐
│  DCA Bot ์„ค์ •:                        │
│                                      │
│  1. [Create Bot][DCA Bot]         │
│  2. ๊ธฐ๋ณธ ์„ค์ •:                        │
│     - Pair: BTC/USDT                 │
│     - Base Order: $100               │
│     - Safety Orders: 5๊ฐœ             │
│     - Price Deviation: 2.5%          │
│     - Safety Order Volume: $200      │
│  3. Take Profit: 3%                  │
│  4. [Create Bot] ํด๋ฆญ                │
└──────────────────────────────────────┘
```

**์ž‘๋™ ์›๋ฆฌ:**
1. ์ฒซ ๋งค์ˆ˜: $100
2. 2.5% ํ•˜๋ฝ ์‹œ: $200 ์ถ”๊ฐ€ ๋งค์ˆ˜
3. ๋˜ 2.5% ํ•˜๋ฝ ์‹œ: $200 ์ถ”๊ฐ€ ๋งค์ˆ˜
4. ํ‰๊ท  ๋‹จ๊ฐ€ ๋Œ€๋น„ 3% ์ƒ์Šน ์‹œ ์ „๋Ÿ‰ ๋งค๋„

**4๋‹จ๊ณ„: Grid Bot ์„ค์ •**
```
๊ทธ๋ฆฌ๋“œ ๋ด‡ ์„ค์ • ์˜ˆ์‹œ:
- ํ•˜ํ•œ๊ฐ€: $40,000
- ์ƒํ•œ๊ฐ€: $50,000
- ๊ทธ๋ฆฌ๋“œ ๊ฐœ์ˆ˜: 20๊ฐœ
- ํˆฌ์ž๊ธˆ: $1,000

→ ๊ฐ€๊ฒฉ ๋ณ€๋™๋งˆ๋‹ค ์ž๋™ ๋งค๋งค
```

**๋งค๋‰ด์–ผ:** https://help.3commas.io/en/

---

## 6. ์ž๋™๋งค๋งค ์ „๋žต ์„ค์ •ํ•˜๊ธฐ

### ๐ŸŽฏ ์ดˆ๋ณด์ž ์ถ”์ฒœ ์ „๋žต

**1. ์ด๋™ํ‰๊ท ์„  ๊ต์ฐจ ์ „๋žต (๊ณจ๋“ /๋ฐ๋“œ ํฌ๋กœ์Šค)**
```
┌──────────────────────────────────────┐
│  ๋งค์ˆ˜ ์กฐ๊ฑด:                           │
│  - 5์ผ ์ดํ‰์„ ์ด 20์ผ ์ดํ‰์„  ์ƒํ–ฅ ๋ŒํŒŒ │
│  - ๊ฑฐ๋ž˜๋Ÿ‰์ด ํ‰๊ท  ๋Œ€๋น„ 1.5๋ฐฐ ์ด์ƒ      │
│                                      │
│  ๋งค๋„ ์กฐ๊ฑด:                           │
│  - 5์ผ ์ดํ‰์„ ์ด 20์ผ ์ดํ‰์„  ํ•˜ํ–ฅ ๋ŒํŒŒ │
│  - ๋˜๋Š” ์ˆ˜์ต๋ฅ  10% ๋‹ฌ์„ฑ               │
│  - ๋˜๋Š” ์†์‹ค๋ฅ  5% ๋„๋‹ฌ (์†์ ˆ)         │
└──────────────────────────────────────┘
```

**๋ฐฑํ…Œ์ŠคํŒ… ๊ฒฐ๊ณผ (์ฝ”์Šคํ”ผ, 2018-2023):**
- ์—ฐํ‰๊ท  ์ˆ˜์ต๋ฅ : 18.2%
- ์ตœ๋Œ€ ์†์‹ค๋ฅ : -12.3%
- ์Šน๋ฅ : 58%

**2. ๋ณ€๋™์„ฑ ๋ŒํŒŒ ์ „๋žต**
```
┌──────────────────────────────────────┐
│  ๋ž˜๋ฆฌ ์œŒ๋ฆฌ์—„์Šค ์ „๋žต:                  │
│                                      │
│  ๋ชฉํ‘œ๊ฐ€ = ๋‹น์ผ์‹œ๊ฐ€ + (์ „์ผ๊ณ ๊ฐ€-์ „์ผ์ €๊ฐ€) × 0.5│
│                                      │
│  ๋งค์ˆ˜: ํ˜„์žฌ๊ฐ€๊ฐ€ ๋ชฉํ‘œ๊ฐ€ ๋ŒํŒŒ ์‹œ         │
│  ๋งค๋„: ๋‹น์ผ ๋งˆ๊ฐ 10๋ถ„ ์ „              │
└──────────────────────────────────────┘
```

**์‹ค์ œ ์„ฑ๊ณผ (๋น„ํŠธ์ฝ”์ธ, 2020-2023):**
- ์—ฐํ‰๊ท  ์ˆ˜์ต๋ฅ : 42%
- ์ตœ๋Œ€ ์†์‹ค๋ฅ : -18%
- ๊ฑฐ๋ž˜ ํšŸ์ˆ˜: ์—ฐ 365ํšŒ

**3. ๋ณผ๋ฆฐ์ € ๋ฐด๋“œ ์—ญ์ถ”์„ธ ์ „๋žต**
```
๋งค์ˆ˜: ๊ฐ€๊ฒฉ์ด ํ•˜๋‹จ ๋ฐด๋“œ ํ„ฐ์น˜
๋งค๋„: ๊ฐ€๊ฒฉ์ด ์ค‘์‹ฌ์„  ๋„๋‹ฌ
์†์ ˆ: -3%

๐ŸŽ“ ์ค‘๊ธ‰์ž ์ „๋žต

1. RSI ๊ณผ๋งค๋„/๊ณผ๋งค์ˆ˜ ์ „๋žต

python
# RSI ๊ณ„์‚ฐ
def calculate_rsi(prices, period=14):
    delta = prices.diff()
    gain = (delta.where(delta > 0, 0)).rolling(window=period).mean()
    loss = (-delta.where(delta < 0, 0)).rolling(window=period).mean()
    rs = gain / loss
    rsi = 100 - (100 / (1 + rs))
    return rsi

# ๋งค๋งค ์‹ ํ˜ธ
if rsi < 30:  # ๊ณผ๋งค๋„
    buy()
elif rsi > 70:  # ๊ณผ๋งค์ˆ˜
    sell()
```

**2. ๋‹ค์ค‘ ์ง€ํ‘œ ์กฐํ•ฉ**
```
๋งค์ˆ˜ ์กฐ๊ฑด (AND):
✓ RSI < 30
✓ MACD ๊ณจ๋“ ํฌ๋กœ์Šค
✓ ๊ฑฐ๋ž˜๋Ÿ‰ ๊ธ‰์ฆ
✓ 5์ผ์„  > 20์ผ์„ 

๋งค๋„ ์กฐ๊ฑด (OR):
✓ RSI > 70
✓ MACD ๋ฐ๋“œํฌ๋กœ์Šค
✓ ์ˆ˜์ต๋ฅ  15%
```

---

## 7. ์„ฑ๊ณต ์‚ฌ๋ก€์™€ ์ˆ˜์ต๋ฅ  ๋ถ„์„

### ๐Ÿ† ์‹ค์ œ ์„ฑ๊ณต ์‚ฌ๋ก€

**์‚ฌ๋ก€ 1: ์ง์žฅ์ธ ๊น€๋ชจ์”จ (35์„ธ, IT ๊ฐœ๋ฐœ์ž)**
```
┌──────────────────────────────────────┐
│  ํˆฌ์ž ์ •๋ณด:                           │
│  - ํ”Œ๋žซํผ: ํ‚ค์›€ OpenAPI               │
│  - ์ดˆ๊ธฐ ์ž๋ณธ: 3,000๋งŒ์›               │
│  - ์ „๋žต: ์ด๋™ํ‰๊ท  + RSI ๋ณตํ•ฉ          │
│  - ๊ธฐ๊ฐ„: 2020.01 ~ 2023.12 (3๋…„)     │
│                                      │
│  ๊ฒฐ๊ณผ:                                │
│  - ์ตœ์ข… ์ž์‚ฐ: 5,420๋งŒ์›               │
│  - ์ด ์ˆ˜์ต๋ฅ : 80.7%                   │
│  - ์—ฐํ‰๊ท : 21.9%                      │
│  - ์ตœ๋Œ€ ์†์‹ค: -8.2%                   │
└──────────────────────────────────────┘
```

**์ธํ„ฐ๋ทฐ:**
> "์ฒ˜์Œ์—๋Š” ์ˆ˜๋™์œผ๋กœ ๋งค๋งคํ•˜๋‹ค๊ฐ€ ๊ฐ์ • ์กฐ์ ˆ์ด ์•ˆ ๋ผ์„œ ์†์‹ค์ด ์ปธ์–ด์š”.  
> ์ž๋™๋งค๋งค๋กœ ๋ฐ”๊พผ ํ›„ ๊ทœ์น™์„ ์ง€ํ‚ค๊ฒŒ ๋˜๋‹ˆ ์•ˆ์ •์ ์ธ ์ˆ˜์ต์ด ๋‚˜๋”๋ผ๊ณ ์š”.  
> ํŠนํžˆ ์ง์žฅ ๋‹ค๋‹ˆ๋ฉด์„œ ์‹ ๊ฒฝ ์•ˆ ์จ๋„ ๋ผ์„œ ์ข‹์Šต๋‹ˆ๋‹ค."

**ํ•ต์‹ฌ ์ „๋žต:**
- ์žฅ๊ธฐ: ์‚ผ์„ฑ์ „์ž, ์นด์นด์˜ค ๋“ฑ ์šฐ๋Ÿ‰์ฃผ ๋ณด์œ 
- ๋‹จ๊ธฐ: ๋ณ€๋™์„ฑ ํฐ ์ค‘์†Œํ˜•์ฃผ ์Šค์œ™
- ์†์ ˆ: ๋ฌด์กฐ๊ฑด -5%์—์„œ ์ž๋™ ๋งค๋„

---

**์‚ฌ๋ก€ 2: ์ฃผ๋ถ€ ๋ฐ•๋ชจ์”จ (42์„ธ)**
```
┌──────────────────────────────────────┐
│  ํˆฌ์ž ์ •๋ณด:                           │
│  - ํ”Œ๋žซํผ: ์‹œ์Šคํ…œํŠธ๋ ˆ์ด๋”ฉ (์œ ๋ฃŒ)      │
│  - ์ดˆ๊ธฐ ์ž๋ณธ: 1,000๋งŒ์›               │
│  - ์ „๋žต: ์ œ๊ณต ์ „๋žต ํ™œ์šฉ               │
│  - ๊ธฐ๊ฐ„: 2022.01 ~ 2023.12 (2๋…„)     │
│                                      │
│  ๊ฒฐ๊ณผ:                                │
│  - ์ตœ์ข… ์ž์‚ฐ: 1,380๋งŒ์›               │
│  - ์ด ์ˆ˜์ต๋ฅ : 38%                     │
│  - ์—ฐํ‰๊ท : 17.5%                      │
│  - ๋น„์šฉ: ์›” 49,000์› (์ด 120๋งŒ์›)    │
│  - ์‹ค ์ˆ˜์ต: 260๋งŒ์›                   │
└──────────────────────────────────────┘

์ธํ„ฐ๋ทฐ:

"์ฝ”๋”ฉ์„ ๋ชฐ๋ผ์„œ ์œ ๋ฃŒ ์„œ๋น„์Šค๋ฅผ ์„ ํƒํ–ˆ์–ด์š”.
๋น„์šฉ์ด ๋“ค์ง€๋งŒ ์‹œ๊ฐ„๊ณผ ์ŠคํŠธ๋ ˆ์Šค๋ฅผ ์ƒ๊ฐํ•˜๋ฉด ์ถฉ๋ถ„ํžˆ ๊ฐ€์น˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์•„์ด ํ‚ค์šฐ๋ฉด์„œ๋„ ๋ถ€์ˆ˜์ž…์ด ์ƒ๊ฒจ ๋งŒ์กฑํ•ด์š”."



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

[ํŠน๊ฐ•] 1์–ต์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์€ํ‡ด ์„ค๊ณ„: ํ…Œ์Šฌ๋ผ ๋‹ค์Œ์€ '์ด ์ฃผ์‹'์— ๋ฌป์–ด๋‘ฌ๋ผ

[01/02] ์˜ค๋Š˜์˜ ์›”๊ฐ€ ํˆฌ์ž ๋ธŒ๋ฆฌํ•‘ ์š”์•ฝ: [co]

๐Ÿš€ 2026๋…„ ์—ญ๋Œ€๊ธ‰ ๊ฐ•์„ธ์žฅ ์˜จ๋‹ค! ํŠธ๋Ÿผํ”„๊ฐ€ ์„ค๊ณ„ํ•œ '๋ˆ์˜ ๊ธธ' ์„ ์  ์ „๋žต