#!/bin/bash
# Jan 2026 optimization sweep — uses bot_backtest.sh for each variant
cd /var/www/html/crpytotradingbot

LOG="results/jan_sweep_$(date +%Y%m%d_%H%M%S).log"
mkdir -p results

echo "JAN 2026 OPTIMIZATION SWEEP" | tee "$LOG"
echo "$(date)" | tee -a "$LOG"
echo "================================================" | tee -a "$LOG"

run_variant() {
    local NAME="$1" LOT="$2" TTP="$3" RTP="$4" MO="$5" RLM="$6"
    
    sed -i "s/^LOT_SIZE = .*/LOT_SIZE = ${LOT}/" settings.py
    sed -i "s/^THREAD_PROFIT_TARGET = .*/THREAD_PROFIT_TARGET = ${TTP}/" settings.py
    sed -i "s/^RECOVERY_PROFIT_TARGET = .*/RECOVERY_PROFIT_TARGET = ${RTP}/" settings.py
    sed -i "s/^MAX_INITIAL_ORDERS = .*/MAX_INITIAL_ORDERS = ${MO}/" settings.py
    sed -i "s/^RECOVERY_LOT_MULTIPLIER = .*/RECOVERY_LOT_MULTIPLIER = ${RLM}/" settings.py
    sed -i "s/^INITIAL_BALANCE = .*/INITIAL_BALANCE = 20000.0/" settings.py
    
    # Launch via bot_backtest.sh (backgrounds properly)
    bash bot_backtest.sh 202601 0 > /dev/null 2>&1
    
    # Wait for completion
    for i in $(seq 1 60); do
        sleep 3
        STATUS=$(python3 -c "
import json
try:
    d = json.load(open('backtest_progress.json'))
    print(d.get('status',''))
except:
    print('')
" 2>/dev/null)
        if [ "$STATUS" = "complete" ] || [ "$STATUS" = "completed" ]; then
            break
        fi
    done
    
    # Extract results from progress file
    python3 -c "
import json
try:
    d = json.load(open('backtest_progress.json'))
    # Get from latest result file
    import glob, os
    results = sorted(glob.glob('results/result_*.json'), reverse=True)
    if results:
        r = json.load(open(results[0]))
        net = r.get('net_profit', 0)
        ret = r.get('return_pct', 0)
        dd = r.get('max_dd_pct', 0)
        trades = r.get('total_trades', 0)
        wr = r.get('win_rate', 0)
        gp = r.get('gross_profit', 0)
        gl = abs(r.get('gross_loss', 1))
        comm = r.get('commission', 0)
        pf = gp/gl if gl > 0 else 0
        rar = ret/dd if dd > 0 else 0
        print(f'$NAME|{net:+.0f}|{ret:+.1f}|{dd:.1f}|{pf:.2f}|{rar:.1f}|{trades}|{wr:.1f}|{comm:.0f}')
except Exception as e:
    print(f'$NAME|ERROR|{e}')
" 2>/dev/null | while IFS='|' read NM NET RET DD PF RAR TR WR CM; do
        printf "%-40s  Net:%+10s  Ret:%+7s%%  DD:%6s%%  PF:%5s  RAR:%7s  Tr:%6s  Comm:%8s\n" \
            "$NAME" "$NET" "$RET" "$DD" "$PF" "$RAR" "$TR" "$CM" | tee -a "$LOG"
    done
}

# Baseline
run_variant "BASELINE L=0.02 TTP=15 RTP=30 MO=10" 0.02 15 30.0 10 1.0

# Lot sizes
run_variant "L=0.01" 0.01 15 30.0 10 1.0
run_variant "L=0.015" 0.015 15 30.0 10 1.0
run_variant "L=0.03" 0.03 15 30.0 10 1.0

# Thread TP
run_variant "TTP=10" 0.02 10 30.0 10 1.0
run_variant "TTP=12" 0.02 12 30.0 10 1.0
run_variant "TTP=20" 0.02 20 30.0 10 1.0
run_variant "TTP=25" 0.02 25 30.0 10 1.0

# Recovery TP
run_variant "RTP=15" 0.02 15 15.0 10 1.0
run_variant "RTP=20" 0.02 15 20.0 10 1.0
run_variant "RTP=40" 0.02 15 40.0 10 1.0
run_variant "RTP=50" 0.02 15 50.0 10 1.0

# Max orders
run_variant "MO=8" 0.02 15 30.0 8 1.0
run_variant "MO=12" 0.02 15 30.0 12 1.0
run_variant "MO=15" 0.02 15 30.0 15 1.0

# Recovery lot multiplier
run_variant "RLM=0.8" 0.02 15 30.0 10 0.8
run_variant "RLM=1.2" 0.02 15 30.0 10 1.2
run_variant "RLM=1.5" 0.02 15 30.0 10 1.5

# Restore baseline
sed -i "s/^LOT_SIZE = .*/LOT_SIZE = 0.02/" settings.py
sed -i "s/^THREAD_PROFIT_TARGET = .*/THREAD_PROFIT_TARGET = 15/" settings.py
sed -i "s/^RECOVERY_PROFIT_TARGET = .*/RECOVERY_PROFIT_TARGET = 30.0/" settings.py
sed -i "s/^MAX_INITIAL_ORDERS = .*/MAX_INITIAL_ORDERS = 10/" settings.py
sed -i "s/^RECOVERY_LOT_MULTIPLIER = .*/RECOVERY_LOT_MULTIPLIER = 1.0/" settings.py
sed -i "s/^INITIAL_BALANCE = .*/INITIAL_BALANCE = 20000.0/" settings.py

echo "" | tee -a "$LOG"
echo "SWEEP COMPLETE — $(date)" | tee -a "$LOG"
echo "Log: $LOG"
