drl-trading-bot-dev2 / CLOUDFLARE_PROXY_FIX.md
DRL Trading Bot
Feature: HTF Agent integration — live trading, API endpoints, UI tab
fc115d5
|
Raw
History Blame Contribute Delete
1.7 kB

A newer version of the Streamlit SDK is available: 1.62.0

Upgrade

Cloudflare Proxy Timestamp Fix

Problem

When using the Cloudflare Workers proxy for Binance testnet API, requests were failing with:

{"code":-1021,"msg":"Timestamp for this request is outside of the recvWindow."}

Root Cause

  • Binance API requires signed requests to have a timestamp within a recvWindow (default: 5000ms)
  • When requests go through Cloudflare proxy, there's additional network latency
  • By the time the request reaches Binance, the timestamp is too old and gets rejected

Solution

Added recvWindow: 60000 (60 seconds) to the ccxt configuration in src/api/binance.py:

config = {
    'apiKey': api_key,
    'secret': api_secret,
    'enableRateLimit': rate_limit,
    'options': {
        'defaultType': 'spot',
        'adjustForTimeDifference': True,
        'recvWindow': 60000,  # 60 seconds - max allowed by Binance (handles proxy latency)
        'fetchCurrencies': False,
        'fetchMarkets': True,
    }
}

What This Does

  • Increases the validity window for signed requests from 5 seconds to 60 seconds
  • 60 seconds is the maximum allowed by Binance API
  • All authenticated API calls (account, orders, trades) will now include recvWindow=60000
  • Handles proxy latency while still maintaining security

Testing

To verify the fix works:

  1. Restart the Streamlit app (it should auto-reload)
  2. Go to the Testnet tab
  3. Check if the balance call succeeds
  4. Look for: ✅ instead of ❌ for "Failed to get balances"

Files Changed

  • src/api/binance.py - Added recvWindow parameter

References