Files
Place-Order-Trading-Bot/add_telegram_cells.py
T

162 lines
6.2 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
"""
Fügt Telegram Bot Command Cells ins Notebook hinzu
"""
import json
import sys
# Load notebook
notebook_path = "TradingBot_V1.6_Adaptive_Complete_CORRECTED.ipynb"
print(f"📖 Loading notebook: {notebook_path}")
with open(notebook_path, 'r', encoding='utf-8') as f:
notebook = json.load(f)
# Count cells
total_cells = len(notebook['cells'])
print(f"📊 Current cells: {total_cells}")
# Find position to insert (after session confidence filter cells, which should be around cell 26)
# We want to insert after cell 26 (the session confidence filter)
insert_position = 27 # After cell 26 (0-indexed: position 27)
# Create Cell 1: Telegram Bot Starter (Markdown Info)
telegram_info_cell = {
"cell_type": "markdown",
"metadata": {},
"source": [
"## 🤖 Telegram Bot Commands - Remote Control\n",
"\n",
"**Status:** ACTIVE - Bot läuft im Hintergrund\n",
"\n",
"### 📱 Verfügbare Commands:\n",
"\n",
"**Bot Control:**\n",
"- `/status` - Bot Status, offene Positionen, Balance\n",
"- `/pause` - Trading pausieren (keine neuen Trades)\n",
"- `/resume` - Trading fortsetzen\n",
"- `/close confirm` - ALLE Positionen schließen (Emergency)\n",
"\n",
"**Information:**\n",
"- `/balance` - Aktueller Kontostand + Equity\n",
"- `/stats` - Performance Statistiken\n",
"- `/help` - Hilfe anzeigen\n",
"\n",
"### ✅ Features:\n",
"- Remote Control vom Handy\n",
"- Emergency Stop von überall\n",
"- Trading Pause/Resume\n",
"- Live Status & Balance Check\n",
"\n",
"### 🔒 Sicherheit:\n",
"- Nur deine Chat ID kann Commands senden\n",
"- `/close` requires confirmation\n",
"- `/pause` ist instant\n"
]
}
# Create Cell 2: Telegram Bot Commander Code
telegram_bot_cell = {
"cell_type": "code",
"execution_count": None,
"metadata": {},
"outputs": [],
"source": [
"# ==========================================\n",
"# TELEGRAM BOT COMMANDS - Background Service\n",
"# ==========================================\n",
"\n",
"from telegram_bot_commands import TelegramBotCommander, get_bot_controller\n",
"import threading\n",
"\n",
"# Start Telegram Bot in background\n",
"try:\n",
" print(\"🚀 Starting Telegram Bot Commander...\")\n",
" \n",
" bot_commander = TelegramBotCommander()\n",
" bot_thread = bot_commander.start_background()\n",
" \n",
" # Get controller for integration with execute_trade\n",
" bot_controller = get_bot_controller()\n",
" \n",
" print(\"✅ Telegram Bot is running in background!\")\n",
" print(\"📱 Available Commands:\")\n",
" print(\" /status - Bot status & positions\")\n",
" print(\" /pause - Pause trading\")\n",
" print(\" /resume - Resume trading\")\n",
" print(\" /close - Close all positions (requires confirm)\")\n",
" print(\" /balance - Account balance\")\n",
" print(\" /stats - Performance stats\")\n",
" print(\" /help - Show help\")\n",
" \n",
"except Exception as e:\n",
" print(f\"❌ Failed to start Telegram Bot: {e}\")\n",
" bot_controller = None\n"
]
}
# Create Cell 3: Integration with execute_trade
telegram_integration_cell = {
"cell_type": "code",
"execution_count": None,
"metadata": {},
"outputs": [],
"source": [
"# ==========================================\n",
"# INTEGRATION: Bot Controller mit execute_trade\n",
"# ==========================================\n",
"\n",
"# Original execute_trade_v2_adaptive function wrappen\n",
"if 'bot_controller' in dir() and bot_controller is not None:\n",
" \n",
" # Original Funktion sichern\n",
" if '_original_execute_trade_before_telegram' not in dir():\n",
" _original_execute_trade_before_telegram = execute_trade_v2_adaptive\n",
" \n",
" def execute_trade_with_telegram_control(*args, **kwargs):\n",
" \"\"\"\n",
" Wrapper der bot_controller.is_paused prüft\n",
" \"\"\"\n",
" # Check if trading is paused\n",
" if bot_controller.is_paused:\n",
" print(\"⏸️ Trading PAUSED via Telegram\")\n",
" print(f\" Reason: {bot_controller.pause_reason}\")\n",
" return\n",
" \n",
" # Execute original function\n",
" return _original_execute_trade_before_telegram(*args, **kwargs)\n",
" \n",
" # Replace execute_trade\n",
" execute_trade_v2_adaptive = execute_trade_with_telegram_control\n",
" \n",
" print(\"✅ execute_trade_v2_adaptive wrapped with Telegram control\")\n",
" print(\" Trading can now be paused/resumed via /pause and /resume\")\n",
"else:\n",
" print(\"⚠️ bot_controller not available, skipping integration\")\n"
]
}
# Insert cells
print(f"\n📝 Inserting 3 new cells at position {insert_position}...")
notebook['cells'].insert(insert_position, telegram_info_cell)
notebook['cells'].insert(insert_position + 1, telegram_bot_cell)
notebook['cells'].insert(insert_position + 2, telegram_integration_cell)
# Update cell count
new_total = len(notebook['cells'])
print(f"✅ New total cells: {new_total} (was {total_cells})")
# Save notebook
print(f"\n💾 Saving notebook...")
with open(notebook_path, 'w', encoding='utf-8') as f:
json.dump(notebook, f, indent=1, ensure_ascii=False)
print("✅ Notebook updated successfully!")
print(f"\n📋 Added cells:")
print(f" Cell {insert_position}: Telegram Bot Info (Markdown)")
print(f" Cell {insert_position + 1}: Telegram Bot Commander (Code)")
print(f" Cell {insert_position + 2}: execute_trade Integration (Code)")
print(f"\n🎯 Cells are now at positions {insert_position}-{insert_position + 2}")
print(f" (Previously the notebook had {total_cells} cells, now it has {new_total})")