87 lines
3.0 KiB
Markdown
87 lines
3.0 KiB
Markdown
# Trading212 "Touch & Turn" Scalping Bot
|
|
|
|
This project implements the "Touch & Turn" scalping strategy (Opening Range Liquidity Reversal) in Python for the Trading212 API. It is optimized for UK traders using ISA and optional CFD accounts.
|
|
|
|
## ⚠️ Disclaimer
|
|
**This software is for educational purposes only.** Trading in financial markets involves a high degree of risk. Always use the practice/demo environment (`demo.trading212.com`) to test strategies before using real money.
|
|
|
|
---
|
|
|
|
## Strategy Overview
|
|
|
|
The strategy capitalizes on the initial liquidity and volatility of the US market open (09:30 EST).
|
|
|
|
1. **The Setup:** Captures the 15-minute opening candle.
|
|
2. **The Filter:** Minimum range of 25% of 14-day ATR.
|
|
3. **The Trigger (Split-Account Optimized):**
|
|
- **LONG (Bearish candle):** Bot executes a **Market BUY** in the ISA account.
|
|
- **SHORT (Bullish candle):**
|
|
- **ISA Option:** Buys a **3x Inverse ETP** (if available).
|
|
- **CFD Option:** Performs a **Direct SELL** in the CFD account (if `SPLIT_ACCOUNT_MODE=True`).
|
|
4. **The Targets:**
|
|
- **Stop Loss (SL):** Physical broker-side order with ATR-based padding.
|
|
- **Take Profit (TP):** Manually monitored by the bot to hit 38.2% Fibonacci retracement.
|
|
5. **Time Exit:** All positions forcefully closed at **11:00 EST**.
|
|
|
|
---
|
|
|
|
## Installation & Setup
|
|
|
|
1. **Setup environment:**
|
|
```bash
|
|
python3 -m venv venv
|
|
source venv/bin/activate
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
2. **Configure `.env`:**
|
|
```ini
|
|
# Primary Account (ISA)
|
|
TRADING212_API_KEY_ID=...
|
|
TRADING212_API_KEY=...
|
|
TRADING212_BASE_URL=https://demo.trading212.com/api/v0/
|
|
|
|
# Secondary Account (CFD - Optional for Shorting)
|
|
CFD_API_KEY_ID=...
|
|
CFD_API_KEY=...
|
|
CFD_BASE_URL=...
|
|
|
|
SPLIT_ACCOUNT_MODE=True
|
|
VIRTUAL_STARTING_BALANCE=250
|
|
ISA_MODE=True
|
|
```
|
|
|
|
---
|
|
|
|
## Split-Account Mode
|
|
|
|
To overcome the lack of Inverse ETPs for certain stocks, the bot can use a Trading212 CFD account for shorting.
|
|
|
|
- **How it works:** When a Short signal is found, the bot checks if an Inverse ETP exists. If not (or if Split-Account mode is preferred), it routes the trade to the CFD account as a direct `SELL` order.
|
|
- **Benefit:** 100% coverage of all market opportunities.
|
|
|
|
---
|
|
|
|
## Risk Management
|
|
|
|
- **5% Risk Rule:** Risks 5% of the Virtual Balance (£250 starting point) per trade.
|
|
- **Capital Partitioning:** Automatically divides capital among active trades to prevent over-exposure.
|
|
- **ATR Padding:** Stop losses are automatically widened to at least 10% of daily ATR to avoid premature stop-outs from noise.
|
|
|
|
---
|
|
|
|
## Monitoring
|
|
|
|
- **Journal:** Monitor via `journalctl -u touchturn.service`.
|
|
- **Logs:** Real-time mirrored logs in `logs/bot_YYYY-MM-DD.log`.
|
|
- **PnL:** Performance ledger in `pnl_tracking.csv`.
|
|
|
|
---
|
|
|
|
## Architecture
|
|
|
|
* **`main.py`:** Daily orchestrator with dual-account routing.
|
|
* **`src/execution/manager.py`:** Hybrid exit management (Broker SL / Bot TP).
|
|
* **`src/strategy/touch_turn.py`:** Logic engine with ATR padding.
|
|
* **`src/strategy/inverse_mapping.py`:** ISA-specific shorting map.
|