3.2 KiB
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)
- Identify the Opening Candle: Capture the
High,Low,Open, andCloseof the first 15-minute candle of the session (09:30 to 09:45 EST). - Filter for Liquidity:
- The opening range (
High - Low) must be at least 25% of the 14-day ATR. If smaller, the bot stays flat.
- The opening range (
- 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.
- 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).
- 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.
- 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.
- 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
- Setup Environment:
pip install -r requirements.txt - Configuration:
- Set credentials in your
.envfile. ISA_MODE=Trueenables Inverse ETP substitution.
- Set credentials in your
- 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).