103 lines
3.0 KiB
Python
103 lines
3.0 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Manual test script for live trading on Binance testnet.
|
|
Run from project root: python test_live_manual.py
|
|
"""
|
|
import sys
|
|
import os
|
|
|
|
# Add src to path
|
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'src'))
|
|
|
|
# Set testnet credentials
|
|
os.environ['BRIGHTER_BINANCE_TESTNET_API_KEY'] = '7QXpkltLNwh9mMoDwJWMaecyhUrnjjGY4B2i3wIOhTlQnD9ggWgFI2n5OwDBeIwd'
|
|
os.environ['BRIGHTER_BINANCE_TESTNET_API_SECRET'] = 'wy7ziNcepoB0OrjJtaViVa17bFQmPgaXP95tTsCzWHViM5s5Dz1JzI45Hq0clqXC'
|
|
|
|
from Exchange import Exchange
|
|
from brokers.live_broker import LiveBroker
|
|
from brokers import OrderSide, OrderType
|
|
|
|
def main():
|
|
print("=" * 60)
|
|
print("LIVE TRADING MANUAL TEST - BINANCE TESTNET")
|
|
print("=" * 60)
|
|
|
|
# Create exchange connection
|
|
print("\n1. Connecting to Binance testnet...")
|
|
api_keys = {
|
|
'key': os.environ['BRIGHTER_BINANCE_TESTNET_API_KEY'],
|
|
'secret': os.environ['BRIGHTER_BINANCE_TESTNET_API_SECRET']
|
|
}
|
|
|
|
exchange = Exchange(
|
|
name='binance',
|
|
api_keys=api_keys,
|
|
exchange_id='binance',
|
|
testnet=True
|
|
)
|
|
|
|
print(f" Connected: {exchange.configured}")
|
|
print(f" Testnet mode: {exchange.testnet}")
|
|
|
|
# Create live broker
|
|
print("\n2. Creating LiveBroker...")
|
|
broker = LiveBroker(
|
|
exchange=exchange,
|
|
testnet=True,
|
|
initial_balance=0.0, # Will sync from exchange
|
|
commission=0.001
|
|
)
|
|
|
|
# Connect and sync
|
|
print("\n3. Connecting broker to exchange...")
|
|
connected = broker.connect()
|
|
print(f" Connected: {connected}")
|
|
|
|
# Get balance
|
|
print("\n4. Checking balance...")
|
|
balance = broker.get_balance()
|
|
print(f" USDT Balance: {balance}")
|
|
|
|
# Get current price
|
|
print("\n5. Getting BTC/USDT price...")
|
|
price = broker.get_current_price('BTC/USDT')
|
|
print(f" Current price: ${price:,.2f}")
|
|
|
|
# Place a small test order
|
|
print("\n6. Placing test order...")
|
|
print(" Order: BUY 0.001 BTC (market order)")
|
|
|
|
confirm = input("\n Press ENTER to place order, or 'q' to quit: ")
|
|
if confirm.lower() == 'q':
|
|
print(" Cancelled.")
|
|
return
|
|
|
|
result = broker.place_order(
|
|
symbol='BTC/USDT',
|
|
side=OrderSide.BUY,
|
|
order_type=OrderType.MARKET,
|
|
size=0.001
|
|
)
|
|
|
|
print(f"\n Order result:")
|
|
print(f" - Success: {result.success}")
|
|
print(f" - Order ID: {result.order_id}")
|
|
print(f" - Status: {result.status}")
|
|
print(f" - Filled qty: {result.filled_qty}")
|
|
print(f" - Filled price: ${result.filled_price:,.2f}" if result.filled_price else " - Filled price: N/A")
|
|
print(f" - Message: {result.message}")
|
|
|
|
if result.success:
|
|
print("\n7. Checking updated balance...")
|
|
broker.sync_balance()
|
|
new_balance = broker.get_balance()
|
|
print(f" New USDT Balance: {new_balance}")
|
|
print(f" Cost: ~${0.001 * price:,.2f}")
|
|
|
|
print("\n" + "=" * 60)
|
|
print("TEST COMPLETE")
|
|
print("=" * 60)
|
|
|
|
if __name__ == '__main__':
|
|
main()
|