# 期货投资策略说明 ## 通用信息 ### API相关 1. 期货交易里的`order_target_value`里的`value`建议用保证金的金额,而不是实际价格 2. 期货交易里的`order_target_value`里的`side`建议用`long`或`short`,而不能为空 ## 沪深300期货蜘蛛网策略 ### 核心思路 该策略基于期货主力合约的持仓数据进行交易,通过监控主力多空持仓变化来判断市场方向。策略重点关注机构持仓变动,通过多空持仓增量的对比来进行交易决策。 1. [策略来源](https://www.joinquant.com/algorithm/index/edit?algorithmId=7dfbd7e00953112d8557fe677d18a600) 2. 策略名称:股指期货-简化版蜘蛛网策略 ### 主要特点 1. 基于持仓数据分析 2. 多空双向交易 3. 动态仓位管理 4. 适应性强(可用于多个期货品种) 5. 基于日频交易 ### 具体策略逻辑 #### 1. 交易品种 - 主要交易品种:**g.symbol_list**, 沪深300股指期货(IH) - 交易合约:主力合约 - 合约乘数:300 #### 2. 信号生成 ##### 2.1 数据获取 - 时间:每个交易日20:30计算信号 - 数据范围: 1. 获取所有可交易合约 2. 获取每个合约的持仓排名数据 3. 分别统计多空前20名会员的持仓变化 ##### 2.2 信号计算 - 核心逻辑:基于主力持仓变化判断市场方向 - 计算流程: 1. 汇总所有合约的多空持仓变化 2. 计算多头持仓增量(**long_hold_delta**):前20名多头持仓的总变化 3. 计算空头持仓增量(**short_hold_delta**):前20名空头持仓的总变化 4. 信号判断: - 开多条件:多头增仓(>0)且空头减仓(<0) - 开空条件:多头减仓(<0)且空头增仓(>0) - 其他情况:观望或平仓 #### 3. 仓位管理 ##### 3.1 开仓规则 - 基础计算: - 单位资金 = 总资金 / 可以交易品种数量 - 杠杆倍数:**g.times**(默认3倍) - 具体计算: ```python 手数 = int(总资金 / (合约价格 × 合约乘数 × 可以交易品种数量) × 杠杆倍数) ``` - 最小开仓:至少1手 ##### 3.2 持仓调整 - 多头持仓: - 持仓时遇到多头减仓或空头增仓则平仓 - 否则保持原有仓位 - 空头持仓: - 持仓时遇到多头增仓或空头减仓则平仓 - 否则保持原有仓位 #### 4. 交易执行 ##### 4.1 交易时间 - 信号计算:20:30 - 交易执行:次日09:32 ##### 4.2 交易顺序 1. 先执行平仓指令(平多、平空) 2. 再执行开仓指令(开多、开空) ### 交易规则 - 采用异步报单模式 - 使用真实价格 - 考虑交易成本: - 开仓手续费:0.0023% - 平仓手续费:0.0023% - 平今手续费:0.04% - 最低保证金:17% - 滑点值:4个价格单位 ## K线趋势交易策略 ### 核心思路 该策略基于K线实体与多条均线的关系进行交易,通过监控K线实体与均线的交叉、穿越情况以及均线之间的排列形态来判断趋势方向。策略同时结合止损和移仓换月机制来控制风险。 1. [策略来源](https://www.joinquant.com)/ [本地](Lib\future\TrendFalseChange_v002.py) 2. 策略名称:K线趋势交易策略 ### 主要特点 1. 多均线系统(5、10、20、30日均线) 2. K线形态分析 3. 完整的止损机制 4. 自动移仓换月 5. 支持日内和夜盘交易 ### 具体策略逻辑 #### 1. 交易品种 - 交易品种:商品期货和金融期货 - 夜盘品种:金属、能源、农产品等 - 日盘品种:股指、国债等 - 交易合约:主力合约 #### 2. 信号生成 ##### 2.1 趋势判断 - 均线系统: - MA5(5日均线) - MA10(10日均线) - MA20(20日均线) - MA30(30日均线) - 趋势判断条件: 1. 计算K线实体与各均线的位置关系 2. 统计均线交叉次数(**count_ma_crosses**函数) 3. 判断均线排列形态(**check_ma_relations**函数) ##### 2.2 开仓条件 - K线形态要求: 1. K线实体穿越均线(**check_shadow_cross**函数) 2. 影线比例不超过阈值(**shadow_body_ratio_threshold**,默认0.5) - 均线条件: 1. 连续多日保持同向趋势(**continuous_days**记录) 2. 均线间距合理,无过度发散 #### 3. 仓位管理 ##### 3.1 开仓规则 - 计算开仓数量: ```python 订单金额 = 总资产 × 单次开仓比例 开仓手数 = 订单金额 / (合约价格 × 合约乘数) ``` - 开仓限制: 1. 检查涨跌停限制 2. 考虑保证金要求 3. 检查流动性条件 ##### 3.2 持仓调整 - 移仓换月条件: 1. 主力合约更换时自动执行 2. 确保新旧合约可交易 3. 保持原有持仓方向 - 移仓流程: 1. 平掉旧合约 2. 开仓新合约 3. 更新交易记录 #### 4. 风险控制 ##### 4.1 止损机制 - 固定止损: - 初始止损额度:**initial_loss_limit**(默认-4000) - 每日调整:**loss_increment_per_day**(默认200) - 均线止损: - 监控均线偏离度 - 突破重要均线立即止损 ##### 4.2 特殊情况处理 - 涨跌停板: - 无法开仓时取消交易 - 无法平仓时持续尝试 - 移仓失败: - 记录失败历史(**g.change_fail_history**) - 保留原有持仓信息 #### 5. 交易执行 ##### 5.1 交易时间 - 日盘:09:30开始交易 - 夜盘:根据品种交易时间 - 收盘前15分钟停止开新仓 ##### 5.2 订单管理 - 采用异步报单 - 订单完整性检查 - 成交状态跟踪 - 失败订单重试机制 ### 交易规则 - 采用异步报单模式 - 使用真实价格 - 考虑交易成本: - 手续费:按照不同品种设置 - 滑点:按照品种特性设置 - 保证金:按照交易所要求设置 ## 多均线穿越突破策略 v001 ### 核心思路 该策略基于K线实体在同一天内穿越多条均线来识别建仓时机。策略同时结合止损和移仓换月机制来控制风险。 1. [策略来源](https://www.joinquant.com) 2. 策略名称:穿越均线趋势交易策略 ### 主要特点 1. 多均线系统(5、10、20、30日均线) 2. K线形态分析 3. 完整的止损机制 4. 自动移仓换月 5. 支持日内和夜盘交易 ### 具体策略逻辑 #### 1. 交易品种 - 交易品种:商品期货和金融期货 - 夜盘品种:金属、能源、农产品等 - 日盘品种:其他商品、股指期货等 - 交易合约:主力合约 #### 2. 信号生成 ##### 2.1 开仓条件 - 均线系统: - MA5(5日均线) - MA10(10日均线) - MA20(20日均线) - MA30(30日均线) - 均线数据更新: - 均线非当天数据更新:这部分数据是在开盘的时候就可以获得日线级别的数据,然后保存在内存中一天的任何时候都可以使用。一天执行一次 - 均线当天数据更新:这部分数据是在当天交易过程中获得的分钟级别的数据,然后将最终数据暂时定义为当天收盘价拼接到内存中。每30分钟执行一次。 - K线形态要求: - 上穿: - 开盘价小于等于5日均线,收盘价大于20日或30日均线 - 最低价小于5日均线,收盘价大于30日均线 - 开盘价小于等于10日均线,收盘价大于30日均线 - 下穿: - 开盘价大于等于5日均线,收盘价小于20日或30日均线 - 最高价大于5日均线,收盘价小于30日均线 - 开盘价大于等于10日均线,收盘价小于30日均线 - 最后开仓点: - 多仓: - 满足上穿条件 - 针对最后一根要穿越的均线,盘中(14:30之前),最新价格高于均线价格0.5%,则开仓 - 14:30之后,针对最后一根要穿越的均线,最新价格高于均线0.2%,则开仓 - 空仓: - 满足下穿条件 - 针对最后一根要穿越的均线,盘中(14:30之前),最新价格低于均线价格0.5%,则开仓 - 14:30之后,针对最后一根要穿越的均线,最新价格低于均线0.2%,则开仓 #### 3. 仓位管理 ##### 3.1 开仓规则 - 计算开仓数量: ```python 订单金额 = 总资产 × 单次开仓比例 开仓手数 = 订单金额 / (合约价格 × 合约乘数) ``` - 开仓限制: 1. 检查涨跌停限制 2. 考虑保证金要求 3. 检查流动性条件 ##### 3.2 持仓调整 - 移仓换月条件: 1. 主力合约更换时自动执行 2. 确保新旧合约可交易 3. 保持原有持仓方向 - 移仓流程: 1. 平掉旧合约 2. 开仓新合约 3. 更新交易记录 #### 4. 风险控制 ##### 4.1 止损机制 - **跟踪均线止损**: - **多仓**:跟踪价格最高的均线(MA5、MA10、MA20、MA30中的最高值) - **空仓**:跟踪价格最低的均线(MA5、MA10、MA20、MA30中的最低值) - **跳空检查**:当天开盘价与前一交易日收盘价差异超过0.2%即为跳空 - **时间分类**:14:55:00为盘尾,其他时间为盘中 - **动态止损比例**:根据收益水平、跳空情况、交易时段确定0.25%-2%的止损比例 ##### 4.1.1 详细止损规则 | 收益水平 | 跳空情况 | 时段 | 止损比例 | 说明 | |---------|---------|------|----------|------| | < 5000 | 无跳空 | 盘中 | 1.0% | 基础止损 | | < 5000 | 有跳空 | 盘中 | 0.5% | 跳空风险较大,收紧止损 | | 5000-15000 | 不限 | 盘中 | 1.0% | 中等收益,标准止损 | | ≥ 15000 | 不限 | 盘中 | 2.0% | 高收益,放宽止损 | | < 5000 | 有跳空 | 盘尾 | 0.25% | 最严格止损 | | < 5000 | 无跳空 | 盘尾 | 0.5% | 盘尾收紧止损 | | 5000-15000 | 不限 | 盘尾 | 0.5% | 中等收益盘尾止损 | | ≥ 15000 | 不限 | 盘尾 | 1.0% | 高收益盘尾止损 | ##### 4.1.2 配置参数 ```python g.gap_ratio_threshold = 0.002 # 跳空比例:0.2% g.market_close_times = ["14:55:00"] # 盘尾时间 g.profit_thresholds = [5000, 15000] # 价格分区 g.stop_ratios = [0.0025, 0.005, 0.01, 0.02] # 止损比例 ``` ##### 4.2 特殊情况处理 - 涨跌停板: - 无法开仓时取消交易 - 无法平仓时持续尝试 - 移仓失败: - 记录失败历史(**g.change_fail_history**) - 保留原有持仓信息 #### 5. 交易执行 ##### 5.1 交易时间 - 日盘:09:00开始交易 - 夜盘:21:00开始交易 - 14:55最后一次检查是否开新仓 ##### 5.2 核心交易步骤 1. 获取所有可交易品种(分白天和晚上) 2. 获取所有可交易品种今天之前所需的数据,并保存到内存中 3. 检查均线交叉数量,过滤掉交叉过多的品种(一天执行一次) 4. 获取所有可交易品种今天所需的分钟数据作为今天数据,和2中的数据合并出最新的均线数据,并保存到内存中 5. 根据交易品种的今天数据和均线数据,判断是否出现了上穿或者下穿的情况 6. 针对那些有上穿和下穿的情况检查是否满足开仓条件 7. 针对满足开仓条件的标的,计算购买的金额,并发起交易请求 8. 针对已经持仓的标的,检查是否换月移仓 9. 针对已经持仓的标的,检查是否止损或止盈 ##### 5.3 均线交叉过滤机制 - **目的**:过滤掉均线频繁交叉的品种,避免在震荡行情中开仓 - **检查参数**: - `g.max_ma_crosses`:最大允许的均线交叉数量(默认3次) - `g.ma_cross_check_days`:检查均线交叉的天数(默认5天) - **检查逻辑**: - 计算过去5天内MA5、MA10、MA20、MA30之间的交叉次数 - 统计所有均线对(MA5-MA10、MA5-MA20、MA5-MA30、MA10-MA20、MA10-MA30、MA20-MA30)的交叉 - 如果总交叉数超过最大允许值,该品种当天不参与交易 - **执行时机**:每天21:05和09:05各执行一次 ##### 5.4 不同时间点任务分配 - 由具体时间触发的 - 21:05:任务1, 2, 3, 4, 5, 6, 9 - 21:35:任务4, 5, 6, 9 - 22:05:任务4, 5, 6, 9 - 22:35:任务4, 5, 6, 9 - 09:05:任务1, 2, 3, 4, 5, 6, 9 - 09:35:任务4, 5, 6, 9 - 10:05:任务4, 5, 6, 9 - 10:35:任务4, 5, 6, 9 - 11:05:任务4, 5, 6, 9 - 11:25:任务4, 5, 6, 9 - 13:35:任务4, 5, 6, 9 - 14:05:任务4, 5, 6, 9 - 14:35:任务4, 5, 6, 8, 9 - 14:55:任务4, 5, 6, 8, 9 - 由具体时间触发的 - 任务7:任务6满足条件要开仓的时候才会执行任务7 ### 交易规则 - 采用异步报单模式 - 使用真实价格 - 考虑交易成本: - 手续费:按照不同品种设置 - 滑点:按照品种特性设置 - 保证金:按照交易所要求设置 ## 烛台影线形态反向交易策略 v001 ### 核心思路 该策略基于烛台形态检测,专门识别带有明显影线的K线形态,并按照影线的相反方向进行交易。这是一种基于"结论1"逻辑的反向交易策略,即认为影线代表市场的假突破,应该按相反方向进行交易。 1. [策略来源](https://www.joinquant.com)/ [本地](Lib\future\CandlestickHatchReverseStrategy_v001.py) 2. 策略名称:烛台影线形态反向交易策略 3. 实现理念:基于烛台形态的反向交易思路 ### 主要特点 1. 烛台形态识别(上影线/下影线) 2. 反向交易逻辑(影线相反方向) 3. 固定止损保护(可配置) 4. 动态追踪止盈机制 5. 自动合约换月功能 6. 支持日内和夜盘交易 ### 具体策略逻辑 #### 1. 交易品种 - 交易品种:流动性较好的商品期货和金融期货 - 默认关注品种:RM、RB、AU、CU、M、Y、CF、SR - 夜盘品种:金属、能源、农产品等 - 日盘品种:其他商品、股指期货等 - 交易合约:主力合约 #### 2. 形态识别 ##### 2.1 烛台形态条件 - 实体长度阈值:使用历史30天平均实体长度作为基准 - 影线与实体比率:影线长度 >= 1.2 × 实体长度(**g.hatch_to_body_ratio**) - 相反影线限制:相反方向影线 < 0.5 × 实体长度(**g.opposite_hatch_ratio**) ##### 2.2 形态类型 - **上影线形态**: - 上影线长度 >= 1.2 × 实体长度 - 下影线长度 < 0.5 × 实体长度 - 交易方向:做空(反向交易) - **下影线形态**: - 下影线长度 >= 1.2 × 实体长度 - 上影线长度 < 0.5 × 实体长度 - 交易方向:做多(反向交易) #### 3. 仓位管理 ##### 3.1 开仓规则 - 计算开仓数量: ```python 单手保证金 = 当前价格 × 合约乘数 × 保证金比率 可用资金 = 账户资金 × 资金使用比例(80%) 开仓手数 = min(最大保证金限制 / 单手保证金, 可用资金 / 单手保证金) ``` - 开仓限制: 1. 检查涨跌停限制 2. 考虑保证金要求(**g.max_margin_per_position = 20000**) 3. 检查流动性条件 4. 防止同品种重复开仓 ##### 3.2 持仓调整 - 移仓换月条件: 1. 主力合约更换时自动执行 2. 确保新旧合约可交易 3. 保持原有持仓方向和止损止盈记录 - 移仓流程: 1. 平掉旧合约 2. 开仓新合约 3. 更新交易记录 #### 4. 风险控制 ##### 4.1 止损机制 - **固定止损**: - 固定止损率:1%(**g.fixed_stop_loss_rate = 0.01**) - 当亏损达到1%时立即平仓 - 适用于所有交易,无条件执行 ##### 4.2 动态追踪止盈 - **分级追踪止盈**:根据已实现的最大利润设置不同的追踪止损比率 - 若最大利润 ≤ 5%:使用1%追踪止损(**g.trailing_stop_rates[0] = 0.01**) - 若最大利润在5%-10%之间:使用2%追踪止损(**g.trailing_stop_rates[1] = 0.02**) - 若最大利润 > 10%:使用3%追踪止损(**g.trailing_stop_rates[2] = 0.03**) - **追踪机制**: - 实时记录持仓的最大利润 - 当利润回撤超过对应阈值时触发止盈 - 例如:最大利润8%,当前利润5%,回撤3% > 2%,触发止盈 ##### 4.2.1 详细止盈规则 | 最大利润水平 | 追踪止损率 | 触发条件 | 说明 | |-------------|----------|---------|------| | ≤ 5% | 1% | 利润回撤 ≥ 1% | 小额利润,保守止盈 | | 5%-10% | 2% | 利润回撤 ≥ 2% | 中等利润,适度止盈 | | > 10% | 3% | 利润回撤 ≥ 3% | 高额利润,宽松止盈 | ##### 4.3 配置参数 ```python g.fixed_stop_loss_rate = 0.01 # 固定止损比率(1%) g.trailing_stop_thresholds = [0.05, 0.10] # 动态追踪止损触发条件(5%, 10%) g.trailing_stop_rates = [0.01, 0.02, 0.03] # 动态追踪止损比率(1%, 2%, 3%) g.hatch_to_body_ratio = 1.2 # 影线与实体长度比率阈值 g.opposite_hatch_ratio = 0.5 # 相反方向影线与实体长度比率阈值 ``` #### 5. 交易执行 ##### 5.1 交易时间 - 日盘:09:05开始交易 - 夜盘:21:05开始交易 - 14:55最后一次检查 ##### 5.2 核心交易步骤 1. **任务1**: 获取所有可交易品种(分白天和晚上) 2. **任务2**: 获取历史数据并计算实体长度阈值(基于30天历史数据) 3. **任务3**: 获取今日分钟数据并聚合为日数据 4. **任务4**: 检测烛台影线形态 5. **任务5**: 检查开仓条件(价格合理性、流动性等) 6. **任务6**: 执行交易(按影线相反方向开仓) 7. **任务7**: 检查止损止盈 8. **任务8**: 检查换月移仓 ##### 5.3 时间点任务分配 - **夜盘开始**: - 21:05:任务1, 2, 3, 4, 5, 6, 7(完整流程) - 21:35, 22:05, 22:35:任务3, 4, 5, 6, 7(常规检查) - **日盘开始**: - 09:05:任务1, 2, 3, 4, 5, 6, 7(完整流程) - 09:35, 10:05, 10:35, 11:05, 11:25, 13:35, 14:05:任务3, 4, 5, 6, 7(常规检查) - **收盘前**: - 14:35, 14:55:任务3, 4, 5, 6, 7, 8(包含移仓检查) #### 6. 策略特色 ##### 6.1 反向交易逻辑 - **上影线 → 做空**:认为上影线表示上方压力强劲,价格可能下跌 - **下影线 → 做多**:认为下影线表示下方支撑强劲,价格可能上涨 - 基于"影线代表假突破"的交易理念 ##### 6.2 智能风控系统 - 固定止损保护本金 - 分级追踪止盈锁定利润 - 根据盈利水平动态调整止盈策略 - 自动合约换月避免交割风险 ##### 6.3 品种选择策略 - 重点关注流动性好的主流品种 - 支持夜盘和日盘品种 - 避免同品种重复开仓 - 动态获取主力合约 ### 交易规则 - 采用异步报单模式 - 使用真实价格 - 考虑交易成本: - 开仓手续费:0.0023% - 平仓手续费:0.0023% - 平今手续费:0.23% - 滑点:2个价格单位 - 保证金比例:按品种设置(4%-22%不等) - 最大单品种保证金:20000元 ## 期货左侧交易策略(带网格和对冲)v001 `FutureLeftSide_v001.py` 将仓位拆分为底仓左侧多头、网格多头和空头对冲三大组件,所有任务在执行前会优先尝试移仓换月,确保逻辑仅在可交易时间与主力合约下运行。 ### 底仓左侧多头 - **开仓条件** - 达到品种配置的开盘时间(`is_trading_time_reached`)。 - 遍历 `g.base_position_grid` 未成交档位:档位价 ≥ 当前价立即市价买入;档位价 < 当前价仅保留价格最高的两个档位挂限价单。 - 仅对尚未记录的档位下单,避免重复委托。 - **止盈 / 止损条件** - 市价 ≥ `g.base_position_exit_price[symbol]` 时一次性平掉底仓多头。 - 策略未设置固定止损,风险由网格和对冲组件共同覆盖。 - **检查时间点** - 开仓检查:09:05(日盘)、09:35(日盘金融类标的)、21:05(夜盘)。 - 止盈检查:09:35、10:05、10:35、11:05、13:35、14:05、14:35、14:55、21:05、21:35、22:05。 ### 网格多头(可选) - **开仓条件** - 达到交易时间且当前价低于 `start_price`。 - 计算应触发的网格层级:目标价 ≥ 当前价使用市价单,其余只选择最高两个目标价挂限价单。 - 成交后在 `g.grid_buy_levels` 中标记目标价,防止重复下单。 - **止盈 / 止损条件** - 市价 ≥ `target_price + exit_grid_size` 时对应仓位全部卖出并解除标记。 - 未额外设定止损。 - **检查时间点** - 开仓检查:09:05(日盘)、09:35(日盘金融类标的)、21:05(夜盘)。 - 止盈检查:与底仓止盈相同的全部时间点。 ### 空头对冲(可选) - **开仓条件** - 当天存在已成交的底仓档位(依据订单状态与成交量确认)。 - 对每个符合条件的档位按档位价挂空单,数量等于底仓手数,仅首次成功时记录。 - **止盈 / 止损条件** - 固定止损:收益率 ≤ -1% 时立即平仓。 - 盈利回撤止盈:当前收益距离历史最大收益回撤 ≥ 0.3% 时平仓。 - 成本区域止盈:达到盈利阶段后,收益回落至 ±2% 区间内触发。 - **检查时间点** - 开仓检查:09:05(日盘)、09:35(日盘金融类标的)、21:05(夜盘) 以及全部止盈检查时间点(用于补挂漏单)。 - 止盈检查:与网格、底仓相同的全部时间点。