diff --git a/main.py b/main.py
new file mode 100644
index 0000000..8055649
--- /dev/null
+++ b/main.py
@@ -0,0 +1,18 @@
+import asyncio
+from dotenv import load_dotenv
+from src.config import Config
+from src.bot import TradingBot
+from src.logger_setup import setup_logger
+
+load_dotenv()
+
+
+async def main():
+ setup_logger(log_level="INFO")
+ config = Config()
+ bot = TradingBot(config)
+ await bot.run()
+
+
+if __name__ == "__main__":
+ asyncio.run(main())
diff --git a/src/logger_setup.py b/src/logger_setup.py
new file mode 100644
index 0000000..b513c31
--- /dev/null
+++ b/src/logger_setup.py
@@ -0,0 +1,24 @@
+import sys
+from loguru import logger
+
+
+def setup_logger(log_level: str = "INFO"):
+ logger.remove()
+ logger.add(
+ sys.stdout,
+ format=(
+ "{time:YYYY-MM-DD HH:mm:ss} | "
+ "{level: <8} | "
+ "{name}:{line} - "
+ "{message}"
+ ),
+ level=log_level,
+ colorize=True,
+ )
+ logger.add(
+ "logs/bot_{time:YYYY-MM-DD}.log",
+ rotation="00:00",
+ retention="30 days",
+ level="DEBUG",
+ encoding="utf-8",
+ )
diff --git a/tests/test_exchange.py b/tests/test_exchange.py
index 7c8c9bc..c57a3e2 100644
--- a/tests/test_exchange.py
+++ b/tests/test_exchange.py
@@ -19,19 +19,20 @@ def config():
@pytest.mark.asyncio
async def test_set_leverage(config):
- client = BinanceFuturesClient(config)
- with patch.object(
- client.client,
- "futures_change_leverage",
- return_value={"leverage": 10},
- ):
+ with patch("src.exchange.Client") as MockClient:
+ mock_binance = MagicMock()
+ MockClient.return_value = mock_binance
+ mock_binance.futures_change_leverage.return_value = {"leverage": 10}
+ client = BinanceFuturesClient(config)
result = await client.set_leverage(10)
assert result is not None
def test_calculate_quantity(config):
- client = BinanceFuturesClient(config)
- # 잔고 1000 USDT, 리스크 2%, 레버리지 10, 가격 0.5
- qty = client.calculate_quantity(balance=1000.0, price=0.5, leverage=10)
- # 1000 * 0.02 * 10 / 0.5 = 400
- assert qty == pytest.approx(400.0, rel=0.01)
+ with patch("src.exchange.Client") as MockClient:
+ MockClient.return_value = MagicMock()
+ client = BinanceFuturesClient(config)
+ # 잔고 1000 USDT, 리스크 2%, 레버리지 10, 가격 0.5
+ qty = client.calculate_quantity(balance=1000.0, price=0.5, leverage=10)
+ # 1000 * 0.02 * 10 / 0.5 = 400
+ assert qty == pytest.approx(400.0, rel=0.01)