Files
trading-bot/GEMINI.md
T

3.2 KiB

Trading212 Python Scalping Bot - "Touch & Turn" (Opening Range Reversal)

This project implements the "Touch & Turn" scalping strategy, originally designed for ProRealTime, translated into Python for the Trading212 API. It is optimized for the UK ISA environment using Inverse ETPs for shorting.

Project Overview

  • Strategy: Opening Range Liquidity Reversal (Touch & Turn).
  • Asset Class: US Stocks (e.g., NVDA, ARM, TSLA).
  • Timeframe: 15-minute chart.
  • Operating Window: 09:30 - 11:00 EST (Opening of the US Regular Trading Session).

Strategy Logic (The Workflow)

  1. Identify the Opening Candle: Capture the High, Low, Open, and Close of the first 15-minute candle of the session (09:30 to 09:45 EST).
  2. Filter for Liquidity:
    • The opening range (High - Low) must be at least 25% of the 14-day ATR. If smaller, the bot stays flat.
  3. Determine Direction:
    • If the candle is Bearish (Close < Open): Prepare for a LONG entry.
    • If the candle is Bullish (Close > Open): Prepare for a SHORT entry.
  4. ISA-Compliant Shorting:
    • Since standard shorting is forbidden in a UK ISA, the bot automatically substitutes SHORT signals with BUY orders for 3x Inverse ETPs (e.g., 3SLA for TSLA).
  5. Execution:
    • Uses Market Orders at 09:45 EST for immediate entry.
    • Recalculates SL/TP brackets based on the Actual Fill Price fetched from the portfolio.
  6. Risk Management:
    • Position Sizing: Risks 1% of account balance per trade.
    • Virtual Balance: In demo mode, subtracts £4,750 from total value to simulate a realistic £250 starting point.
    • Targets: 38.2% Fibonacci retracement level. Risk:Reward ratio of 1:2.
  7. Automatic Exit: Force close any open positions at 11:00 EST via Market Order.

Technical Architecture

  • API Client (src/api/client.py): Handles REST Basic Auth calls to Trading212.
  • Strategy Engine (src/strategy/touch_turn.py): Calculates setup, Fibonacci levels, and percentage-based targets.
  • Execution Manager (src/execution/manager.py): Handles ticker swapping for ISA mode, market order placement, protection bracketing, and status monitoring.
  • Orchestrator (main.py): Automates the morning routine: scanning, backtesting, and spawning parallel execution threads.
  • Data resilient: Implements retry loops and random jitter to handle API delays and rate limits (429/403/404 errors).

Getting Started

  1. Setup Environment:
    pip install -r requirements.txt
    
  2. Configuration:
    • Set credentials in your .env file.
    • ISA_MODE=True enables Inverse ETP substitution.
  3. Operation:
    • Best deployed via a systemd timer at 09:30 America/New_York time.

TODOs

  • Document the strategy logic.
  • Implement ATR calculation and Fibonacci targets.
  • Implement 15m candle capture with timezone resilience.
  • Implement ISA-compliant shorting via Inverse ETP mapping.
  • Implement Risk-based position sizing (Virtual Balance logic).
  • Create a leaderboard-based backtesting engine.
  • Implement resilient execution (Retry loops, Jitter, Portfolio-checks).
  • Add daily logging and P&L tracking (CSV).