ΠΡΠΎΠ±Π»Π΅ΠΌΠ°: Π ΡΡΠ½Π°Ρ ΡΠΎΡΠ³ΠΎΠ²Π»Ρ Π°ΡΠ±ΠΈΡΡΠ°ΠΆΠ΅ΠΌ ΡΠΏΠΎΡ-ΡΡΡΡΠ΅ΡΡ Π½Π° ΠΊΡΠΈΠΏΡΠΎΠ±ΠΈΡΠΆΠ΅ ΡΡΠ΅Π±ΡΠ΅Ρ 24/7 ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΡΠΎΡΠ΅Π½ ΠΏΠ°Ρ, ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΡΡΠ΅ΡΠ° ΡΠΏΡΠ΅Π΄ΠΎΠ² ΠΈ funding rate, ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΡΠ΄Π΅ΡΠΎΠ² ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΡΠΊΠ°ΠΌΠΈ β ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅: ΠΠΎΠ»Π½ΠΎΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π°ΡΠ±ΠΈΡΡΠ°ΠΆΠ½ΡΠΉ Π±ΠΎΡ Π΄Π»Ρ Bybit Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΌ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ΠΎΠΌ ΠΏΠΎΠ·ΠΈΡΠΈΠΉ, ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½ΡΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π·Π°ΠΊΡΡΡΠΈΠ΅ΠΌ, Telegram-ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡΠΌΠΈ ΠΈ SQLite Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ
Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΡΡΠΎΡΠΈΠΈ ΡΠ΄Π΅Π»ΠΎΠΊ.
π ΠΠ°Π΄Π°ΡΠ°
Π‘ΠΎΠ·Π΄Π°ΡΡ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΡ ΡΠΎΡΠ³ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π΄Π»Ρ Π·Π°ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌ funding rate ΠΈ ΡΠΏΡΠ΅Π΄Π°Ρ
ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΏΠΎΡ ΠΈ ΡΡΡΡΠ΅ΡΡΠ½ΡΠΌΠΈ ΡΡΠ½ΠΊΠ°ΠΌΠΈ Bybit. ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ:
- Π‘ΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΡΠ΅Π½ ΡΠΎΡΠ³ΠΎΠ²ΡΡ
ΠΏΠ°Ρ β Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ ΠΏΠΎ ΡΠΏΡΠ΅Π΄Ρ (β₯0.45%) ΠΈ funding rate (β₯0.02%)
- Π’ΠΎΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΡΠ΄Π΅ΡΠΎΠ² β ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎΠ΅ ΠΎΡΠΊΡΡΡΠΈΠ΅ ΡΡΡΡΠ΅ΡΡΠ° SHORT + ΡΠΏΠΎΡΠ° LONG Ρ ΡΡΠ΅ΡΠΎΠΌ qtyStep, basePrecision, minOrderQty
- ΠΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ β ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΎΡΠΊΡΡΡΠ°Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ daemon-ΠΏΠΎΡΠΎΠΊΠ΅ Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ ΡΡΠ»ΠΎΠ²ΠΈΠΉ Π·Π°ΠΊΡΡΡΠΈΡ ΠΊΠ°ΠΆΠ΄ΡΠ΅ 5 ΠΌΠΈΠ½ΡΡ
- ΠΠ²ΡΡ
ΡΠ΅ΠΆΠΈΠΌΠ½ΠΎΠ΅ Π·Π°ΠΊΡΡΡΠΈΠ΅ β ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ (FR < -0.001%) ΠΈ ΠΌΡΠ³ΠΊΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ (ΠΏΠΎΡΠ»Π΅ 15+ ΡΠ°ΡΠ½Π΄ΠΎΠ² Ρ Π½ΠΈΠ·ΠΊΠΈΠΌ FR)
- Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΡΠΊΠ°ΠΌΠΈ β blacklist Π΄Π»Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΡΡ
ΠΌΠΎΠ½Π΅Ρ, rate limiting (50 req/sec, 300 weight/sec), ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ
- Π Π΅Π°Π»ΡΠ½ΡΠΉ ΡΠ°ΡΡΠ΅Ρ PnL β ΡΠ΅ΡΠ΅Π· Bybit API `/execution/list` Π΄Π»Ρ ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π½Π΄ΠΈΠ½Π³Π°, Π½Π΅ ΠΏΡΠΎΠ³Π½ΠΎΠ·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΠΆΠ½Π° Π±ΡΠ»Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Ρ Repository Pattern, Alembic ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΠΌΠΈ, Telegram-ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠ΅ΠΉ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°.
βοΈ Π§ΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ
πΉ ΠΠ»ΡΡΠ΅Π²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΡΠΈΡΡΠ΅ΠΌΡ:
- Spot-Futures Arbitrage (Cash & Carry) β ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΎΡΠΊΡΡΡΠΈΠ΅ ΡΠΏΠΎΡ LONG + ΡΡΡΡΠ΅ΡΡ SHORT Π΄Π»Ρ Ρ
Π΅Π΄ΠΆΠΈΡΠΎΠ²Π°Π½ΠΈΡ
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΠ° β ΠΊΠ°ΠΆΠ΄ΡΠ΅ 3 ΠΌΠΈΠ½ΡΡΡ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ Π²ΡΠ΅ ΠΏΠ°ΡΡ Bybit, ΡΠΈΠ»ΡΡΡΡΠ΅Ρ ΠΏΠΎ ΡΠΏΡΠ΅Π΄Ρ ΠΈ funding rate
- ΠΡΠΈΠΎΡΠΈΡΠ΅Ρ ΡΡΡΡΠ΅ΡΡΠ° ΠΏΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ β ΡΠ½Π°ΡΠ°Π»Π° SHORT ΡΡΡΡΠ΅ΡΡ, Π·Π°ΡΠ΅ΠΌ LONG ΡΠΏΠΎΡ (ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΎΡΠΈΠ±ΠΊΠ΅ ΡΠΏΠΎΡΠ°)
- ΠΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π·Π°ΠΊΡΡΡΠΈΡ β ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ daemon-ΠΏΠΎΡΠΎΠΊΠ΅ Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ FR ΠΈ ΡΠΏΡΠ΅Π΄Π° ΠΊΠ°ΠΆΠ΄ΡΠ΅ 5 ΠΌΠΈΠ½ΡΡ
- ΠΠ²ΡΡ
ΡΠ΅ΠΆΠΈΠΌΠ½ΠΎΠ΅ Π·Π°ΠΊΡΡΡΠΈΠ΅ β ΠΎΠ±ΡΡΠ½ΡΠΉ (FR < -0.001%, ΡΠΏΡΠ΅Π΄ β€0.15%) ΠΈ ΠΌΡΠ³ΠΊΠΈΠΉ (FR β€0.005% ΠΏΠΎΡΠ»Π΅ 15+ ΡΠ°ΡΠ½Π΄ΠΎΠ² Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ FR)
- SQLite Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ
β SQLAlchemy ORM Π΄Π»Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠΉ, ΠΈΡΡΠΎΡΠΈΠΈ ΡΠ΄Π΅Π»ΠΎΠΊ ΠΈ blacklist Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ ΠΈ thread-safety
- Alembic ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ β Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡ
Π΅ΠΌΡ ΠΠ, ΡΠΊΡΠΈΠΏΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ blacklist.json β DB
- Repository Pattern + DI β PositionRepository, HistoryRepository, BlacklistRepository Ρ Dependency Injection
- Telegram Bot ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ β ΠΊΠΎΠΌΠ°Π½Π΄Ρ /start, /status, /positions, /stats + real-time ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΎ ΡΠ΄Π΅Π»ΠΊΠ°Ρ
- Π Π΅Π°Π»ΡΠ½ΡΠΉ ΡΠ°ΡΡΠ΅Ρ ΡΠ°Π½Π΄ΠΈΠ½Π³Π° β ΡΠ΅ΡΠ΅Π· API `/execution/list` Ρ ΡΠ°Π·Π±ΠΈΠ²ΠΊΠΎΠΉ ΠΏΠΎ 7-Π΄Π½Π΅Π²Π½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π°ΠΌ, Π½Π΅ ΠΏΡΠΎΠ³Π½ΠΎΠ·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
- Rate Limiter (Token Bucket) β Π·Π°ΡΠΈΡΠ° ΠΎΡ Bybit Π»ΠΈΠΌΠΈΡΠΎΠ² (50 req/sec, 300 weight/sec)
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ blacklist β Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ½Π΅Ρ Ρ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ (delisting, symbol not found, suspended trading)
- Π’ΠΎΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΠ΅ qty β ΡΠ΅ΡΠ΅Π· Decimal Ρ ROUND_DOWN Π΄Π»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ qtyStep ΠΈ basePrecision
- ΠΠ²ΡΠΎΠ²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΉ β ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ΅ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΠΈΠ· ΠΠ ΠΈ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³
πΉ Π’Π΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ:
Python 3.9+ SQLAlchemy 2.0 Alembic python-telegram-bot 20.7 Bybit API v5 Threading ThreadPoolExecutor SQLite (WAL mode) Token Bucket Algorithm Repository Pattern Dependency Injection
π ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
- Π‘ΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (ΠΊΠ°ΠΆΠ΄ΡΠ΅ 3 ΠΌΠΈΠ½) β Orchestrator ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π²ΡΠ΅ ΠΏΠ°ΡΡ Bybit, ΡΠΈΠ»ΡΡΡΡΠ΅Ρ blacklist, Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠΏΡΠ΅Π΄Ρ ΡΠ΅ΡΠ΅Π· orderbook bid/ask
- ΠΡΠ±ΠΎΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ β SpreadAnalyzer + ArbitrageCalculator Π½Π°Ρ
ΠΎΠ΄ΡΡ ΡΠΎΠΏ-N ΠΏΠ°Ρ Ρ spread β₯0.45% ΠΈ FR β₯0.02%
- ΠΡΠΊΡΡΡΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ β OpportunityMonitor: ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΠ»Π΅ΡΠ° (1x) β SHORT ΡΡΡΡΠ΅ΡΡ β LONG ΡΠΏΠΎΡ β ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π² ΠΠ β Telegram ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅
- Daemon ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ β ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠ°ΠΆΠ΄ΡΠ΅ 5 ΠΌΠΈΠ½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΡΠ»ΠΎΠ²ΠΈΡ Π·Π°ΠΊΡΡΡΠΈΡ
- ΠΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ FR β ΡΡΠ΅ΡΡΠΈΠΊ `low_fr_count` ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ FR β€0.01%, ΠΏΠΎΡΠ»Π΅ 15+ ΡΠ°ΡΠ½Π΄ΠΎΠ² Π°ΠΊΡΠΈΠ²ΠΈΡΡΠ΅ΡΡΡ ΠΌΡΠ³ΠΊΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ
- ΠΠ°ΠΊΡΡΡΠΈΠ΅ β ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΉ: ΠΏΡΠΎΠ΄Π°ΠΆΠ° ΡΠΏΠΎΡΠ° (ΠΏΠΎ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΌΡ Π±Π°Π»Π°Π½ΡΡ) β ΠΏΠΎΠΊΡΠΏΠΊΠ° ΡΡΡΡΠ΅ΡΡΠ° (reduceOnly) β ΡΠ°ΡΡΠ΅Ρ PnL + ΡΠ΅Π°Π»ΡΠ½ΡΠΉ ΡΠ°Π½Π΄ΠΈΠ½Π³
- ΠΡΡΠΎΡΠΈΡ + ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° β HistoryRepository ΡΠΎΡ
ΡΠ°Π½ΡΠ΅Ρ Π·Π°ΠΊΡΡΡΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ, ΡΡΠΈΡΠ°Π΅Ρ win rate, avg PnL, total PnL ΡΠ΅ΡΠ΅Π· SQL Π·Π°ΠΏΡΠΎΡΡ
π§ ΠΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ
Π£ΠΌΠ½ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΡΠΊΠ°ΠΌΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ:
- ΠΡΠΈΠΎΡΠΈΡΠ΅Ρ ΡΡΡΡΠ΅ΡΡΠ° β ΡΠ½Π°ΡΠ°Π»Π° SHORT ΡΡΡΡΠ΅ΡΡ (ΠΊΡΠΈΡΠΈΡΠ½Π΅Π΅), Π·Π°ΡΠ΅ΠΌ LONG ΡΠΏΠΎΡ; ΠΏΡΠΈ ΠΎΡΠΈΠ±ΠΊΠ΅ ΡΠΏΠΎΡΠ° β ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Ρ qty Π΄Π»Ρ ΡΡΡΠ½ΠΎΠ³ΠΎ Π·Π°ΠΊΡΡΡΠΈΡ
- ΠΠ²ΡΡ
ΡΠ΅ΠΆΠΈΠΌΠ½ΠΎΠ΅ Π·Π°ΠΊΡΡΡΠΈΠ΅ β ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ (FR < -0.001%) ΠΈ ΠΌΡΠ³ΠΊΠΈΠΉ (FR β€0.005% ΠΏΠΎΡΠ»Π΅ 15 ΡΠ°ΡΠ½Π΄ΠΎΠ² Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ FR) Π΄Π»Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈΠ±ΡΠ»ΠΈ
- Π Π΅Π°Π»ΡΠ½ΡΠΉ ΡΠ°Π½Π΄ΠΈΠ½Π³ ΡΠ΅ΡΠ΅Π· API β Π·Π°ΠΏΡΠΎΡ `/execution/list` Ρ execType:"Funding", ΡΠ°Π·Π±ΠΈΠ²ΠΊΠ° ΠΏΠΎ 7-Π΄Π½Π΅Π²Π½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π°ΠΌ Π΄Π»Ρ ΡΠΎΡΠ½ΠΎΠ³ΠΎ PnL
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ blacklist β ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠ΄Ρ ΠΎΡΠΈΠ±ΠΎΠΊ (30228, 10001, 110043) Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΌΠΎΠ½Π΅ΡΡ Π² blacklist Ρ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ ΠΈ timestamp
- Π’ΠΎΡΠ½Π°Ρ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ° β Decimal Ρ ROUND_DOWN Π΄Π»Ρ qty, ΡΡΠ΅Ρ qtyStep/basePrecision/minOrderQty ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°
- Thread-safe ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ β RLock Π΄Π»Ρ PositionManager, singleton Π΄Π»Ρ BlacklistManager Ρ ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π² ΠΏΠ°ΠΌΡΡΠΈ + ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Ρ ΠΠ
π Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ
24/7
Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ Π°Π²ΡΠΎΠ²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ
83.3%
win rate (10 ΠΈΠ· 12 ΠΏΡΠΈΠ±ΡΠ»ΡΠ½ΡΡ
ΡΠ΄Π΅Π»ΠΎΠΊ)
+45.80
USDT ΡΡΠΌΠΌΠ°ΡΠ½Π°Ρ ΠΏΡΠΈΠ±ΡΠ»Ρ Π½Π° ΠΈΡΡΠΎΡΠΈΠΈ
300ms
ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΠ»ΠΎΠ²ΠΈΠΉ Π·Π°ΠΊΡΡΡΠΈΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ
3 ΡΠ»ΠΎΡ
Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ: Repository β Manager β Orchestrator
7 ΠΊΠΎΠΌΠ°Π½Π΄
Telegram Π±ΠΎΡΠ° Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΈ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ
π‘ Π’Π΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΈΠ·ΡΠΌΠΈΠ½ΠΊΠ°
π― Repository Pattern + Dependency Injection:
ΠΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΠ°Ρ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ° Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠ»ΠΎΠ΅Π²: PositionRepository, HistoryRepository, BlacklistRepository ΠΈΠ½ΠΆΠ΅ΠΊΡΠΈΡΡΡΡΡΡ Π² ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ. SQLAlchemy session ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Ρ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡ
, Orchestrator ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ°ΠΌΠΈ. Alembic Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ: alembic revision --autogenerate -m "add_column".
βοΈ ΠΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ
- Π’ΡΠ΅Ρ
ΡΠ»ΠΎΠΉΠ½Π°Ρ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ° β Repository (Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΠ) β Manager (Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠ°) β Orchestrator (ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠΈΡ)
- Alembic ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ β Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡ
Π΅ΠΌΡ, Π°Π²ΡΠΎΠ³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΉ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° downgrade Π΄Π»Ρ ΠΎΡΠΊΠ°ΡΠ°
- Thread-safe ΠΠ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ β SQLAlchemy session factory, RLock Π΄Π»Ρ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠ΅ΠΊΡΠΈΠΉ, WAL mode Π΄Π»Ρ SQLite
- Telegram Π² daemon thread β asyncio.new_event_loop() Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π² non-main thread, graceful shutdown ΠΏΡΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ
- Token Bucket Rate Limiter β ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ bucket Π΄Π»Ρ requests/sec ΠΈ weight/sec Ρ atomic ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ
- Singleton BlacklistManager β in-memory ΠΊΠ΅Ρ (Set[str]) + ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Ρ ΠΠ, thread-safe ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
- ΠΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ β Π΅ΡΠ»ΠΈ ΡΡΡΡΠ΅ΡΡ ΠΎΡΠΊΡΡΡ, Π½ΠΎ ΡΠΏΠΎΡ Π½Π΅ ΠΎΡΠΊΡΡΠ»ΡΡ β Telegram Ρ qty Π΄Π»Ρ ΡΡΡΠ½ΠΎΠ³ΠΎ Π·Π°ΠΊΡΡΡΠΈΡ
π§ ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ
πΉ Telegram Bot ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»:
- /start β ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ + ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ
ΠΊΠΎΠΌΠ°Π½Π΄
- /status β Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ, ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΊΡΡΡΡΡ
ΠΏΠΎΠ·ΠΈΡΠΈΠΉ, ΡΠ°Π·ΠΌΠ΅Ρ blacklist, Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΡΠ»ΠΎΡΡ
- /positions β ΡΠΏΠΈΡΠΎΠΊ ΠΎΡΠΊΡΡΡΡΡ
ΠΏΠΎΠ·ΠΈΡΠΈΠΉ Ρ ΡΠ΅Π½Π°ΠΌΠΈ Π²Ρ
ΠΎΠ΄Π°, qty, ΡΠΏΡΠ΅Π΄ΠΎΠΌ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΠ΄Π΅ΡΠΆΠ°Π½ΠΈΡ
- /stats β ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°: ΡΠ΄Π΅Π»ΠΊΠΈ, win rate, total PnL, avg PnL, Π»ΡΡΡΠ°Ρ/Ρ
ΡΠ΄ΡΠ°Ρ ΡΠ΄Π΅Π»ΠΊΠ°
- Real-time ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ β ΠΎΡΠΊΡΡΡΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ (crypto, ΡΠ΅Π½Ρ, qty, spread, FR)
- Π£Π²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΎ Π·Π°ΠΊΡΡΡΠΈΠΈ β Π²ΡΠ΅ΠΌΡ ΡΠ΄Π΅ΡΠΆΠ°Π½ΠΈΡ, spot/futures/funding PnL, ΠΊΠΎΠΌΠΈΡΡΠΈΠΈ, net PnL
- ΠΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ β π¨ ΡΡΡΡΠ΅ΡΡ ΠΎΡΠΊΡΡΡ, ΡΠΏΠΎΡ Π½Π΅ ΠΎΡΠΊΡΡΠ»ΡΡ (Ρ qty Π΄Π»Ρ ΡΡΡΠ½ΠΎΠ³ΠΎ Π·Π°ΠΊΡΡΡΠΈΡ)
- Blacklist ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ β Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ½Π΅ΡΡ Ρ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ ΠΈ ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡΠΈΠ±ΠΊΠΈ
πΉ Database Features:
- SQLAlchemy ORM β ΠΌΠΎΠ΄Π΅Π»ΠΈ Position, ClosedPosition, Blacklist Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ ΠΈ relationships
- Alembic ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ β Π°Π²ΡΠΎΠ³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΠ΅ΡΠ΅Π· `--autogenerate`, Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, upgrade/downgrade
- Π‘ΠΊΡΠΈΠΏΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ β `migrate_blacklist_to_db.py` Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° JSON β SQLite
- Π‘ΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΡΠ΅ΡΠ΅Π· SQL β Π°Π³ΡΠ΅Π³Π°ΡΠΈΡ win rate, avg PnL, total PnL ΡΠ΅ΡΠ΅Π· SQLAlchemy queries
- WAL mode β Π²ΠΊΠ»ΡΡΠ΅Π½ Π΄Π»Ρ Π»ΡΡΡΠ΅Π³ΠΎ concurrent access ΠΊ SQLite
π Π‘ΡΠ΅Π½Π°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
- ΠΡΠΈΠΏΡΠΎΠ²Π°Π»ΡΡΠ½ΡΠΉ Π°ΡΠ±ΠΈΡΡΠ°ΠΆ β Π·Π°ΡΠ°Π±ΠΎΡΠΎΠΊ Π½Π° ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌ funding rate ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΏΠΎΡ ΠΈ ΡΡΡΡΠ΅ΡΡΠ½ΡΠΌΠΈ ΡΡΠ½ΠΊΠ°ΠΌΠΈ
- Π₯Π΅Π΄ΠΆΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡΡΡΠ΅Π»Ρ β Π½Π΅ΠΉΡΡΠ°Π»ΡΠ½Π°Ρ ΠΊ ΡΡΠ½ΠΊΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ (ΡΠΏΠΎΡ LONG + ΡΡΡΡΠ΅ΡΡ SHORT)
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΡΠΎΡΠ³ΠΎΠ²Π»ΠΈ β 24/7 ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π±Π΅Π· ΡΡΠ°ΡΡΠΈΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ° Ρ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡΠΌΠΈ Π² Telegram
- Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΉ β ΡΠ±ΠΎΡ ΠΈΡΡΠΎΡΠΈΠΈ ΡΠ΄Π΅Π»ΠΎΠΊ Π² ΠΠ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ
- ΠΠ±ΡΡΠ΅Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΡΠ΅ΠΉΠ΄ΠΈΠ½Π³Ρ β ΠΏΡΠΈΠΌΠ΅Ρ production-ready ΡΠΈΡΡΠ΅ΠΌΡ Ρ Repository Pattern ΠΈ DI
β
ΠΡΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡΡ Π²Π°ΠΌ, Π΅ΡΠ»ΠΈ:
- ΠΡΠΆΠ½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΡΠΎΡΠ³ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π΄Π»Ρ Bybit (ΠΈΠ»ΠΈ Π°Π΄Π°ΠΏΡΠ°ΡΠΈΡ ΠΏΠΎΠ΄ Binance/OKX)
- Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ
ΠΏΠΎΠ·ΠΈΡΠΈΠΉ Ρ ΡΠΎΡΠ½ΡΠΌ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ
- Π₯ΠΎΡΠΈΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΡΡ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ Ρ Repository Pattern, DI, ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΠΌΠΈ
- ΠΡΠΆΠ΅Π½ Telegram-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΈ real-time ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ
- ΠΡΠ΅ΡΠ΅ Π³ΠΎΡΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΡΠΊΠ°ΠΌΠΈ (blacklist, rate limiting, ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ)
- ΠΠ»Π°Π½ΠΈΡΡΠ΅ΡΠ΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° PostgreSQL ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ web dashboard
ΠΡΠΆΠ΅Π½ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΎΡΠ³ΠΎΠ²ΡΠΉ Π±ΠΎΡ Π΄Π»Ρ ΠΊΡΠΈΠΏΡΠΎΠ±ΠΈΡΠΆΠΈ?
Π Π°Π·Π²Π΅ΡΠ½Ρ Π°ΡΠ±ΠΈΡΡΠ°ΠΆΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠΌ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ΠΎΠΌ, Telegram-ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠ΅ΠΉ ΠΈ production-ready Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠΎΠΉ Π½Π° Π²Π°ΡΠ΅ΠΌ VPS
ΠΠ±ΡΡΠ΄ΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡ β