v0.7.2: AGGRESSIVE — ±1.0% threshold, 15% max position, 2 trades/cycle

This commit is contained in:
Marc Blatter 2026-08-04 09:12:44 +02:00
parent 3ae96f34e6
commit 3bc728b291
1 changed files with 18 additions and 11 deletions

View File

@ -20,14 +20,14 @@ if not API_KEY or not API_SECRET:
SYMBOLS = ['BTCUSDT', 'ETHUSDT', 'BNBUSDT', 'XRPUSDT', 'SOLUSDT', 'ADAUSDT', 'DOGUSDT', 'DOTUSDT', 'AVAXUSDT']
TRACKED_COINS = ['BTC', 'ETH', 'BNB', 'XRP', 'SOL', 'ADA', 'DOGE', 'DOT', 'AVAX']
MIN_TRADE_USDT = 12.00
MAX_POSITION_PCT = 0.07
MAX_POSITION_PCT = 0.15
TAKE_PROFIT_PCT = 0.015
STOP_LOSS_PCT = -0.008
CYCLE_SEC = 60
# COIN-LEVEL CONTRARIAN THRESHOLDS
COIN_BUY_THRESHOLD = -1.5 # Buy when coin DOWN 1.5% (24h)
COIN_SELL_THRESHOLD = +1.5 # Sell when coin UP 1.5% (24h)
COIN_BUY_THRESHOLD = -1.0 # Buy when coin DOWN 1.0% (24h) — AGGRESSIVE
COIN_SELL_THRESHOLD = +1.0 # Sell when coin UP 1.0% (24h) — AGGRESSIVE
LOOKBACK_HOURS = 24
class TradingBotV07:
@ -39,7 +39,7 @@ class TradingBotV07:
self.max_trade_usdt = 0
# LOAD 24H PRICE HISTORY ON STARTUP
logger.info("[v0.7.1] Loading 24h price history from Binance...")
logger.info("[v0.7.2 AGGRESSIVE] Loading 24h price history from Binance...")
for symbol in SYMBOLS:
try:
klines = self.client.get_historical_klines(symbol, '1m', '1 day ago UTC')
@ -51,7 +51,7 @@ class TradingBotV07:
# LOAD EXISTING HOLDINGS FROM BINANCE
logger.info("[v0.7.1] Recovering existing holdings from Binance...")
logger.info("[v0.7.2 AGGRESSIVE] Recovering existing holdings from Binance...")
try:
account = self.client.get_account()
for b in account['balances']:
@ -74,7 +74,7 @@ class TradingBotV07:
except Exception as e:
logger.warning(f"Recovery failed: {e}")
logger.info(f"[v0.7.1] Startup complete. Active trades: {len(self.active_trades)}")
logger.info(f"[v0.7.2 AGGRESSIVE] Startup complete. Active trades: {len(self.active_trades)}")
logger.info(f"[v0.7.1 INIT] Price history loaded. Ready for ±1.5% signals.")
@ -307,24 +307,31 @@ class TradingBotV07:
if len(self.price_history[symbol]) > 1440: # Keep 24h history
self.price_history[symbol].pop(0)
# Check for COIN-LEVEL SELL (each coin UP 2%+)
# Check for COIN-LEVEL SELL (each coin UP 1%+) — UP TO 2 SELLS PER CYCLE
sell_count = 0
for symbol in list(self.active_trades.keys()):
if sell_count >= 2: # Max 2 sells per cycle
break
if self.is_coin_sell_signal(symbol):
self.place_sell_order(symbol)
break # One sell per cycle
sell_count += 1
# Check TP/SL
self.check_and_close_positions()
# Check for COIN-LEVEL BUY (each coin DOWN 2%+)
# Check for COIN-LEVEL BUY (each coin DOWN 1%+) — UP TO 2 BUYS PER CYCLE
buy_count = 0
for symbol in SYMBOLS:
if buy_count >= 2: # Max 2 buys per cycle
break
if symbol in self.active_trades:
continue # Skip already held
if self.is_coin_buy_signal(symbol) and usdt_free >= MIN_TRADE_USDT:
trade_amount = min(max(MIN_TRADE_USDT, self.max_trade_usdt), usdt_free * 0.5)
self.place_buy_order(symbol, trade_amount)
break # One buy per cycle
buy_count += 1
usdt_free -= trade_amount # Update available capital
# Save trades
try:
@ -336,7 +343,7 @@ class TradingBotV07:
'portfolio_value': round(portfolio_val, 2),
'max_trade_usdt': round(self.max_trade_usdt, 2),
'timestamp': datetime.now().isoformat(),
'version': 'v0.7.1-recovery-fix'
'version': 'v0.7.2-aggressive-triple-option'
}, f)
os.replace(temp, '/home/marc/bot-deploy/active_trades.json')
except: