μ΄μ AIκ° λ΄μ€, 곡ν¬νμμ§μ, OHLCV λ°μ΄ν°λ₯Ό μ’ ν© λΆμνμ¬:
- μ΄λ€ μ½μΈμ κ±°λν μ§ μ ν
- λ§€μ/λ§€λ/보μ κ²°μ
- ν¬μ λΉμ€κΉμ§ κ²°μ
λͺ¨λ κ²μ AIκ° λ΄λΉν©λλ€!
mkdir bitcoin_trading
cd bitcoin_trading
# κ° λλ ν 리 μμ±
mkdir config data analysis trading utils logspip install -r requirements.txtUPBIT_ACCESS_KEY=your_upbit_access_key
UPBIT_SECRET_KEY=your_upbit_secret_key
OPENAI_API_KEY=your_openai_api_key # νμ!
SERPAPI_KEY=your_serpapi_key # μ νμ¬ν (λ΄μ€ λΆμμ©)# AI μμ μλλ§€λ§€ μ€ν
python main.py
# ν
μ€νΈ λͺ¨λ (λΆμλ§, κ±°λ μμ)
python main.py --test
# λ°μ΄ν° μμ§λ§ ν
μ€νΈ
python main.py --data-test
# AI μμ€ν
ν
μ€νΈ
python test_ai_full_auto.py- 15κ° μ£Όμ μ½μΈ OHLCV λ°μ΄ν° (λ³λ ¬ μμ§)
- 곡ν¬νμμ§μ νμ¬κ° λ° νΈλ λ
- μ΅μ λ΄μ€ ν€λλΌμΈ λ° κ°μ± λΆμ
- κΈ°μ μ μ§ν κ³μ° (RSI, μ΄λνκ· , λ³λμ± λ±)
AIκ° λ€μμ μ’ ν© νλ¨:
- μμ₯ μ 체 μ¬λ¦¬ λ° νΈλ λ
- κ°λ³ μ½μΈλ³ κΈ°μ μ λΆμ
- λ΄μ€ μν₯λ λ° μμ₯ νμ΄λ°
- 리μ€ν¬ λλΉ μμ΅λ₯
AIκ° κ³ λ €νλ μμ:
- μμΉ μ μ¬λ ₯ vs νλ½ λ¦¬μ€ν¬
- μμ₯ λͺ¨λ©ν κ³Όμ μΌμΉμ±
- λ΄μ€ λ° μμ₯ μ¬λ¦¬ λΆν©λ
- κΈ°μ μ μ νΈμ κ°λ
- Buy: κ°ν μμΉ μ νΈ + μ’μ μ§μ νμ΄λ°
- Sell: νλ½ μ νΈ + μμ΅ μ€ν νμ΄λ°
- Hold: λΆνμ€μ± λλ νμ¬ ν¬μ§μ μ μ§
π€ AI μμ μλλ§€λ§€ νλ‘κ·Έλ¨ μμ
π§ AIκ° μ½μΈ μ νλΆν° λ§€λ§€κΉμ§ λͺ¨λ κ²μ κ²°μ ν©λλ€
π AI μλλ§€λ§€ μ¬μ΄ν΄ #1
π μ’
ν© μμ₯ λ°μ΄ν° μμ§ μ€...
β
BTC λ°μ΄ν° μμ§ μλ£
β
ETH λ°μ΄ν° μμ§ μλ£
β
SOL λ°μ΄ν° μμ§ μλ£
... (15κ° μ½μΈ)
π μ΄ 15κ° μ½μΈ λ°μ΄ν° μμ§ μλ£
π μμ₯ λ°μ΄ν° μμ§ κ²°κ³Ό
==================================================
π± 곡ν¬νμμ§μ: 72 (Greed)
μμ₯μ¬λ¦¬: νμ - μ‘°μ¬μ€λ¬μ΄ λ§€λ
π° λ΄μ€ κ°μ±: +0.156
μμ₯ μ νΈ: μμΉ
λΆμ λ΄μ€: 23κ°
π 1μΌ μμΉλ₯ TOP 5:
1. SOL: +8.34%
2. AVAX: +6.78%
3. MATIC: +5.23%
4. ADA: +4.91%
5. DOT: +3.67%
πΌ νμ¬ ν¬νΈν΄λ¦¬μ€ μν
==================================================
π° KRW μκ³ : 1,000,000μ
πͺ μ½μΈ νκ°μ‘: 0μ
π μ΄ μμ°: 1,000,000μ
π μμ° λ°°λΆ: νκΈ 100.0%, μ½μΈ 0.0%
π§ AI λ§μ€ν° λΆμ μ€...
π§ AI λ§μ€ν° λΆμ κ²°κ³Ό
==================================================
π μμ₯ μ 체 λΆμ:
μ 체 μ¬λ¦¬: bullish
곡ν¬νμμ§μ: νμ ꡬκ°μ΄μ§λ§ λ΄μ€ κΈμ μ μΌλ‘ μμΉ λͺ¨λ©ν
μ μ§
λ΄μ€ μν₯: Solana DeFi μνκ³ νμ₯ μμμ΄ μμ₯μ κΈμ μ μν₯
νΈλ λ: μμΉ
π― AI μ ν μ½μΈ: SOL (KRW-SOL)
μ ν μ΄μ : μ΅κ·Ό DeFi μνκ³ νμ₯κ³Ό κΈ°μ μ μμΉ ν¨ν΄μ΄ κ²°ν©λμ΄ κ°μ₯ λμ μμΉ μ μ¬λ ₯μ 보μ
π’ AI λ§€λ§€ κ²°μ : BUY
μ λ’°λ: 8/10
리μ€ν¬: medium
κ·Όκ±°: μλΌλμ κ°ν κΈ°μ μ μμΉ μ νΈμ κΈμ μ λ΄μ€ λͺ¨λ©ν
μ΄ κ²°ν©λμ΄ λ¨κΈ° μμΉ κ°λ₯μ±μ΄ λμ. DeFi TVL μ¦κ°μ κ°λ°μ νλ μ¦κ°κ° νλλ©νΈμ λ·λ°μΉ¨ν¨.
π μΈλΆ λΆμ:
κΈ°μ μ μ νΈ: RSI 62λ‘ κ³Όλ§€μ μλ, 5μΌμ μν₯ λν
λ΄μ€ μν₯: DeFi νλ‘ν μ½ νμ₯ μμμΌλ‘ κΈμ μ κ°μ±
μμ₯ νμ΄λ°: λ¨κΈ° μμΉ λͺ¨λ©ν
μ§μ
μ κΈ°
μ£Όμ μμΈ: κΈ°μ μ μμΉ ν¨ν΄, DeFi μνκ³ νμ₯, κ°λ°μ νλ μ¦κ°
βοΈ λ¦¬μ€ν¬ κ΄λ¦¬:
ν¬μ λΉμ€: 40.0%
μμ κΈ°μ€: 12%
μ΅μ κΈ°μ€: 25%
πΌ κ±°λ μ€ν: SOL BUY
π° λ§€μ μ€ν: 400,000μ (보μ νκΈμ 40.0%)
β
λ§€μ μ±κ³΅: {'uuid': 'abc123...', 'side': 'bid', 'market': 'KRW-SOL'}
β
AI μ¬μ΄ν΄ μλ£
30μ΄ ν λ€μ μ€νλ©λλ€...
- 곡ν¬νμμ§μ ν΄μ: 0-100 λ²μμμ μμ₯ μ¬λ¦¬ νμ
- λ΄μ€ κ°μ± μ’ ν©: μ€μ ν€λλΌμΈ κΈ°λ° μμ₯ μν₯λ λΆμ
- νΈλ λ λ°©ν₯μ±: μ 체 μμ₯μ νλ¦ νλ¨
- κΈ°μ μ μ°μ: OHLCV ν¨ν΄, RSI, μ΄λνκ· λΆμ
- λ΄μ€ μν©νΈ: ν΄λΉ μ½μΈ κ΄λ ¨ λ΄μ€ μν₯λ
- λͺ¨λ©ν κ°λ: λ¨κΈ°/μ€κΈ° κ°κ²© λ³λ ν¨ν΄
- 리μ€ν¬ νκ°: λ³λμ± λλΉ μμ΅ κ°λ₯μ±
- Buy: μμΉ μ νΈ + μ’μ μ§μ μ + κΈμ μ λ΄μ€
- Sell: νλ½ μν + μμ΅ μ€ν κ΅¬κ° + λΆμ μ μ νΈ
- Hold: λΆνμ€μ± λμ + νμ¬ ν¬μ§μ μ μ
# AI μμ μλν μ€μ
AI_FULL_AUTO_MODE = True
MIN_CONFIDENCE = 6 # AI μ λ’°λ μ΅μ κΈ°μ€
TRADE_INTERVAL = 30 # λΆμ μ£ΌκΈ° (μ΄)
# λΆμ λμ μ½μΈ (15κ°)
SUPPORTED_COINS = [
"KRW-BTC", "KRW-ETH", "KRW-XRP", "KRW-ADA", "KRW-SOL",
"KRW-DOGE", "KRW-AVAX", "KRW-DOT", "KRW-MATIC", "KRW-LINK",
"KRW-UNI", "KRW-LTC", "KRW-BCH", "KRW-ATOM", "KRW-NEAR"
]
# λ΄μ€ λΆμ κ°μ€μΉ
NEWS_WEIGHT = 0.3 # 30%- μ΅λ ν¬μ λΉμ€: 80% μ ν
- μ λ’°λ κΈ°λ° κ±°λ: 6μ μ΄μλ§ μ€ν
- μμ /μ΅μ μλ μ€μ : AIκ° μ½μΈλ³ λ§μΆ€ μ€μ
- ν¬μ§μ μ¬μ΄μ§: 리μ€ν¬ λ 벨μ λ°λ₯Έ μλ μ‘°μ
- AI μ€ν¨ μ: μμ ν κΈ°λ³Έ λ‘μ§μΌλ‘ μ ν
- λ°μ΄ν° λΆμ‘± μ: 보μμ μ κ·ΌμΌλ‘ 리μ€ν¬ μ΅μν
- API μ€λ₯ μ: κ±°λ μ€λ¨ λ° μλ¬ λ‘κΉ
- μμ μλν: μΈκ° κ°μ μμ΄ 24/7 μ΄μ
- μ§λ₯ν νλ¨: 15κ° μ½μΈ μ€ μ΅μ μ ν
- μ’ ν© λΆμ: κΈ°μ μ + λ΄μ€ + μ¬λ¦¬ ν΅ν© λΆμ
- μ μν 리μ€ν¬: μμ₯ μν©μ λ§λ λμ 리μ€ν¬ κ΄λ¦¬
- μ€μκ° λ°μ: μμ₯ λ³νμ μ¦κ° λμ
- OpenAI API νμ: GPT-4 λΆμμ μν΄ λ°λμ νμ
- μΆ©λΆν μκΈ: λ€μν μ½μΈ κ±°λλ₯Ό μν μ μ μκΈ κΆμ₯
- μμ₯ λ³λμ±: λμ λ³λμ± μκΈ°μλ λ 보μμ μ κ·Ό
- μ κΈ° λͺ¨λν°λ§: μμ μλνμ΄μ§λ§ μ£ΌκΈ°μ μ κ² κΆμ₯
- λ λ§μ μ½μΈ: μ§μ μ½μΈ νλ (μνΈμ½μΈ ν¬ν¨)
- κ³ κΈ μ§ν: MACD, λ³Όλ¦°μ λ°΄λ λ± μΆκ°
- κ°μ λΆμ: μμ λ―Έλμ΄ κ°μ± λΆμ μΆκ°
- λ°±ν μ€ν : κ³Όκ±° λ°μ΄ν°λ‘ μ λ΅ κ²μ¦
μ΄μ AIκ° λͺ¨λ κ²μ λ΄λΉνλ μμ μλν νΈλ μ΄λ© μμ€ν μ΄ μμ±λμμ΅λλ€! π€β¨## π μ€ν μμ
π μ΅μ μ½μΈ μ ν λΆμ μ€...
π μ νλ μ½μΈ: SOL (KRW-SOL)
π μ΅μ’
μ μ: 87.30μ
- κΈ°λ³Έ μ±κ³Ό: 72.50μ
- λ΄μ€ 보λμ€: 14.80μ
νμ¬ ν¬μ μν (KRW-SOL):
- KRW μκ³ : 1,000,000μ
- SOL μκ³ : 0.00000000 SOL
- μ΄ μμ°: 1,000,000μ
π λ΄μ€ λΆμ μ€...
νμ¬ SOL κ°κ²©: 185,400μ
λ΄μ€ κ°μ± λΆμ:
- μ 체 κ°μ±: +0.234
- μμ₯ μ νΈ: μμΉ
- λΆμ λ΄μ€: 18κ°
- κΈμ : 12κ°, λΆμ : 3κ°
AI μΆμ²:
- μ‘μ
: buy
- μ λ’°λ: 8/10
- λ΄μ€ μν₯λ: high
- μ£Όμ μμΈ: ["λ΄μ€ κΈμ μ κ°μ±", "κ°κ²© μμΉ λͺ¨λ©ν
", "κ±°λλ μ¦κ°"]
```# λΉνΈμ½μΈ μλλ§€λ§€ νλ‘κ·Έλ¨ μ¬μ©λ²
## π μ€μΉ λ° μ€ν
### 1. νλ‘μ νΈ κ΅¬μ‘° μμ±
```bash
mkdir bitcoin_trading
cd bitcoin_trading
# κ° λλ ν 리 μμ±
mkdir config data analysis trading utils logs
pip install -r requirements.txtUPBIT_ACCESS_KEY=your_upbit_access_key
UPBIT_SECRET_KEY=your_upbit_secret_key
OPENAI_API_KEY=your_openai_api_key # μ νμ¬ν
SERPAPI_KEY=your_serpapi_key # λ΄μ€ λΆμμ© (μ νμ¬ν)# μΌλ° μ€ν (μλλ§€λ§€ + μλ μ½μΈ μ ν)
python main.py
# ν
μ€νΈ λͺ¨λ (λΆμλ§, κ±°λ μμ)
python main.py --test
# μ½μΈ μ ν ν
μ€νΈ
python main.py --coin-select
# λ΄μ€ λΆμ ν
μ€νΈ
python test_news_analysis.py
# μ½μΈ μ ν ν
μ€νΈ
python test_coin_selection.py- λͺ¨λ μ€μ κ° μ€μ κ΄λ¦¬
- API ν€, κ±°λ μ€μ , μ½μΈ μ ν μ€μ λ±
- μλ μ½μΈ μ ν: 15κ° μ£Όμ μ½μΈ μ€ μ΅μ μ ν
- μ±κ³Ό λΆμ: κ°κ²© λͺ¨λ©ν , κ±°λλ, λ³λμ± λ± μ’ ν© λΆμ
- λ΄μ€ νΈλ λ©: λ΄μ€ μΈκΈλμ κ°μ± λΆμ κΈ°λ° νΈλ λ© μ½μΈ μ μ
- μ’ ν© μ μ: κΈ°μ μ λΆμ + λ΄μ€ κ°μ±μ μ‘°ν©ν μ΅μ’ μ μ
- SerpAPIλ₯Ό ν΅ν Google News λ°μ΄ν° μμ§
- λΉνΈμ½μΈ/μνΈνν κ΄λ ¨ λ΄μ€ κ°μ± λΆμ
- ν€μλ κΈ°λ° κ°μ± μ μ κ³μ°
- μκ° κ°μ€μΉ μ μ©ν μ’ ν© λΆμ
- μ λΉνΈ μμ₯ λ°μ΄ν° μμ§
- OHLCV, νμ¬κ°, νΈκ° μ 보
- 곡ν¬νμμ§μ API μ°λ
- νΈλ λ λΆμ λ° κ±°λ ν©ν° κ³μ°
- OpenAI GPT-4λ₯Ό μ΄μ©ν AI λΆμ
- ν둬ννΈ κ΄λ¦¬ λ° μλ΅ κ²μ¦
- κΈ°μ μ λΆμ (λ°±μ μ©)
- μ΄λνκ· , RSI λ± κ³μ°
- ν¬νΈν΄λ¦¬μ€ μν κ΄λ¦¬
- μκ³ , μμ΅λ₯ κ³μ°
- μ€μ λ§€λ§€ μ€ν
- 리μ€ν¬ κ΄λ¦¬ λ° κ±°λλ μ‘°μ
- κ±°λ λ‘κ·Έ κΈ°λ‘
- μΌμΌ/μλ¬ λ‘κ·Έ κ΄λ¦¬
config/settings.pyμμ μ€μ λ³κ²½:
TARGET_COIN = "AUTO" # μλ μ ν νμ±ν
AUTO_SELECTION_ENABLED = True
COIN_ANALYSIS_INTERVAL = 3600 # 1μκ°λ§λ€ μ¬λΆμ
SUPPORTED_COINS = ["KRW-BTC", "KRW-ETH", ...] # λΆμ λμ μ½μΈTARGET_COIN = "KRW-ETH" # μ΄λ리μ κ³ μ
AUTO_SELECTION_ENABLED = False- SerpAPIμμ API ν€ λ°κΈ
.envνμΌμSERPAPI_KEYμΆκ°config/settings.pyμμ λ΄μ€ κ°μ€μΉ μ‘°μ :NEWS_WEIGHT: λ΄μ€ κ°μ±μ κ±°λ κ²°μ μν₯λ (0.0 ~ 1.0)
config/settings.pyμμ λ€μ κ°λ€μ μ‘°μ :
MIN_CONFIDENCE: μ΅μ μ λ’°λ (κΈ°λ³Έ: 6)TRADE_RATIOS: 리μ€ν¬λ³ κ±°λ λΉμ¨TRADE_INTERVAL: κ±°λ μ£ΌκΈ° (κΈ°λ³Έ: 30μ΄)
analysis/ai_analyzer.pyμ _get_system_prompt() λ©μλμμ ν둬ννΈ μμ κ°λ₯
logs/trades_YYYYMMDD.json: κ±°λ κΈ°λ‘logs/analysis_YYYYMMDD.json: λΆμ κΈ°λ‘logs/errors_YYYYMMDD.log: μλ¬ λ‘κ·Έ
- ν μ€νΈ λͺ¨λλ‘ λ¨Όμ μ€ννμ¬ μ μ μλ νμΈ
- μμ‘μΌλ‘ μμνμ¬ μ λ΅ κ²μ¦
- λ‘κ·Έλ₯Ό μ κΈ°μ μΌλ‘ νμΈνμ¬ μ±κ³Ό λͺ¨λν°λ§
- API ν€λ μ λ 곡μ νμ§ λ§ κ²
- μ λΉνΈ API ν€ κΆν νμΈ
- IP νμ΄νΈλ¦¬μ€νΈ μ€μ νμΈ
- API ν€ μ ν¨μ± νμΈ
- ν¬λ λ§ μμ‘ νμΈ
- AI μμ΄λ λ°±μ λΆμμΌλ‘ μλ κ°λ₯
- μ΅μ κ±°λ κΈμ‘ νμΈ (5,000μ)
- μκ³ λΆμ‘± μ¬λΆ νμΈ
- λ€νΈμν¬ μ°κ²° μν νμΈ
νλ‘κ·Έλ¨ μ’ λ£ μ μλμΌλ‘ μΆλ ₯λλ μΌμΌ κ±°λ μμ½:
- μ΄ κ±°λ μλ νμ
- μ±κ³΅ν κ±°λ νμ
- λ§€μ/λ§€λ νμ
- κ±°λ κΈμ‘
# κ±°λ λ‘κ·Έ λΆμ μμ
import json
with open('logs/trades_20241124.json', 'r') as f:
trades = json.load(f)
# μ±κ³΅λ₯ κ³μ°
success_rate = len([t for t in trades if t['success']]) / len(trades) * 100
print(f"κ±°λ μ±κ³΅λ₯ : {success_rate:.1f}%")analysis/technical_analyzer.pyμ μλ‘μ΄ κΈ°μ μ μ§ν λ©μλ μΆκ°:
def calculate_macd(self, df, fast=12, slow=26, signal=9):
# MACD κ³μ° λ‘μ§
passconfig/settings.pyμμ TARGET_COIN λ³κ²½:
TARGET_COIN = "KRW-ETH" # μ΄λ리μutils/logger.pyμ ν
λ κ·Έλ¨/μ¬λ μλ¦Ό κΈ°λ₯ μΆκ° κ°λ₯
κ³Όκ±° λ°μ΄ν°λ‘ μ λ΅ κ²μ¦νλ λͺ¨λ μΆκ° κ°λ₯
trading/executor.pyμ μμ λ§€ λ‘μ§ μΆκ°:
def check_stop_loss(self, investment_status, stop_loss_rate=0.05):
# 5% μμ€ μ μλ λ§€λ
passμ€μ μμ μ΅λ ν¬μ λΉμ¨ μ ν:
MAX_INVESTMENT_RATIO = 0.8 # μ΄ μμ°μ 80%κΉμ§λ§- κ±°λ μ£ΌκΈ° μ‘°μ : λ무 μμ£Ό κ±°λνλ©΄ μμλ£ λΆλ΄
- μ λ’°λ μκ³κ°: λμΌμλ‘ μμ νμ§λ§ κΈ°ν κ°μ
- 곡ν¬νμμ§μ νμ©: κ·Ήλ¨μ μν©μμ λ 곡격μ κ±°λ
- 리μ€ν¬ λ 벨: μμ₯ μν©μ λ°λΌ λμ μ‘°μ κ³ λ €