mirror of
https://github.com/Xe138/AI-Trader.git
synced 2026-04-02 01:27:24 -04:00
Compare commits
8 Commits
v0.2.0-alp
...
v0.2.0-alp
| Author | SHA1 | Date | |
|---|---|---|---|
| 8142f38ab9 | |||
| 595a659fe7 | |||
| a4bc4fd0de | |||
| 4666e09385 | |||
| 0c58baed42 | |||
| 2d1c356199 | |||
| ffa158224d | |||
| 6825a60b20 |
14
.env.example
14
.env.example
@@ -6,20 +6,26 @@
|
||||
|
||||
# AI Model API Configuration
|
||||
OPENAI_API_BASE=https://your-openai-proxy.com/v1
|
||||
OPENAI_API_KEY=your_openai_key_here
|
||||
OPENAI_API_KEY=your_openai_key_here # https://platform.openai.com/api-keys
|
||||
|
||||
# Data Source Configuration
|
||||
ALPHAADVANTAGE_API_KEY=your_alphavantage_key_here
|
||||
JINA_API_KEY=your_jina_key_here
|
||||
ALPHAADVANTAGE_API_KEY=your_alphavantage_key_here # https://www.alphavantage.co/support/#api-key
|
||||
JINA_API_KEY=your_jina_key_here # https://jina.ai/
|
||||
|
||||
# System Configuration (Docker default paths)
|
||||
RUNTIME_ENV_PATH=/app/data/runtime_env.json
|
||||
|
||||
# MCP Service Ports (defaults shown)
|
||||
# MCP Service Host Ports (exposed on host machine)
|
||||
# Container always uses 8000-8003 internally
|
||||
# Change these if you need different ports on your host
|
||||
MATH_HTTP_PORT=8000
|
||||
SEARCH_HTTP_PORT=8001
|
||||
TRADE_HTTP_PORT=8002
|
||||
GETPRICE_HTTP_PORT=8003
|
||||
|
||||
# Web Interface Host Port (exposed on host machine)
|
||||
# Container always uses 8888 internally
|
||||
WEB_HTTP_PORT=8888
|
||||
|
||||
# Agent Configuration
|
||||
AGENT_MAX_STEP=30
|
||||
|
||||
@@ -15,6 +15,12 @@ WORKDIR /app
|
||||
# Copy application code
|
||||
COPY . .
|
||||
|
||||
# Copy data scripts to separate directory (volume mount won't overlay these)
|
||||
RUN mkdir -p /app/scripts && \
|
||||
cp data/get_daily_price.py /app/scripts/ && \
|
||||
cp data/get_interdaily_price.py /app/scripts/ && \
|
||||
cp data/merge_jsonl.py /app/scripts/
|
||||
|
||||
# Create necessary directories
|
||||
RUN mkdir -p data logs data/agent_data
|
||||
|
||||
|
||||
12
README.md
12
README.md
@@ -218,7 +218,7 @@ AI-Trader Bench/
|
||||
|
||||
```bash
|
||||
# 1. Clone project
|
||||
git clone https://github.com/HKUDS/AI-Trader.git
|
||||
git clone https://github.com/Xe138/AI-Trader.git
|
||||
cd AI-Trader
|
||||
|
||||
# 2. Install dependencies
|
||||
@@ -331,7 +331,7 @@ The easiest way to run AI-Trader is with Docker Compose:
|
||||
|
||||
```bash
|
||||
# 1. Clone and setup
|
||||
git clone https://github.com/HKUDS/AI-Trader.git
|
||||
git clone https://github.com/Xe138/AI-Trader.git
|
||||
cd AI-Trader
|
||||
|
||||
# 2. Configure environment
|
||||
@@ -590,8 +590,8 @@ We welcome contributions of all kinds! Especially AI trading strategies and agen
|
||||
|
||||
## 📞 Support & Community
|
||||
|
||||
- **💬 Discussions**: [GitHub Discussions](https://github.com/HKUDS/AI-Trader/discussions)
|
||||
- **🐛 Issues**: [GitHub Issues](https://github.com/HKUDS/AI-Trader/issues)
|
||||
- **💬 Discussions**: [GitHub Discussions](https://github.com/Xe138/AI-Trader/discussions)
|
||||
- **🐛 Issues**: [GitHub Issues](https://github.com/Xe138/AI-Trader/issues)
|
||||
|
||||
## 📄 License
|
||||
|
||||
@@ -615,8 +615,8 @@ The materials provided by the AI-Trader project are for research purposes only a
|
||||
|
||||
**🌟 If this project helps you, please give us a Star!**
|
||||
|
||||
[](https://github.com/HKUDS/AI-Trader)
|
||||
[](https://github.com/HKUDS/AI-Trader)
|
||||
[](https://github.com/Xe138/AI-Trader)
|
||||
[](https://github.com/Xe138/AI-Trader)
|
||||
|
||||
**🤖 Experience AI's full potential in financial markets through complete autonomous decision-making!**
|
||||
**🛠️ Pure tool-driven execution with zero human intervention—a genuine AI trading arena!** 🚀
|
||||
|
||||
@@ -26,10 +26,10 @@ def get_daily_price(SYMBOL: str):
|
||||
url = f'https://www.alphavantage.co/query?function={FUNCTION}&symbol={SYMBOL}&outputsize={OUTPUTSIZE}&apikey={APIKEY}'
|
||||
r = requests.get(url)
|
||||
data = r.json()
|
||||
print(data)
|
||||
if data.get('Note') is not None or data.get('Information') is not None:
|
||||
print(f"Error")
|
||||
print(f"⚠️ {SYMBOL}: API rate limit or error - {data.get('Note') or data.get('Information')}")
|
||||
return
|
||||
print(f"✓ Fetched {SYMBOL}")
|
||||
with open(f'./daily_prices_{SYMBOL}.json', 'w', encoding='utf-8') as f:
|
||||
json.dump(data, f, ensure_ascii=False, indent=4)
|
||||
if SYMBOL == "QQQ":
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
services:
|
||||
ai-trader:
|
||||
build: .
|
||||
image: ghcr.io/xe138/ai-trader:latest
|
||||
# Uncomment to build locally instead of pulling:
|
||||
# build: .
|
||||
container_name: ai-trader-app
|
||||
volumes:
|
||||
- ./data:/app/data
|
||||
@@ -17,18 +19,19 @@ services:
|
||||
# System Configuration
|
||||
- RUNTIME_ENV_PATH=/app/data/runtime_env.json
|
||||
|
||||
# MCP Service Ports
|
||||
- MATH_HTTP_PORT=${MATH_HTTP_PORT:-8000}
|
||||
- SEARCH_HTTP_PORT=${SEARCH_HTTP_PORT:-8001}
|
||||
- TRADE_HTTP_PORT=${TRADE_HTTP_PORT:-8002}
|
||||
- GETPRICE_HTTP_PORT=${GETPRICE_HTTP_PORT:-8003}
|
||||
# MCP Service Ports (fixed internally)
|
||||
- MATH_HTTP_PORT=8000
|
||||
- SEARCH_HTTP_PORT=8001
|
||||
- TRADE_HTTP_PORT=8002
|
||||
- GETPRICE_HTTP_PORT=8003
|
||||
|
||||
# Agent Configuration
|
||||
- AGENT_MAX_STEP=${AGENT_MAX_STEP:-30}
|
||||
ports:
|
||||
- "8000:8000"
|
||||
- "8001:8001"
|
||||
- "8002:8002"
|
||||
- "8003:8003"
|
||||
- "8888:8888"
|
||||
restart: unless-stopped
|
||||
# Format: "HOST:CONTAINER" - container ports are fixed, host ports configurable via .env
|
||||
- "${MATH_HTTP_PORT:-8000}:8000"
|
||||
- "${SEARCH_HTTP_PORT:-8001}:8001"
|
||||
- "${TRADE_HTTP_PORT:-8002}:8002"
|
||||
- "${GETPRICE_HTTP_PORT:-8003}:8003"
|
||||
- "${WEB_HTTP_PORT:-8888}:8888"
|
||||
restart: on-failure:3 # Restart max 3 times on failure, prevents endless loops
|
||||
|
||||
@@ -3,11 +3,46 @@ set -e # Exit on any error
|
||||
|
||||
echo "🚀 Starting AI-Trader..."
|
||||
|
||||
# Validate required environment variables
|
||||
echo "🔍 Validating environment variables..."
|
||||
MISSING_VARS=()
|
||||
|
||||
if [ -z "$OPENAI_API_KEY" ]; then
|
||||
MISSING_VARS+=("OPENAI_API_KEY")
|
||||
fi
|
||||
|
||||
if [ -z "$ALPHAADVANTAGE_API_KEY" ]; then
|
||||
MISSING_VARS+=("ALPHAADVANTAGE_API_KEY")
|
||||
fi
|
||||
|
||||
if [ -z "$JINA_API_KEY" ]; then
|
||||
MISSING_VARS+=("JINA_API_KEY")
|
||||
fi
|
||||
|
||||
if [ ${#MISSING_VARS[@]} -gt 0 ]; then
|
||||
echo ""
|
||||
echo "❌ ERROR: Missing required environment variables:"
|
||||
for var in "${MISSING_VARS[@]}"; do
|
||||
echo " - $var"
|
||||
done
|
||||
echo ""
|
||||
echo "Please set these variables in your .env file:"
|
||||
echo " 1. Copy .env.example to .env"
|
||||
echo " 2. Edit .env and add your API keys"
|
||||
echo " 3. Restart the container"
|
||||
echo ""
|
||||
echo "See docs/DOCKER.md for more information."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ Environment variables validated"
|
||||
|
||||
# Step 1: Data preparation
|
||||
echo "📊 Fetching and merging price data..."
|
||||
# Run scripts from /app/scripts but output to /app/data
|
||||
cd /app/data
|
||||
python get_daily_price.py
|
||||
python merge_jsonl.py
|
||||
python /app/scripts/get_daily_price.py
|
||||
python /app/scripts/merge_jsonl.py
|
||||
cd /app
|
||||
|
||||
# Step 2: Start MCP services in background
|
||||
|
||||
Reference in New Issue
Block a user