啊
This commit is contained in:
parent
ca52f20c85
commit
c8066cf432
@ -26,11 +26,11 @@ RUN pip install --no-cache-dir -r requirements.txt
|
|||||||
# 复制项目文件
|
# 复制项目文件
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
# 创建数据目录
|
# 创建必要的目录
|
||||||
RUN mkdir -p /app/data
|
RUN mkdir -p /app/data /app/logs /app/config
|
||||||
|
|
||||||
# 设置权限
|
# 设置权限
|
||||||
RUN chmod +x start_web.py
|
RUN chmod +x start_web.py scripts/init_container.sh
|
||||||
|
|
||||||
# 暴露端口
|
# 暴露端口
|
||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
@ -39,5 +39,8 @@ EXPOSE 8080
|
|||||||
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
|
||||||
CMD curl -f http://localhost:8080/api/stats || exit 1
|
CMD curl -f http://localhost:8080/api/stats || exit 1
|
||||||
|
|
||||||
|
# 设置入口点
|
||||||
|
ENTRYPOINT ["/app/scripts/init_container.sh"]
|
||||||
|
|
||||||
# 启动命令
|
# 启动命令
|
||||||
CMD ["python", "start_web.py"]
|
CMD ["python", "start_web.py"]
|
||||||
@ -34,7 +34,8 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- PYTHONPATH=/app
|
- PYTHONPATH=/app
|
||||||
# 运行数据采集脚本
|
# 运行数据采集脚本
|
||||||
command: python scripts/data_collector.py
|
entrypoint: ["/app/scripts/init_container.sh"]
|
||||||
|
command: ["python", "scripts/data_collector.py"]
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
- trading-web
|
- trading-web
|
||||||
|
|||||||
@ -35,16 +35,18 @@ def run_strategy():
|
|||||||
data_fetcher = ADataFetcher()
|
data_fetcher = ADataFetcher()
|
||||||
|
|
||||||
# 初始化通知管理器
|
# 初始化通知管理器
|
||||||
notification_manager = NotificationManager(config)
|
notification_config = config.get('notification', {})
|
||||||
|
notification_manager = NotificationManager(notification_config)
|
||||||
|
|
||||||
# 初始化数据库管理器
|
# 初始化数据库管理器
|
||||||
db_manager = DatabaseManager()
|
db_manager = DatabaseManager()
|
||||||
|
|
||||||
# 初始化策略
|
# 初始化策略
|
||||||
|
strategy_config = config.get('strategy', {}).get('kline_pattern', {})
|
||||||
strategy = KLinePatternStrategy(
|
strategy = KLinePatternStrategy(
|
||||||
data_fetcher=data_fetcher,
|
data_fetcher=data_fetcher,
|
||||||
notification_manager=notification_manager,
|
notification_manager=notification_manager,
|
||||||
config=config,
|
config=strategy_config,
|
||||||
db_manager=db_manager
|
db_manager=db_manager
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
125
scripts/init_container.sh
Normal file
125
scripts/init_container.sh
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 容器初始化脚本
|
||||||
|
# 确保配置文件存在
|
||||||
|
|
||||||
|
CONFIG_DIR="/app/config"
|
||||||
|
CONFIG_FILE="$CONFIG_DIR/config.yaml"
|
||||||
|
|
||||||
|
# 创建配置目录(如果不存在)
|
||||||
|
mkdir -p $CONFIG_DIR
|
||||||
|
|
||||||
|
# 如果配置文件不存在,创建默认配置文件
|
||||||
|
if [ ! -f "$CONFIG_FILE" ]; then
|
||||||
|
echo "创建默认配置文件: $CONFIG_FILE"
|
||||||
|
cat > "$CONFIG_FILE" << 'EOF'
|
||||||
|
# A股量化交易配置文件
|
||||||
|
trading:
|
||||||
|
# 交易时间配置
|
||||||
|
trading_hours:
|
||||||
|
start: "09:30:00"
|
||||||
|
end: "15:00:00"
|
||||||
|
lunch_break_start: "11:30:00"
|
||||||
|
lunch_break_end: "13:00:00"
|
||||||
|
|
||||||
|
# 股票池配置
|
||||||
|
stock_pool:
|
||||||
|
# 默认关注的指数成分股
|
||||||
|
index_codes: ["000001.SZ", "000300.SZ", "000905.SZ"] # 上证指数、沪深300、中证500
|
||||||
|
# 排除的股票代码
|
||||||
|
exclude_codes: []
|
||||||
|
|
||||||
|
# 风险控制
|
||||||
|
risk_management:
|
||||||
|
max_position_per_stock: 0.05 # 单股最大仓位比例
|
||||||
|
max_total_position: 0.9 # 最大总仓位比例
|
||||||
|
stop_loss_ratio: 0.05 # 止损比例
|
||||||
|
take_profit_ratio: 0.15 # 止盈比例
|
||||||
|
|
||||||
|
# 数据配置
|
||||||
|
data:
|
||||||
|
# 数据源配置
|
||||||
|
sources:
|
||||||
|
primary: "adata"
|
||||||
|
|
||||||
|
# 数据更新频率
|
||||||
|
update_frequency:
|
||||||
|
realtime: "1min" # 实时数据更新频率
|
||||||
|
daily: "after_close" # 日线数据更新时机
|
||||||
|
|
||||||
|
# 数据存储
|
||||||
|
storage:
|
||||||
|
path: "data/"
|
||||||
|
format: "parquet" # 数据存储格式
|
||||||
|
|
||||||
|
# 策略配置
|
||||||
|
strategy:
|
||||||
|
# 技术指标参数
|
||||||
|
indicators:
|
||||||
|
ma_periods: [5, 10, 20, 50] # 移动平均线周期
|
||||||
|
rsi_period: 14 # RSI周期
|
||||||
|
macd_params: [12, 26, 9] # MACD参数
|
||||||
|
|
||||||
|
# 选股条件
|
||||||
|
selection_criteria:
|
||||||
|
min_market_cap: 1000000000 # 最小市值(元)
|
||||||
|
max_pe_ratio: 30 # 最大市盈率
|
||||||
|
min_volume_ratio: 1.5 # 最小成交量比率
|
||||||
|
|
||||||
|
# K线形态策略配置
|
||||||
|
kline_pattern:
|
||||||
|
enabled: true # 是否启用K线形态策略
|
||||||
|
min_entity_ratio: 0.55 # 前两根阳线实体最小占振幅比例(55%)
|
||||||
|
final_yang_min_ratio: 0.40 # 最后阳线实体最小占振幅比例(40%)
|
||||||
|
timeframes: ["1h", "daily", "weekly"] # 支持的时间周期
|
||||||
|
scan_stocks_count: 100 # Docker环境默认扫描股票数量
|
||||||
|
analysis_days: 60 # 分析的历史天数
|
||||||
|
|
||||||
|
# 回踩监控配置
|
||||||
|
pullback_tolerance: 0.02 # 回踩容忍度(2%),价格接近阴线最高点的阈值
|
||||||
|
monitor_days: 30 # 监控回踩的天数(信号触发后30天内监控)
|
||||||
|
|
||||||
|
# 监控配置
|
||||||
|
monitor:
|
||||||
|
# 实时监控
|
||||||
|
realtime:
|
||||||
|
enabled: true
|
||||||
|
refresh_interval: 60 # 刷新间隔(秒)
|
||||||
|
|
||||||
|
# 报警配置
|
||||||
|
alerts:
|
||||||
|
price_change_threshold: 0.05 # 价格变动报警阈值
|
||||||
|
volume_spike_threshold: 3.0 # 成交量异常报警阈值
|
||||||
|
|
||||||
|
# 日志配置
|
||||||
|
logging:
|
||||||
|
level: "INFO"
|
||||||
|
format: "{time:YYYY-MM-DD HH:mm:ss} | {level} | {name} | {message}"
|
||||||
|
rotation: "1 day"
|
||||||
|
retention: "30 days"
|
||||||
|
file_path: "logs/trading.log"
|
||||||
|
|
||||||
|
# 通知配置
|
||||||
|
notification:
|
||||||
|
# 钉钉机器人配置
|
||||||
|
dingtalk:
|
||||||
|
enabled: false # Docker环境默认关闭通知
|
||||||
|
webhook_url: "" # 钉钉机器人webhook地址
|
||||||
|
secret: "" # 加签密钥
|
||||||
|
at_all: false # 是否@所有人
|
||||||
|
at_mobiles: [] # @指定手机号列表
|
||||||
|
|
||||||
|
# 其他通知方式
|
||||||
|
email:
|
||||||
|
enabled: false # 邮件通知(预留)
|
||||||
|
|
||||||
|
wechat:
|
||||||
|
enabled: false # 微信通知(预留)
|
||||||
|
EOF
|
||||||
|
echo "默认配置文件已创建"
|
||||||
|
else
|
||||||
|
echo "配置文件已存在: $CONFIG_FILE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 执行传入的命令
|
||||||
|
exec "$@"
|
||||||
Loading…
Reference in New Issue
Block a user