Binance Futures Signal Bot Skill by ara.so — Daily 2026 Skills collection. Automated trading bot for Binance, Bybit, and OKX Futures markets. Receives signals from Telegram channels, TradingView webhooks, or custom APIs, then executes trades with configurable leverage, dynamic position sizing, trailing stop-loss, and a real-time P&L terminal dashboard. Installation git clone https://github.com/Whit1985/Binance-Futures-Signal-Bot.git cd Binance-Futures-Signal-Bot pip install -r requirements.txt Or via the interactive menu: python main.py
choose option 1 → Install Dependencies
Required Python: 3.10+ Key dependencies: Package Purpose rich Terminal UI / dashboards python-binance Binance REST & WebSocket ccxt Unified multi-exchange interface pandas OHLCV data & indicators ta Technical analysis (RSI, MACD, BB, EMA) websockets Real-time market streams cryptography Secure key storage Quick Start python main.py Interactive menu options: 1 → Install Dependencies 2 → Settings (API keys, exchange, leverage) 3 → About 4 → Connect Signal Source (Telegram / TradingView / API) 5 → Start Auto Trading 6 → Strategy Configuration 7 → Position Manager (view & close positions) 8 → P&L Dashboard 0 → Exit Windows: run .bat Linux / macOS: chmod +x run.sh && ./run.sh Configuration config.json (full reference) { "exchange" : "binance" , "api_key" : "" , "api_secret" : "" , "testnet" : false , "leverage" : 10 , "max_position_pct" : 5.0 , "trailing_stop_pct" : 1.5 , "signal_source" : "telegram" , "telegram_bot_token" : "" , "telegram_channel_id" : "-100XXXXXXXXXX" , "tradingview_webhook_port" : 8080 , "strategies" : { "ema_crossover" : { "enabled" : true , "fast" : 9 , "slow" : 21 } , "rsi_divergence" : { "enabled" : true , "period" : 14 , "overbought" : 70 , "oversold" : 30 } , "bollinger_breakout" : { "enabled" : false , "period" : 20 , "std_dev" : 2.0 } , "macd_momentum" : { "enabled" : true , "fast" : 12 , "slow" : 26 , "signal" : 9 } } , "pairs" : [ "BTCUSDT" , "ETHUSDT" , "SOLUSDT" ] , "risk_management" : { "max_open_positions" : 5 , "max_daily_loss_pct" : 3.0 , "stop_loss_pct" : 2.0 , "take_profit_pct" : 4.0 } } Environment Variables (preferred for secrets) export BINANCE_API_KEY = "your_api_key_here" export BINANCE_API_SECRET = "your_api_secret_here" export BYBIT_API_KEY = "your_bybit_key" export BYBIT_API_SECRET = "your_bybit_secret" export OKX_API_KEY = "your_okx_key" export OKX_API_SECRET = "your_okx_secret" export OKX_PASSPHRASE = "your_okx_passphrase" export TELEGRAM_BOT_TOKEN = "your_telegram_bot_token" Never commit config.json with real keys — it is .gitignore d by default. Exchange Setup Binance Futures
config.py usage pattern
import os import json config = { "exchange" : "binance" , "api_key" : os . environ . get ( "BINANCE_API_KEY" ) , "api_secret" : os . environ . get ( "BINANCE_API_SECRET" ) , "testnet" : True ,
always test first
"leverage" : 5 , "pairs" : [ "BTCUSDT" , "ETHUSDT" ] } with open ( "config.json" , "w" ) as f : json . dump ( config , f , indent = 2 ) Bybit Perpetual { "exchange" : "bybit" , "api_key" : "" , "api_secret" : "" , "leverage" : 5 , "pairs" : [ "BTCUSDT" , "ETHUSDT" ] } OKX Perpetual Swap { "exchange" : "okx" , "api_key" : "" , "api_secret" : "" , "okx_passphrase" : "" , "leverage" : 5 , "pairs" : [ "BTC-USDT-SWAP" , "ETH-USDT-SWAP" ] } Signal Sources 1. Telegram Channel
Setup steps:
1. Create bot at https://t.me/BotFather → get token
2. Add bot to signal channel as admin
3. Get channel ID (negative number starting with -100)
config_snippet
- {
- "signal_source"
- :
- "telegram"
- ,
- "telegram_bot_token"
- :
- os
- .
- environ
- .
- get
- (
- "TELEGRAM_BOT_TOKEN"
- )
- ,
- "telegram_channel_id"
- :
- "-1001234567890"
- }
- 2. TradingView Webhook
- {
- "signal_source"
- :
- "tradingview"
- ,
- "tradingview_webhook_port"
- :
- 8080
- }
- TradingView alert message format (JSON):
- {
- "symbol"
- :
- "BTCUSDT"
- ,
- "side"
- :
- "BUY"
- ,
- "leverage"
- :
- 10
- ,
- "price"
- :
- "{{close}}"
- ,
- "strategy"
- :
- "ema_crossover"
- }
- Point your TradingView alert webhook URL to:
- http://YOUR_SERVER_IP:8080/webhook
- 3. Custom API Signal Source
- {
- "signal_source"
- :
- "api"
- ,
- "custom_api_url"
- :
- "https://your-signal-provider.com/signals"
- ,
- "custom_api_key"
- :
- ""
- }
- Strategies
- EMA Crossover
- {
- "ema_crossover"
- :
- {
- "enabled"
- :
- true
- ,
- "fast"
- :
- 9
- ,
- "slow"
- :
- 21
- }
- }
- LONG
-
- fast EMA crosses above slow EMA
- SHORT
-
- fast EMA crosses below slow EMA
- Best timeframes: 15m, 1h, 4h
- RSI Divergence
- {
- "rsi_divergence"
- :
- {
- "enabled"
- :
- true
- ,
- "period"
- :
- 14
- ,
- "overbought"
- :
- 70
- ,
- "oversold"
- :
- 30
- }
- }
- Bullish
-
- price lower lows + RSI higher lows → LONG
- Bearish
-
- price higher highs + RSI lower highs → SHORT
- Bollinger Band Breakout
- {
- "bollinger_breakout"
- :
- {
- "enabled"
- :
- true
- ,
- "period"
- :
- 20
- ,
- "std_dev"
- :
- 2.0
- }
- }
- LONG
-
- close above upper band
- SHORT
- close below lower band MACD Momentum { "macd_momentum" : { "enabled" : true , "fast" : 12 , "slow" : 26 , "signal" : 9 } } Trades histogram crossovers with signal line confirmation Zero-line acts as trend filter Running Multiple Strategies All enabled strategies run per candle. The bot takes the highest-confidence signal and filters conflicts: { "strategies" : { "ema_crossover" : { "enabled" : true , "fast" : 9 , "slow" : 21 } , "rsi_divergence" : { "enabled" : true , "period" : 14 } , "bollinger_breakout" : { "enabled" : false } , "macd_momentum" : { "enabled" : true } } } Risk Management { "leverage" : 10 , "max_position_pct" : 5.0 , "trailing_stop_pct" : 1.5 , "risk_management" : { "max_open_positions" : 5 , "max_daily_loss_pct" : 3.0 , "stop_loss_pct" : 2.0 , "take_profit_pct" : 4.0 } } Parameter Description leverage 1x–125x (start with 2–5x) max_position_pct % of account balance per trade trailing_stop_pct Trailing SL activates after price moves this % in profit max_open_positions Hard cap on concurrent open trades max_daily_loss_pct Bot halts trading if daily loss exceeds this stop_loss_pct Fixed stop-loss distance from entry take_profit_pct Fixed take-profit distance from entry Trailing stop-loss behavior: Once position is in profit by trailing_stop_pct , the stop follows the peak price. Position closes automatically on reversal of that distance. Testnet Mode Always validate on testnet before live trading: { "testnet" : true , "exchange" : "binance" } Binance testnet: https://testnet.binancefuture.com Bybit testnet: https://testnet.bybit.com Project Structure Binance-Futures-Signal-Bot/ ├── main.py # Entry point — interactive menu ├── bot_actions.py # Core trading action handlers ├── config.py # Configuration loader (JSON + env vars) ├── requirements.txt ├── run.bat / run.sh # Platform launchers ├── actions/ │ ├── about.py # Feature display │ ├── install.py # Dependency installer │ └── settings.py # Configuration UI ├── utils/ │ ├── init.py # Environment bootstrap │ ├── compat.py # Platform compatibility │ ├── ui.py # Rich terminal interface │ ├── http.py # HTTP client │ ├── integrity.py # Data integrity checks │ └── bootstrap.py # Runtime initialization └── release/ └── README.md # Pre-compiled binary info Common Patterns Load Config Programmatically import json import os def load_config ( path = "config.json" ) : with open ( path ) as f : cfg = json . load ( f )
Override with env vars if set
cfg [ "api_key" ] = os . environ . get ( "BINANCE_API_KEY" , cfg . get ( "api_key" , "" ) ) cfg [ "api_secret" ] = os . environ . get ( "BINANCE_API_SECRET" , cfg . get ( "api_secret" , "" ) ) return cfg config = load_config ( ) Minimal Safe Config for Testing import json safe_config = { "exchange" : "binance" , "api_key" : "" ,
set via env var BINANCE_API_KEY
"api_secret" : "" ,
set via env var BINANCE_API_SECRET
"testnet" : True , "leverage" : 2 , "max_position_pct" : 1.0 , "signal_source" : "telegram" , "telegram_bot_token" : "" ,
set via env var TELEGRAM_BOT_TOKEN
"telegram_channel_id" : "" , "strategies" : { "ema_crossover" : { "enabled" : True , "fast" : 9 , "slow" : 21 } , "rsi_divergence" : { "enabled" : False } , "bollinger_breakout" : { "enabled" : False } , "macd_momentum" : { "enabled" : False } } , "pairs" : [ "BTCUSDT" ] , "risk_management" : { "max_open_positions" : 1 , "max_daily_loss_pct" : 1.0 , "stop_loss_pct" : 1.5 , "take_profit_pct" : 3.0 } } with open ( "config.json" , "w" ) as f : json . dump ( safe_config , f , indent = 2 ) Verify Installation
Quick dependency check
required
[ "rich" , "binance" , "ccxt" , "pandas" , "ta" , "websockets" , "cryptography" ] import importlib for pkg in required : try : importlib . import_module ( pkg ) print ( f"✓ { pkg } " ) except ImportError : print ( f"✗ { pkg } — run: pip install { pkg } " ) Troubleshooting Bot won't connect to exchange
Check API key permissions — must have:
Binance: Enable Futures, Enable Reading, Enable Spot & Margin Trading
Bybit: Unified Trading, Read/Write
OKX: Trade, Read
Test connectivity
python
-c
"
import ccxt, os
exchange = ccxt.binance({
'apiKey': os.environ['BINANCE_API_KEY'],
'secret': os.environ['BINANCE_API_SECRET'],
'options': {'defaultType': 'future'}
})
print(exchange.fetch_balance())
"
Telegram signals not received
Confirm bot is
admin
in the channel
Verify
telegram_channel_id
starts with
-100
Send a test message to the channel after adding the bot
Check bot token with:
https://api.telegram.org/bot
Ensure port 8080 is open and accessible
Check firewall rules
sudo ufw allow 8080 /tcp
Test webhook endpoint locally
curl -X POST http://localhost:8080/webhook \ -H "Content-Type: application/json" \ -d '{"symbol":"BTCUSDT","side":"BUY","leverage":5}' Leverage rejected by exchange Binance max leverage varies per symbol (BTC: 125x, altcoins: lower) Bybit requires setting leverage per symbol before trading Start with "leverage": 5 and increase carefully ImportError on startup pip install --upgrade -r requirements.txt
or individually:
pip install rich
= 13.0 .0 python-binance = 1.0 .19 ccxt = 4.2 .0 pandas = 2.1 .0 ta = 0.10 .2 websockets = 12.0 cryptography Position not closing at stop-loss Ensure stop_loss_pct is set in risk_management Trailing stop only activates after initial profit threshold ( trailing_stop_pct ) Check exchange order type support — some altcoin pairs have restrictions Safety Checklist Always run "testnet": true first Start with "leverage": 2 or 3 Set max_daily_loss_pct ≤ 3.0 Keep max_open_positions ≤ 3 initially Never commit config.json with real API keys Use environment variables for all secrets Keep API key IP-restricted on exchange side Enable only one strategy initially; add more after validation Disclaimer This software is for educational and research purposes only. Cryptocurrency futures trading involves substantial risk of loss including full account liquidation. The authors bear no responsibility for financial losses from use of this software.