marketTrade/CLAUDE.md
Mark bbba7bfe89 refactor: rename CoreTraidMath.py to CoreTradeMath.py
Fix typo in core math module filename and update all references.

Changes:
- Renamed market_trade/core/CoreTraidMath.py → CoreTradeMath.py
- Updated 28 import references across 14 files:
  - All Ind_*.py indicator modules
  - indicators.py, indicators_v2.py
  - signals.py, signals_v2.py
  - CoreDraw.py
- Updated documentation references in CLAUDE.md

This eliminates the "Traid" typo and aligns with proper English spelling.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 18:33:21 +01:00

151 lines
5.9 KiB
Markdown

# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
This is a Python-based algorithmic trading system for financial markets that implements technical indicator analysis, signal generation, decision making, and risk management. It integrates with Tinkoff Invest API for market data and trading.
## Development Setup
### Environment Setup
- Python 3.9-3.12 (managed via Poetry)
- Install dependencies: `poetry install`
- Activate virtual environment: `poetry shell`
- Environment variables are in `.env` (contains Tinkoff API tokens)
### Docker Development
- Build image: `docker build -f dockerfiles/Dockerfile -t market-trade .`
- Main Dockerfile uses Poetry 1.7.1 and Python 3.11
- Requires SSH mount for private tinkoff-grpc dependency
### Running Tests
- Test files located in `market_trade/tests/`
- Run test: `python market_trade/tests/test_decision.py`
- Run specific test: `python market_trade/tests/test_dataloader.py`
### Data Tools
Scripts in `tools/` directory for data collection:
- `save_currencies_data.py` - Collect currency market data
- `save_shares_data.py` - Collect stock market data
- `get_shares_stats.py` - Generate trading statistics
- Usage: `python tools/<script_name>.py [options]`
## Architecture
### Core Trading Pipeline (docs/trading-flow.md)
The system follows this data flow:
1. **SELECT INSTRUMENT** - Choose trading instrument
2. **GET_CANDLES(10000)** - Fetch historical candlestick data
3. **RETRO TRAINING** - Backtest signals on historical data
4. **STREAM PROCESSING**:
- Receive real-time market messages
- Accumulate data in sliding window
- Update window with each new message
- Generate trading signals
### Module Structure
#### `market_trade/core/` - Core Trading Logic
**Signal Processing Chain:**
1. **Indicators** (`indicators.py`, `indicators_v2.py`) - Technical indicator calculation
- Base class: `coreIndicator`
- Bollinger Bands: `ind_BB`
- All indicator classes (Ind_*.py): ADX, Alligator, DonchianChannel, Envelopes, Gator, Ishimoku, LRI, STD, Stochastic, bollingerBands
2. **Signals** (`signals.py`, `signals_v2.py`) - Signal generation from indicators
- Base class: `coreSignalTrande` with three modes:
- `online` - Real-time signal generation
- `retro` - Expanding window backtesting
- `retroFast` - Sliding window backtesting
- Signal implementations: `signal_BB` (Bollinger Bands signal)
- Aggregator: `signalAgrigator` manages multiple signal instances
3. **Decision Manager** (`decisionManager.py`, `decisionManager_v2.py`) - Trading decisions
- Class: `decsionManager`
- Combines signals from `signalAgrigator`
- Uses `trandeVoter` for probability matrix generation
- Methods:
- `getSignalTest()` - Test signal generation
- `generateMatrixProbability()` - Create probability matrices from backtest
- `getOnlineAns()` - Real-time decision making
4. **Trade Voter** (`trandeVoter.py`) - Probability-based decision weighting
- Generates probability matrices from historical signal performance
- Weights multiple signals to produce final decision
5. **Risk Manager** (`riskManager.py`) - Position sizing and risk controls
- Class: `riskManager`
- Combines signal decisions with risk parameters
6. **Deal Manager** (`dealManager.py`) - Trade execution and management
- Class: `DealManager`
- Manages active positions and orders
**Helper Modules:**
- `CoreTradeMath.py` - Mathematical operations for indicators (moving averages, STD)
- `CoreDraw.py` - Visualization utilities for indicators and signals
#### `market_trade/data/` - Data Loading
- `dataloader.py` - Contains `DukaMTInterface` class
- Converts Dukascopy format candlestick data to internal format
- Separates bid/ask candlesticks from multi-indexed CSV
- Handles both file paths and DataFrames
#### `market_trade/tests/` - Testing
- Test files demonstrate usage patterns:
- `test_decision.py` - Shows complete decision manager workflow with retro training
- `test_dataloader.py` - Data loading tests
### External Dependencies
- **tinkoff-grpc** - Private GitHub repo for Tinkoff Invest API integration
- Located at: `git@github.com:strategy155/tinkoff_grpc.git`
- Used in tools for market data collection
- **Data Analysis**: pandas, numpy, scipy, matplotlib, plotly, mplfinance
- **Web Scraping**: requests-html, beautifulsoup4, selenium
- **Development**: JupyterLab (notebooks in `notebooks/`)
## Key Constants (market_trade/constants.py)
- `ROOT_PATH` - Project root directory
- `CANDLESTICK_DATASETS_PATH` - Path to candlestick data: `data/candlesticks/`
- `TEST_CANDLESTICKS_PATH` - Test dataset: `data/EURUSD_price_candlestick.csv`
- `TINKOFF_TOKEN_STRING` - Production API token (from .env)
- `SANDBOX_TOKEN_STRING` - Sandbox API token (from .env)
- `TINKOFF_API_ADDRESS` - API endpoint: 'invest-public-api.tinkoff.ru:443'
## Data Formats
### Candlestick Data
Expected DataFrame columns:
- `date` - Timestamp
- `open`, `high`, `low`, `close` - OHLC price data
- For bid/ask data: Multi-indexed with ('bid'/'ask', 'open'/'high'/'low'/'close')
### Signal Configuration Dictionary
```python
{
'signal_name': {
'className': signal_class, # e.g., sig_BB
'indParams': {...}, # Indicator parameters
'signalParams': { # Signal parameters
'source': 'close', # Source price column
'target': 'close' # Target price column for analysis
},
'batchSize': 30 # Window size
}
}
```
## Development Notes
- Code contains Russian comments and variable names (e.g., "агрегатор", "индикаторы")
- Version 2 modules (`*_v2.py`) represent newer implementations
- The system uses sliding window approach for real-time signal generation
- Backtesting generates probability matrices that weight signal reliability
- Data symlink: `data/` -> `/var/data0/markettrade_data`