def execute_trades(api, best_strategy, selected_tickers):
total_balance = api.get_balance("KRW")
allocation_per_coin = total_balance * 0.9 / len(selected_tickers)
for ticker in selected_tickers:
# 각 코인에 대한 거래 로직
다중 코인 동시 거래
선택된 모든 코인에 대해 동시 거래 실행
코인별 개별 매수/매도 로직 적용
for ticker in selected_tickers:
try:
df = api.get_ohlcv(ticker, interval="minute60", count=24)
signal = strategies[best_strategy](df)
if signal.iloc[-1] == 1:
# 매수 로직
else:
# 매도 로직
except Exception as e:
logger.error(f"{ticker} 거래 중 오류 발생: {e}", exc_info=True)
리스크 관리 개선
최소 주문 금액 확인 로직 추가 (5000원 기준)
잔액 부족 시 거래 스킵 및 로깅
buy_amount = min(allocation_per_coin, api.get_balance("KRW"))
if buy_amount > 5000:
try:
result = api.buy_market_order(ticker, buy_amount)
if result:
logger.info(f"{ticker} 매수 성공 - 금액: {buy_amount}")
else:
logger.error(f"{ticker} 매수 실패 - 금액: {buy_amount}")
except pyupbit.errors.InsufficientFundsBid:
logger.error(f"{ticker} 매수 실패 - 잔액 부족 (요청 금액: {buy_amount}, 사용 가능 잔액: {api.get_balance('KRW')})")
else:
logger.info(f"{ticker} 매수 불가 - 할당 금액 부족: {buy_amount}")
로깅 시스템 강화
코인별 거래 현황 상세 로깅
에러 발생 시 구체적인 원인 기록
logger.info(f"{ticker} - 현재 가격: {current_price}, 보유량: {balance}, 할당 금액: {allocation_per_coin}")
logger.info(f"{ticker} 현재 수익률: {profit_ratio:.2%}")
버그 수정
단일 코인 전체 잔액 투자 문제 해결
이전 버전의 buy_amount = min(krw_balance, 100000) 에서 buy_amount = min(allocation_per_coin, api.get_balance("KRW")) 로 변경