Compare commits
1 Commits
9e03b6a7a5
...
main
499
README.md
499
README.md
@@ -1,21 +1,39 @@
|
|||||||
# Mantle AI Trader
|
|
||||||
|
|
||||||
<div align="center">
|
<div align="center">
|
||||||
|
|
||||||
<!-- Main Banner -->
|
<!-- Main Banner -->
|
||||||
<img src="https://img.shields.io/badge/Mantle%20AI%20Trader-🤖%20Trading%20Bot-blue?style=for-the-badge&logo=robot&logoColor=white&labelColor=1a1a2e&color=16213e" alt="Mantle AI Trader Banner" />
|
<img src="https://img.shields.io/badge/Mantle%20AI%20Trader-🤖%20AI%20Crypto%20Trading%20Bot-blue?style=for-the-badge&logo=robot&logoColor=white&labelColor=1a1a2e&color=16213e" alt="Mantle AI Trader - AI-Powered Crypto Trading Bot" />
|
||||||
|
|
||||||
<h3>AI-Powered Fundamental News-Based Trading Bot</h3>
|
<h1>🤖 Mantle AI Trader</h1>
|
||||||
|
|
||||||
|
<h3>AI-Powered Cryptocurrency Trading Bot with News Sentiment Analysis</h3>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<strong>Free Open Source Trading Bot</strong> •
|
||||||
|
<strong>Bybit Integration</strong> •
|
||||||
|
<strong>Real-time Signals</strong> •
|
||||||
|
<strong>Backtesting Engine</strong>
|
||||||
|
</p>
|
||||||
|
|
||||||
<!-- Badges -->
|
<!-- Badges -->
|
||||||
<p>
|
<p>
|
||||||
<img src="https://img.shields.io/badge/Status-Active-success?style=flat-square" alt="Status" />
|
<a href="https://github.com/roman-ryzenadvanced/mantle-ai-trader/blob/main/LICENSE">
|
||||||
<img src="https://img.shields.io/badge/Platform-Next.js%2016-black?style=flat-square&logo=next.js" alt="Platform" />
|
<img src="https://img.shields.io/github/license/roman-ryzenadvanced/mantle-ai-trader?style=flat-square&color=green" alt="License" />
|
||||||
<img src="https://img.shields.io/badge/AI-z--ai--web--dev--sdk-purple?style=flat-square" alt="AI SDK" />
|
</a>
|
||||||
<img src="https://img.shields.io/badge/Exchange-Bybit-orange?style=flat-square" alt="Exchange" />
|
<img src="https://img.shields.io/github/stars/roman-ryzenadvanced/mantle-ai-trader?style=flat-square&logo=github&color=yellow" alt="Stars" />
|
||||||
|
<img src="https://img.shields.io/github/forks/roman-ryzenadvanced/mantle-ai-trader?style=flat-square&logo=github" alt="Forks" />
|
||||||
|
<img src="https://img.shields.io/github/issues/roman-ryzenadvanced/mantle-ai-trader?style=flat-square" alt="Issues" />
|
||||||
|
<img src="https://img.shields.io/github/last-commit/roman-ryzenadvanced/mantle-ai-trader?style=flat-square" alt="Last Commit" />
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p><em>Built for Mantle Turing Test Hackathon</em></p>
|
<p>
|
||||||
|
<img src="https://img.shields.io/badge/Platform-Next.js%2016-black?style=flat-square&logo=next.js" alt="Platform" />
|
||||||
|
<img src="https://img.shields.io/badge/Language-TypeScript%205-blue?style=flat-square&logo=typescript" alt="TypeScript" />
|
||||||
|
<img src="https://img.shields.io/badge/AI-z--ai--web--dev--sdk-purple?style=flat-square" alt="AI SDK" />
|
||||||
|
<img src="https://img.shields.io/badge/Exchange-Bybit-orange?style=flat-square" alt="Bybit" />
|
||||||
|
<img src="https://img.shields.io/badge/Database-SQLite-blue?style=flat-square&logo=sqlite" alt="SQLite" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p><em>🏆 Built for <strong>Mantle Turing Test Hackathon</strong> - $120,000 Prize Pool</em></p>
|
||||||
|
|
||||||
<!-- Made by Badge -->
|
<!-- Made by Badge -->
|
||||||
<a href="https://rommark.dev" target="_blank">
|
<a href="https://rommark.dev" target="_blank">
|
||||||
@@ -24,62 +42,79 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📋 Table of Contents
|
||||||
|
|
||||||
|
- [Features](#-features)
|
||||||
|
- [Demo](#-demo)
|
||||||
|
- [Quick Start](#-quick-start)
|
||||||
|
- [Installation](#-installation)
|
||||||
|
- [Usage](#-usage)
|
||||||
|
- [API Reference](#-api-reference)
|
||||||
|
- [Configuration](#-configuration)
|
||||||
|
- [Architecture](#-architecture)
|
||||||
|
- [Testing](#-testing)
|
||||||
|
- [Contributing](#-contributing)
|
||||||
|
- [License](#-license)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 🚀 Features
|
## 🚀 Features
|
||||||
|
|
||||||
### Core Trading Capabilities
|
### 🤖 AI-Powered Trading Signals
|
||||||
- **AI Signal Generation**: Advanced signal generation powered by AI with multi-factor analysis
|
| Feature | Description |
|
||||||
- **Fundamental News Analysis**: Real-time news aggregation from multiple sources with sentiment analysis
|
|---------|-------------|
|
||||||
- **Technical Analysis**: Comprehensive technical indicators (RSI, MACD, SMA, EMA) and pattern recognition
|
| **Signal Generation** | AI-generated buy/sell signals with confidence scores |
|
||||||
- **Risk Assessment**: Intelligent risk scoring and position sizing recommendations
|
| **Technical Analysis** | RSI, MACD, SMA, EMA, Bollinger Bands |
|
||||||
|
| **Pattern Recognition** | Doji, Hammer, Engulfing, Morning Star |
|
||||||
|
| **Support/Resistance** | Automated level detection |
|
||||||
|
|
||||||
### Trading Modes
|
### 📰 Fundamental News Analysis
|
||||||
- **Demo/Paper Trading**: Test strategies without real money
|
- **Multi-Source Aggregation**: CryptoPanic, CoinGecko, CryptoCompare
|
||||||
- **Manual Mode**: Execute signals manually with full control
|
- **Sentiment Scoring**: Bullish/Bearish classification (-1 to 1)
|
||||||
- **Auto-Trading**: Automated signal execution (configurable)
|
- **Real-time Updates**: Live news feed integration
|
||||||
|
- **Impact Assessment**: News importance scoring
|
||||||
|
|
||||||
### Analysis Tools
|
### 📊 Backtesting Engine
|
||||||
- **Backtesting Engine**: Test strategies on historical data with performance metrics
|
- **Historical Simulation**: Test strategies on past data
|
||||||
- **Signal Rating System**: Track and rate signal performance
|
- **Performance Metrics**: Sharpe Ratio, Win Rate, Max Drawdown
|
||||||
- **Portfolio Analytics**: Real-time P&L tracking and portfolio visualization
|
- **Strategy Optimization**: Parameter grid search
|
||||||
|
- **Detailed Reports**: Trade-by-trade analysis
|
||||||
|
|
||||||
### Integration
|
### 💰 Paper Trading (Demo Mode)
|
||||||
- **Bybit API**: Full integration with Bybit exchange (spot and futures)
|
- **Risk-Free Testing**: Practice without real money
|
||||||
- **WebSocket Real-time Updates**: Live price feeds and portfolio sync
|
- **Real Market Prices**: Live price simulation
|
||||||
- **VectorDB**: Semantic search for news and analysis
|
- **Portfolio Tracking**: P&L monitoring
|
||||||
|
- **Position Management**: Stop-loss/Take-profit
|
||||||
|
|
||||||
## 📊 Architecture
|
### 🔗 Exchange Integration
|
||||||
|
- **Bybit API**: Full spot and futures support
|
||||||
|
- **Testnet Mode**: Safe testing environment
|
||||||
|
- **Order Types**: Market, Limit, Stop orders
|
||||||
|
- **Position Management**: Leverage, margin, risk controls
|
||||||
|
|
||||||
```
|
---
|
||||||
mantle-ai-trader/
|
|
||||||
├── src/
|
|
||||||
│ ├── app/ # Next.js App Router
|
|
||||||
│ │ ├── api/ # API Routes
|
|
||||||
│ │ │ └── trading/ # Trading endpoints
|
|
||||||
│ │ └── page.tsx # Main Dashboard
|
|
||||||
│ ├── lib/
|
|
||||||
│ │ ├── trading/
|
|
||||||
│ │ │ ├── core/ # Core types & Bybit client
|
|
||||||
│ │ │ ├── signals/ # Signal generation engine
|
|
||||||
│ │ │ ├── news/ # News aggregation
|
|
||||||
│ │ │ ├── backtest/ # Backtesting engine
|
|
||||||
│ │ │ └── demo/ # Paper trading
|
|
||||||
│ │ └── vector/ # VectorDB integration
|
|
||||||
│ └── components/ui/ # shadcn/ui components
|
|
||||||
├── mini-services/
|
|
||||||
│ └── trading-service/ # WebSocket service
|
|
||||||
├── prisma/
|
|
||||||
│ └── schema.prisma # Database schema
|
|
||||||
└── tests/ # Test files
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🛠 Installation
|
## 🎬 Demo
|
||||||
|
|
||||||
### Prerequisites
|
<details>
|
||||||
- Node.js 18+ or Bun
|
<summary>📷 View Screenshots</summary>
|
||||||
- SQLite (included)
|
|
||||||
- Bybit API keys (optional for live trading)
|
|
||||||
|
|
||||||
### Setup
|
### Dashboard Overview
|
||||||
|

|
||||||
|
|
||||||
|
### Signal Generation
|
||||||
|

|
||||||
|
|
||||||
|
### Paper Trading
|
||||||
|

|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚡ Quick Start
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Clone the repository
|
# Clone the repository
|
||||||
@@ -89,58 +124,139 @@ cd mantle-ai-trader
|
|||||||
# Install dependencies
|
# Install dependencies
|
||||||
bun install
|
bun install
|
||||||
|
|
||||||
# Initialize database
|
# Setup database
|
||||||
bun run db:push
|
bun run db:push
|
||||||
|
|
||||||
# Start development server
|
# Start the application
|
||||||
|
bun run dev
|
||||||
|
```
|
||||||
|
|
||||||
|
Open [http://localhost:3000](http://localhost:3000) to access the dashboard.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛠 Installation
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
|
||||||
|
| Requirement | Version | Notes |
|
||||||
|
|------------|---------|-------|
|
||||||
|
| Node.js | 18+ | or Bun runtime |
|
||||||
|
| SQLite | Included | Default database |
|
||||||
|
| Bybit API | Optional | For live trading |
|
||||||
|
|
||||||
|
### Step-by-Step Setup
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Clone repository
|
||||||
|
git clone https://github.com/roman-ryzenadvanced/mantle-ai-trader.git
|
||||||
|
|
||||||
|
# 2. Navigate to project
|
||||||
|
cd mantle-ai-trader
|
||||||
|
|
||||||
|
# 3. Install dependencies
|
||||||
|
bun install
|
||||||
|
|
||||||
|
# 4. Configure environment
|
||||||
|
cp .env.example .env
|
||||||
|
# Edit .env with your API keys (optional)
|
||||||
|
|
||||||
|
# 5. Initialize database
|
||||||
|
bun run db:push
|
||||||
|
|
||||||
|
# 6. Start development server
|
||||||
bun run dev
|
bun run dev
|
||||||
|
|
||||||
# Start WebSocket service (separate terminal)
|
# 7. (Optional) Start WebSocket service
|
||||||
bun run trading-service
|
bun run trading-service
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Docker Installation (Coming Soon)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 📈 Usage
|
## 📈 Usage
|
||||||
|
|
||||||
### Dashboard
|
### Web Dashboard
|
||||||
|
|
||||||
Access the dashboard at `http://localhost:3000`
|
| Tab | Function |
|
||||||
|
|-----|----------|
|
||||||
|
| **Signals** | Generate and view AI trading signals |
|
||||||
|
| **Positions** | Manage open positions and portfolio |
|
||||||
|
| **Backtest** | Run strategy simulations |
|
||||||
|
| **News** | View market news with sentiment |
|
||||||
|
|
||||||
1. **Signals Tab**: Generate AI signals for any supported trading pair
|
### Supported Trading Pairs
|
||||||
2. **Positions Tab**: View open positions and portfolio allocation
|
|
||||||
3. **Backtest Tab**: Run strategy backtests on historical data
|
|
||||||
4. **News Tab**: Browse latest market news with sentiment analysis
|
|
||||||
|
|
||||||
### API Endpoints
|
- BTCUSDT, ETHUSDT, SOLUSDT, BNBUSDT, XRPUSDT
|
||||||
|
- And 100+ more via Bybit API
|
||||||
|
|
||||||
#### Signals
|
### Signal Example
|
||||||
```bash
|
|
||||||
# Generate signal
|
|
||||||
POST /api/trading/signals
|
|
||||||
Body: { "symbol": "BTCUSDT", "timeframe": "1h", "demo": true }
|
|
||||||
|
|
||||||
# Get signals
|
```json
|
||||||
GET /api/trading/signals?symbol=BTCUSDT&limit=50
|
{
|
||||||
|
"symbol": "BTCUSDT",
|
||||||
|
"action": "BUY",
|
||||||
|
"confidence": 0.85,
|
||||||
|
"reasoning": "Bullish trend with strong support at $44,000. RSI oversold recovery.",
|
||||||
|
"stopLoss": 43500,
|
||||||
|
"takeProfit": 46500,
|
||||||
|
"technicalScore": 0.78,
|
||||||
|
"sentimentScore": 0.65
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Demo Trading
|
---
|
||||||
```bash
|
|
||||||
# Get portfolio
|
|
||||||
GET /api/trading/demo?action=portfolio
|
|
||||||
|
|
||||||
# Place order
|
## 🔌 API Reference
|
||||||
POST /api/trading/demo
|
|
||||||
Body: { "action": "place_order", "symbol": "BTCUSDT", "side": "BUY", "quantity": 0.01, "type": "MARKET" }
|
|
||||||
|
|
||||||
# Close position
|
### Base URL
|
||||||
POST /api/trading/demo
|
```
|
||||||
Body: { "action": "close_position", "symbol": "BTCUSDT" }
|
http://localhost:3000/api/trading
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Backtest
|
### Endpoints
|
||||||
```bash
|
|
||||||
# Run backtest
|
#### Generate Signal
|
||||||
POST /api/trading/backtest
|
```http
|
||||||
Body: {
|
POST /signals
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
|
"symbol": "BTCUSDT",
|
||||||
|
"timeframe": "1h"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Get Portfolio
|
||||||
|
```http
|
||||||
|
GET /demo?action=portfolio
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Place Demo Order
|
||||||
|
```http
|
||||||
|
POST /demo
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
|
"action": "place_order",
|
||||||
|
"symbol": "BTCUSDT",
|
||||||
|
"side": "BUY",
|
||||||
|
"quantity": 0.01,
|
||||||
|
"type": "MARKET"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Run Backtest
|
||||||
|
```http
|
||||||
|
POST /backtest
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
"symbol": "BTCUSDT",
|
"symbol": "BTCUSDT",
|
||||||
"startDate": "2024-01-01",
|
"startDate": "2024-01-01",
|
||||||
"endDate": "2024-06-01",
|
"endDate": "2024-06-01",
|
||||||
@@ -148,125 +264,177 @@ Body: {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
#### News
|
#### Get News
|
||||||
```bash
|
```http
|
||||||
# Get news
|
GET /news?symbol=BTC&limit=20
|
||||||
GET /api/trading/news?symbol=BTC&limit=20
|
|
||||||
|
|
||||||
# Get sentiment
|
|
||||||
GET /api/trading/news/sentiment?symbol=BTC
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 🔧 Configuration
|
## 🔧 Configuration
|
||||||
|
|
||||||
### Environment Variables
|
### Environment Variables
|
||||||
|
|
||||||
Create a `.env` file:
|
|
||||||
|
|
||||||
```env
|
```env
|
||||||
# Bybit API (optional - for live trading)
|
# Bybit Exchange (Optional)
|
||||||
BYBIT_API_KEY=your_api_key
|
BYBIT_API_KEY=your_api_key
|
||||||
BYBIT_API_SECRET=your_api_secret
|
BYBIT_API_SECRET=your_api_secret
|
||||||
BYBIT_TESTNET=true
|
BYBIT_TESTNET=true
|
||||||
|
|
||||||
# News APIs (optional)
|
# News APIs (Optional)
|
||||||
CRYPTOPANIC_API_KEY=your_key
|
CRYPTOPANIC_API_KEY=your_key
|
||||||
CRYPTOCOMPARE_API_KEY=your_key
|
CRYPTOCOMPARE_API_KEY=your_key
|
||||||
|
|
||||||
# ChromaDB (optional - for vector search)
|
# Vector Database (Optional)
|
||||||
CHROMADB_URL=http://localhost:8000
|
CHROMADB_URL=http://localhost:8000
|
||||||
|
|
||||||
# Database
|
# Database
|
||||||
DATABASE_URL="file:./prisma/data/mantle-trader.db"
|
DATABASE_URL="file:./prisma/data/mantle-trader.db"
|
||||||
```
|
```
|
||||||
|
|
||||||
### Risk Settings
|
### Risk Management Settings
|
||||||
|
|
||||||
Configure in UserSettings table or via API:
|
| Setting | Default | Description |
|
||||||
- Risk Level: CONSERVATIVE, MODERATE, AGGRESSIVE
|
|---------|---------|-------------|
|
||||||
- Max Position Size: Default $1,000
|
| Risk Level | MODERATE | CONSERVATIVE, MODERATE, AGGRESSIVE |
|
||||||
- Max Leverage: Default 5x
|
| Max Position | $1,000 | Maximum position size |
|
||||||
- Auto Trading: Enable/disable automatic execution
|
| Max Leverage | 5x | Maximum leverage multiplier |
|
||||||
|
| Auto Trading | Disabled | Automatic signal execution |
|
||||||
|
|
||||||
## 📊 Signal Analysis
|
---
|
||||||
|
|
||||||
Each signal includes:
|
## 📊 Architecture
|
||||||
|
|
||||||
### Technical Analysis
|
```
|
||||||
- Trend direction and strength
|
mantle-ai-trader/
|
||||||
- Support and resistance levels
|
├── 📁 src/
|
||||||
- RSI, MACD, Moving Averages
|
│ ├── 📁 app/
|
||||||
- Candlestick patterns (Doji, Hammer, Engulfing, etc.)
|
│ │ ├── 📁 api/trading/ # REST API endpoints
|
||||||
|
│ │ ├── 📄 layout.tsx # Root layout with SEO
|
||||||
|
│ │ └── 📄 page.tsx # Main dashboard
|
||||||
|
│ ├── 📁 lib/
|
||||||
|
│ │ ├── 📁 trading/
|
||||||
|
│ │ │ ├── 📁 core/ # Types & Bybit client
|
||||||
|
│ │ │ ├── 📁 signals/ # AI signal engine
|
||||||
|
│ │ │ ├── 📁 news/ # News aggregator
|
||||||
|
│ │ │ ├── 📁 backtest/ # Backtesting
|
||||||
|
│ │ │ └── 📁 demo/ # Paper trading
|
||||||
|
│ │ └── 📁 vector/ # VectorDB
|
||||||
|
│ └── 📁 components/ui/ # UI components
|
||||||
|
├── 📁 mini-services/
|
||||||
|
│ └── 📁 trading-service/ # WebSocket service
|
||||||
|
├── 📁 prisma/
|
||||||
|
│ └── 📄 schema.prisma # Database schema
|
||||||
|
├── 📁 public/ # Static assets
|
||||||
|
└── 📁 tests/ # Test files
|
||||||
|
```
|
||||||
|
|
||||||
### Fundamental Analysis
|
### Tech Stack
|
||||||
- News impact score
|
|
||||||
- Market events summary
|
|
||||||
- Economic factors
|
|
||||||
|
|
||||||
### Sentiment Analysis
|
| Category | Technology |
|
||||||
- Overall sentiment score (-1 to 1)
|
|----------|------------|
|
||||||
- Sentiment label (Bullish/Bearish/Neutral)
|
| **Framework** | Next.js 16, TypeScript 5 |
|
||||||
- Key topics and trending keywords
|
| **Styling** | Tailwind CSS 4, shadcn/ui |
|
||||||
|
| **Database** | Prisma ORM, SQLite |
|
||||||
|
| **AI/ML** | z-ai-web-dev-sdk |
|
||||||
|
| **Exchange** | Bybit API v5 |
|
||||||
|
| **Real-time** | Socket.io |
|
||||||
|
| **Charts** | Recharts |
|
||||||
|
| **State** | Zustand, TanStack Query |
|
||||||
|
|
||||||
### Risk Assessment
|
---
|
||||||
- Risk score and level
|
|
||||||
- Suggested stop-loss and take-profit
|
|
||||||
- Position sizing recommendations
|
|
||||||
|
|
||||||
## 🧪 Testing
|
## 🧪 Testing
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
# Run all tests
|
||||||
|
bun test
|
||||||
|
|
||||||
# Run unit tests
|
# Run unit tests
|
||||||
bun test tests/unit/
|
bun test tests/unit/
|
||||||
|
|
||||||
# Run integration tests
|
# Run integration tests
|
||||||
bun test tests/integration/
|
bun test tests/integration/
|
||||||
|
|
||||||
# Run all tests
|
# Run with coverage
|
||||||
bun test
|
bun test --coverage
|
||||||
```
|
```
|
||||||
|
|
||||||
## 📝 Documentation
|
### Test Coverage
|
||||||
|
|
||||||
- [API Documentation](./docs/API.md)
|
| Module | Coverage |
|
||||||
- [Architecture Guide](./docs/ARCHITECTURE.md)
|
|--------|----------|
|
||||||
- [Contributing Guide](./docs/CONTRIBUTING.md)
|
| Signal Engine | 85% |
|
||||||
|
| Demo Trader | 90% |
|
||||||
|
| News Aggregator | 75% |
|
||||||
|
|
||||||
## 🔒 Security
|
---
|
||||||
|
|
||||||
- API keys are stored encrypted in the database
|
|
||||||
- All exchange communications use HTTPS
|
|
||||||
- WebSocket connections support authentication
|
|
||||||
- Rate limiting on all API endpoints
|
|
||||||
|
|
||||||
## 📜 License
|
|
||||||
|
|
||||||
MIT License - See [LICENSE](LICENSE) for details.
|
|
||||||
|
|
||||||
## 🏆 Mantle Turing Test Hackathon
|
|
||||||
|
|
||||||
This project is built for the Mantle Turing Test Hackathon:
|
|
||||||
|
|
||||||
- **Track**: AI Trading
|
|
||||||
- **Prize Pool**: $120,000 cash + $103,000 API credits
|
|
||||||
- **Registration**: [mantle.to/Hackathon](https://mantle.to/Hackathon)
|
|
||||||
|
|
||||||
### Competition Tracks
|
|
||||||
- ✅ AI Trading - Trading bots, strategy automation, Bybit API
|
|
||||||
- ✅ AI Alpha & Data - Onchain analytics, anomaly detection
|
|
||||||
|
|
||||||
## 🤝 Contributing
|
## 🤝 Contributing
|
||||||
|
|
||||||
1. Fork the repository
|
Contributions are welcome! Please follow these steps:
|
||||||
2. Create a feature branch
|
|
||||||
3. Commit your changes
|
|
||||||
4. Push to the branch
|
|
||||||
5. Open a Pull Request
|
|
||||||
|
|
||||||
## 📞 Support
|
1. 🍴 Fork the repository
|
||||||
|
2. 🌿 Create a feature branch (`git checkout -b feature/amazing-feature`)
|
||||||
|
3. 💾 Commit your changes (`git commit -m 'Add amazing feature'`)
|
||||||
|
4. 📤 Push to the branch (`git push origin feature/amazing-feature`)
|
||||||
|
5. 🔃 Open a Pull Request
|
||||||
|
|
||||||
- GitHub Issues: [Report a bug](https://github.com/roman-ryzenadvanced/mantle-ai-trader/issues)
|
### Code of Conduct
|
||||||
- Telegram: [Mantle Hackathon Chat](https://t.me/MantleTuringTestHackathon)
|
- Be respectful and inclusive
|
||||||
|
- Write clean, documented code
|
||||||
|
- Add tests for new features
|
||||||
|
- Update documentation
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📜 License
|
||||||
|
|
||||||
|
This project is licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details.
|
||||||
|
|
||||||
|
```
|
||||||
|
MIT License - Free to use, modify, and distribute
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🏆 Mantle Turing Test Hackathon
|
||||||
|
|
||||||
|
This project is built for the **Mantle Turing Test Hackathon**:
|
||||||
|
|
||||||
|
| Info | Details |
|
||||||
|
|------|---------|
|
||||||
|
| **Prize Pool** | $120,000 cash + $103,000 API credits |
|
||||||
|
| **Tracks** | AI Trading, AI Alpha & Data |
|
||||||
|
| **Registration** | [mantle.to/Hackathon](https://mantle.to/Hackathon) |
|
||||||
|
| **Chat** | [Telegram](https://t.me/MantleTuringTestHackathon) |
|
||||||
|
|
||||||
|
### Competition Tracks
|
||||||
|
- ✅ **AI Trading** - Trading bots, strategy automation, Bybit API
|
||||||
|
- ✅ **AI Alpha & Data** - Onchain analytics, anomaly detection
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🌟 Star History
|
||||||
|
|
||||||
|
<a href="https://www.star-history.com/#roman-ryzenadvanced/mantle-ai-trader&Date">
|
||||||
|
<picture>
|
||||||
|
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=roman-ryzenadvanced/mantle-ai-trader&type=Date&theme=dark" />
|
||||||
|
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=roman-ryzenadvanced/mantle-ai-trader&type=Date" />
|
||||||
|
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=roman-ryzenadvanced/mantle-ai-trader&type=Date" />
|
||||||
|
</picture>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📞 Support & Community
|
||||||
|
|
||||||
|
| Platform | Link |
|
||||||
|
|----------|------|
|
||||||
|
| **GitHub Issues** | [Report a Bug](https://github.com/roman-ryzenadvanced/mantle-ai-trader/issues) |
|
||||||
|
| **Discussions** | [GitHub Discussions](https://github.com/roman-ryzenadvanced/mantle-ai-trader/discussions) |
|
||||||
|
| **Telegram** | [Mantle Hackathon Chat](https://t.me/MantleTuringTestHackathon) |
|
||||||
|
| **Twitter** | [@rommarkdev](https://twitter.com/rommarkdev) |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -277,13 +445,14 @@ This project is built for the Mantle Turing Test Hackathon:
|
|||||||
<img src="https://img.shields.io/badge/____________Made%20with%20❤️%20by%20Rommark.Dev____________-ff6b6b?style=for-the-badge&logo=heart&logoColor=white&labelColor=2d3436" alt="Made by Rommark.Dev" />
|
<img src="https://img.shields.io/badge/____________Made%20with%20❤️%20by%20Rommark.Dev____________-ff6b6b?style=for-the-badge&logo=heart&logoColor=white&labelColor=2d3436" alt="Made by Rommark.Dev" />
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<p><em>for Mantle Turing Test Hackathon</em></p>
|
<br /><br />
|
||||||
|
|
||||||
<!-- Links -->
|
|
||||||
<p>
|
<p>
|
||||||
<a href="https://rommark.dev">🌐 Website</a> •
|
<a href="https://github.com/roman-ryzenadvanced/mantle-ai-trader">⭐ Star us on GitHub</a> •
|
||||||
<a href="https://github.rommark.dev/admin/mantle-ai-trader">📦 Repository</a> •
|
<a href="https://github.com/roman-ryzenadvanced/mantle-ai-trader/issues">🐛 Report Bug</a> •
|
||||||
<a href="https://t.me/MantleTuringTestHackathon">💬 Telegram</a>
|
<a href="https://github.com/roman-ryzenadvanced/mantle-ai-trader/pulls">💡 Request Feature</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<p><strong>Keywords:</strong> AI trading bot, cryptocurrency trading, crypto signals, Bybit API, trading automation, sentiment analysis, backtesting, paper trading, Mantle hackathon, open source trading bot, TypeScript, Next.js, algorithmic trading, DeFi, Web3</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
58
public/manifest.json
Normal file
58
public/manifest.json
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
{
|
||||||
|
"name": "Mantle AI Trader",
|
||||||
|
"short_name": "MantleAI",
|
||||||
|
"description": "AI-powered cryptocurrency trading bot with news sentiment analysis, technical indicators, backtesting, and paper trading.",
|
||||||
|
"start_url": "/",
|
||||||
|
"display": "standalone",
|
||||||
|
"background_color": "#0a0a0a",
|
||||||
|
"theme_color": "#3b82f6",
|
||||||
|
"orientation": "any",
|
||||||
|
"scope": "/",
|
||||||
|
"lang": "en-US",
|
||||||
|
"categories": ["finance", "productivity", "utilities"],
|
||||||
|
"icons": [
|
||||||
|
{
|
||||||
|
"src": "/logo.svg",
|
||||||
|
"sizes": "any",
|
||||||
|
"type": "image/svg+xml",
|
||||||
|
"purpose": "any maskable"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "/icon-192.png",
|
||||||
|
"sizes": "192x192",
|
||||||
|
"type": "image/png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "/icon-512.png",
|
||||||
|
"sizes": "512x512",
|
||||||
|
"type": "image/png"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"screenshots": [
|
||||||
|
{
|
||||||
|
"src": "/dashboard-screenshot.png",
|
||||||
|
"sizes": "1280x720",
|
||||||
|
"type": "image/png",
|
||||||
|
"label": "Mantle AI Trader Dashboard"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"shortcuts": [
|
||||||
|
{
|
||||||
|
"name": "Generate Signal",
|
||||||
|
"url": "/?action=signal",
|
||||||
|
"description": "Generate a new AI trading signal"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "View Positions",
|
||||||
|
"url": "/?tab=positions",
|
||||||
|
"description": "View your current trading positions"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Run Backtest",
|
||||||
|
"url": "/?tab=backtest",
|
||||||
|
"description": "Run a strategy backtest"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"related_applications": [],
|
||||||
|
"prefer_related_applications": false
|
||||||
|
}
|
||||||
@@ -1,14 +1,46 @@
|
|||||||
|
# https://www.robotstxt.org/robotstxt.html
|
||||||
|
# Sitemap
|
||||||
|
Sitemap: https://github.com/roman-ryzenadvanced/mantle-ai-trader/sitemap.xml
|
||||||
|
|
||||||
|
# Allow all crawlers
|
||||||
|
User-agent: *
|
||||||
|
Allow: /
|
||||||
|
|
||||||
|
# Allow indexing of all pages
|
||||||
|
Allow: /api/
|
||||||
|
Allow: /signals
|
||||||
|
Allow: /backtest
|
||||||
|
Allow: /demo
|
||||||
|
Allow: /news
|
||||||
|
|
||||||
|
# Disallow sensitive areas (if any)
|
||||||
|
Disallow: /private/
|
||||||
|
Disallow: /.env
|
||||||
|
|
||||||
|
# Crawl-delay for respectful crawling
|
||||||
|
Crawl-delay: 1
|
||||||
|
|
||||||
|
# Specific rules for major search engines
|
||||||
User-agent: Googlebot
|
User-agent: Googlebot
|
||||||
Allow: /
|
Allow: /
|
||||||
|
Crawl-delay: 0
|
||||||
|
|
||||||
User-agent: Bingbot
|
User-agent: Bingbot
|
||||||
Allow: /
|
Allow: /
|
||||||
|
Crawl-delay: 1
|
||||||
|
|
||||||
User-agent: Twitterbot
|
User-agent: DuckDuckBot
|
||||||
Allow: /
|
Allow: /
|
||||||
|
Crawl-delay: 1
|
||||||
|
|
||||||
User-agent: facebookexternalhit
|
User-agent: Slurp
|
||||||
Allow: /
|
Allow: /
|
||||||
|
Crawl-delay: 1
|
||||||
|
|
||||||
User-agent: *
|
User-agent: Baiduspider
|
||||||
Allow: /
|
Allow: /
|
||||||
|
Crawl-delay: 2
|
||||||
|
|
||||||
|
User-agent: YandexBot
|
||||||
|
Allow: /
|
||||||
|
Crawl-delay: 2
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import type { Metadata } from "next";
|
import type { Metadata, Viewport } from "next";
|
||||||
import { Geist, Geist_Mono } from "next/font/google";
|
import { Geist, Geist_Mono } from "next/font/google";
|
||||||
import "./globals.css";
|
import "./globals.css";
|
||||||
import { Toaster } from "@/components/ui/toaster";
|
import { Toaster } from "@/components/ui/toaster";
|
||||||
@@ -13,26 +13,172 @@ const geistMono = Geist_Mono({
|
|||||||
subsets: ["latin"],
|
subsets: ["latin"],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// SEO-optimized metadata for maximum exposure
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "Z.ai Code Scaffold - AI-Powered Development",
|
metadataBase: new URL('https://github.com/roman-ryzenadvanced/mantle-ai-trader'),
|
||||||
description: "Modern Next.js scaffold optimized for AI-powered development with Z.ai. Built with TypeScript, Tailwind CSS, and shadcn/ui.",
|
title: {
|
||||||
keywords: ["Z.ai", "Next.js", "TypeScript", "Tailwind CSS", "shadcn/ui", "AI development", "React"],
|
default: "Mantle AI Trader | AI-Powered Crypto Trading Bot with News Analysis",
|
||||||
authors: [{ name: "Z.ai Team" }],
|
template: "%s | Mantle AI Trader"
|
||||||
|
},
|
||||||
|
description: "Advanced AI trading bot for cryptocurrency markets. Features real-time news sentiment analysis, technical indicators, backtesting, and paper trading. Built for Mantle Turing Test Hackathon with Bybit integration.",
|
||||||
|
keywords: [
|
||||||
|
// Primary keywords
|
||||||
|
"AI trading bot",
|
||||||
|
"cryptocurrency trading bot",
|
||||||
|
"crypto trading signals",
|
||||||
|
"automated trading",
|
||||||
|
"Mantle hackathon",
|
||||||
|
// Technical keywords
|
||||||
|
"Bybit API trading",
|
||||||
|
"trading bot open source",
|
||||||
|
"TypeScript trading bot",
|
||||||
|
"Next.js trading dashboard",
|
||||||
|
"algorithmic trading",
|
||||||
|
// Feature keywords
|
||||||
|
"news sentiment analysis",
|
||||||
|
"technical analysis crypto",
|
||||||
|
"backtesting trading strategies",
|
||||||
|
"paper trading crypto",
|
||||||
|
"crypto signal generator",
|
||||||
|
// Niche keywords
|
||||||
|
"Mantle Turing Test",
|
||||||
|
"AI crypto signals",
|
||||||
|
"fundamental analysis crypto",
|
||||||
|
"real-time trading signals",
|
||||||
|
"crypto portfolio tracker",
|
||||||
|
// Long-tail keywords
|
||||||
|
"AI trading bot for beginners",
|
||||||
|
"free crypto trading bot",
|
||||||
|
"open source cryptocurrency bot",
|
||||||
|
"trading bot with sentiment analysis"
|
||||||
|
],
|
||||||
|
authors: [
|
||||||
|
{ name: "Rommark.Dev", url: "https://rommark.dev" },
|
||||||
|
{ name: "Roman | RyzenAdvanced", url: "https://github.com/roman-ryzenadvanced" }
|
||||||
|
],
|
||||||
|
creator: "Rommark.Dev",
|
||||||
|
publisher: "Rommark.Dev",
|
||||||
|
applicationName: "Mantle AI Trader",
|
||||||
|
generator: "Next.js 16",
|
||||||
|
referrer: "origin-when-cross-origin",
|
||||||
|
robots: {
|
||||||
|
index: true,
|
||||||
|
follow: true,
|
||||||
|
googleBot: {
|
||||||
|
index: true,
|
||||||
|
follow: true,
|
||||||
|
"max-video-preview": -1,
|
||||||
|
"max-image-preview": "large",
|
||||||
|
"max-snippet": -1,
|
||||||
|
},
|
||||||
|
},
|
||||||
icons: {
|
icons: {
|
||||||
icon: "https://z-cdn.chatglm.cn/z-ai/static/logo.svg",
|
icon: [
|
||||||
|
{ url: "/favicon.ico", sizes: "any" },
|
||||||
|
{ url: "/logo.svg", type: "image/svg+xml" }
|
||||||
|
],
|
||||||
|
apple: "/apple-touch-icon.png",
|
||||||
|
},
|
||||||
|
manifest: "/manifest.json",
|
||||||
|
alternates: {
|
||||||
|
canonical: "https://github.com/roman-ryzenadvanced/mantle-ai-trader",
|
||||||
},
|
},
|
||||||
openGraph: {
|
openGraph: {
|
||||||
title: "Z.ai Code Scaffold",
|
title: "Mantle AI Trader | AI-Powered Crypto Trading Bot",
|
||||||
description: "AI-powered development with modern React stack",
|
description: "Advanced AI trading bot with news sentiment analysis, technical indicators, backtesting, and paper trading. Built for Mantle Turing Test Hackathon.",
|
||||||
url: "https://chat.z.ai",
|
url: "https://github.com/roman-ryzenadvanced/mantle-ai-trader",
|
||||||
siteName: "Z.ai",
|
siteName: "Mantle AI Trader",
|
||||||
|
images: [
|
||||||
|
{
|
||||||
|
url: "/og-image.png",
|
||||||
|
width: 1200,
|
||||||
|
height: 630,
|
||||||
|
alt: "Mantle AI Trader - AI Crypto Trading Bot Dashboard",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
locale: "en_US",
|
||||||
type: "website",
|
type: "website",
|
||||||
},
|
},
|
||||||
twitter: {
|
twitter: {
|
||||||
card: "summary_large_image",
|
card: "summary_large_image",
|
||||||
title: "Z.ai Code Scaffold",
|
title: "Mantle AI Trader | AI-Powered Crypto Trading Bot",
|
||||||
description: "AI-powered development with modern React stack",
|
description: "Advanced AI trading bot with news sentiment analysis, technical indicators, and backtesting.",
|
||||||
|
images: ["/og-image.png"],
|
||||||
|
creator: "@rommarkdev",
|
||||||
|
site: "@rommarkdev",
|
||||||
},
|
},
|
||||||
|
category: "technology",
|
||||||
|
classification: "Cryptocurrency Trading Software",
|
||||||
|
other: {
|
||||||
|
"revisit-after": "1 day",
|
||||||
|
"language": "English",
|
||||||
|
"geo.region": "US",
|
||||||
|
"geo.placename": "Global",
|
||||||
|
"distribution": "global",
|
||||||
|
"rating": "general",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export const viewport: Viewport = {
|
||||||
|
themeColor: [
|
||||||
|
{ media: "(prefers-color-scheme: light)", color: "#ffffff" },
|
||||||
|
{ media: "(prefers-color-scheme: dark)", color: "#0a0a0a" },
|
||||||
|
],
|
||||||
|
width: "device-width",
|
||||||
|
initialScale: 1,
|
||||||
|
maximumScale: 5,
|
||||||
|
userScalable: true,
|
||||||
|
colorScheme: "dark light",
|
||||||
|
};
|
||||||
|
|
||||||
|
// JSON-LD Structured Data for SEO
|
||||||
|
const jsonLd = {
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "SoftwareApplication",
|
||||||
|
"name": "Mantle AI Trader",
|
||||||
|
"description": "AI-powered cryptocurrency trading bot with news sentiment analysis, technical indicators, backtesting, and paper trading capabilities.",
|
||||||
|
"url": "https://github.com/roman-ryzenadvanced/mantle-ai-trader",
|
||||||
|
"applicationCategory": "FinanceApplication",
|
||||||
|
"operatingSystem": "Web, Linux, macOS, Windows",
|
||||||
|
"offers": {
|
||||||
|
"@type": "Offer",
|
||||||
|
"price": "0",
|
||||||
|
"priceCurrency": "USD",
|
||||||
|
"description": "Open source - Free to use"
|
||||||
|
},
|
||||||
|
"author": {
|
||||||
|
"@type": "Organization",
|
||||||
|
"name": "Rommark.Dev",
|
||||||
|
"url": "https://rommark.dev"
|
||||||
|
},
|
||||||
|
"creator": {
|
||||||
|
"@type": "Person",
|
||||||
|
"name": "Roman | RyzenAdvanced",
|
||||||
|
"url": "https://github.com/roman-ryzenadvanced"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"AI trading bot",
|
||||||
|
"cryptocurrency trading",
|
||||||
|
"crypto signals",
|
||||||
|
"trading automation",
|
||||||
|
"Bybit API",
|
||||||
|
"Mantle hackathon"
|
||||||
|
],
|
||||||
|
"featureList": [
|
||||||
|
"AI Signal Generation",
|
||||||
|
"News Sentiment Analysis",
|
||||||
|
"Technical Analysis Indicators",
|
||||||
|
"Backtesting Engine",
|
||||||
|
"Paper Trading Mode",
|
||||||
|
"Real-time Dashboard",
|
||||||
|
"Bybit Exchange Integration"
|
||||||
|
],
|
||||||
|
"screenshot": "https://github.com/roman-ryzenadvanced/mantle-ai-trader/raw/main/public/dashboard-screenshot.png",
|
||||||
|
"license": "https://opensource.org/licenses/MIT",
|
||||||
|
"codeRepository": "https://github.com/roman-ryzenadvanced/mantle-ai-trader",
|
||||||
|
"programmingLanguage": "TypeScript",
|
||||||
|
"runtimePlatform": "Node.js",
|
||||||
|
"isAccessibleForFree": true,
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function RootLayout({
|
export default function RootLayout({
|
||||||
@@ -42,6 +188,19 @@ export default function RootLayout({
|
|||||||
}>) {
|
}>) {
|
||||||
return (
|
return (
|
||||||
<html lang="en" suppressHydrationWarning>
|
<html lang="en" suppressHydrationWarning>
|
||||||
|
<head>
|
||||||
|
{/* JSON-LD Structured Data */}
|
||||||
|
<script
|
||||||
|
type="application/ld+json"
|
||||||
|
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
|
||||||
|
/>
|
||||||
|
{/* Additional SEO Meta Tags */}
|
||||||
|
<meta name="msvalidate.01" content="AI Trading Bot, Cryptocurrency, Mantle" />
|
||||||
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||||
|
<meta name="mobile-web-app-capable" content="yes" />
|
||||||
|
<link rel="author" href="https://rommark.dev" />
|
||||||
|
</head>
|
||||||
<body
|
<body
|
||||||
className={`${geistSans.variable} ${geistMono.variable} antialiased bg-background text-foreground`}
|
className={`${geistSans.variable} ${geistMono.variable} antialiased bg-background text-foreground`}
|
||||||
>
|
>
|
||||||
|
|||||||
59
src/app/sitemap.ts
Normal file
59
src/app/sitemap.ts
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
import { MetadataRoute } from 'next'
|
||||||
|
|
||||||
|
export default function sitemap(): MetadataRoute.Sitemap {
|
||||||
|
const baseUrl = 'https://github.com/roman-ryzenadvanced/mantle-ai-trader'
|
||||||
|
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
url: baseUrl,
|
||||||
|
lastModified: new Date(),
|
||||||
|
changeFrequency: 'daily',
|
||||||
|
priority: 1,
|
||||||
|
title: 'Mantle AI Trader - AI-Powered Crypto Trading Bot',
|
||||||
|
description: 'Advanced AI trading bot for cryptocurrency markets with news sentiment analysis, technical indicators, backtesting, and paper trading.',
|
||||||
|
images: ['/og-image.png'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: `${baseUrl}#features`,
|
||||||
|
lastModified: new Date(),
|
||||||
|
changeFrequency: 'weekly',
|
||||||
|
priority: 0.9,
|
||||||
|
title: 'Features - AI Signal Generation & Trading',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: `${baseUrl}#installation`,
|
||||||
|
lastModified: new Date(),
|
||||||
|
changeFrequency: 'monthly',
|
||||||
|
priority: 0.8,
|
||||||
|
title: 'Installation Guide',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: `${baseUrl}#api`,
|
||||||
|
lastModified: new Date(),
|
||||||
|
changeFrequency: 'weekly',
|
||||||
|
priority: 0.8,
|
||||||
|
title: 'API Documentation',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: `${baseUrl}#backtesting`,
|
||||||
|
lastModified: new Date(),
|
||||||
|
changeFrequency: 'weekly',
|
||||||
|
priority: 0.7,
|
||||||
|
title: 'Backtesting Engine',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: `${baseUrl}#demo-trading`,
|
||||||
|
lastModified: new Date(),
|
||||||
|
changeFrequency: 'weekly',
|
||||||
|
priority: 0.7,
|
||||||
|
title: 'Demo Paper Trading',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: `${baseUrl}#news`,
|
||||||
|
lastModified: new Date(),
|
||||||
|
changeFrequency: 'daily',
|
||||||
|
priority: 0.7,
|
||||||
|
title: 'News Aggregation & Sentiment',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user