用途:这是一个面向 OpenAlgo 的算法交易执行专家知识库,用于构建生产级算法交易策略。每个策略是单个 Python 文件,通过 CLI 参数(--mode backtest|live)或环境变量(MODE=...)在回测模式(VectorBT)与实盘执行模式(OpenAlgo SDK + WebSocket)之间切换,策略也可上传至 OpenAlgo 自托管的 /python 策略主机。
主要能力:同一 signals(df) 函数同时服务 VectorBT 回测与实盘事件循环,风险阈值和成本假设在两侧一致;经纪商侧全部走 OpenAlgo,数据用 client.history() 与 WebSocket,下单用 client.placeorder()/placesmartorder()/optionsmultiorder(),实盘与沙盒由 OpenAlgo UI 分析器开关决定。指标库可选 openalgo.ta(默认)或 talib,特殊指标(Supertrend、Donchian、Ichimoku、HMA、KAMA)始终来自 openalgo。支持三种执行类型:eoc(收盘价 MARKET)、limit(实时挂 LIMIT)、stop(经纪商侧 SL-M 触发)。回测内置真实成本与滑点。
必要用法与要点:实盘采用双线程模型(信号轮询线程 + WS 回调线程),WS 回调不直接下单而是派发工作线程;K 线收盘逻辑用 iloc[-2] 而非 iloc[-1];风险平仓用 client.placesmartorder(position_size=0);多腿期权通过 client.optionsmultiorder() 入场、BUY 腿优先;期权下单前先 client.quotes() 取现货报价。
限制与避免项:不要用 asyncio(SDK 是同步的,用 threading);不要在实时数据上使用 df.iloc[-1];不要用 client.history(start_date=end_date);不要在 WS 回调中直接下平仓单;自托管时不要硬编码 exchange="NSE";不要用 fees=0、slippage=0 回测;轮询 client.get_ltp() 不要快于 0.5 秒。以上具体实施细节以资料所列规则文件与 OpenAlgo 仓库文档为准。