# 期货投资策略说明 ## 通用信息 ### 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 订单管理 - 采用异步报单 - 订单完整性检查 - 成交状态跟踪 - 失败订单重试机制 ### 交易规则 - 采用异步报单模式 - 使用真实价格 - 考虑交易成本: - 手续费:按照不同品种设置 - 滑点:按照品种特性设置 - 保证金:按照交易所要求设置 ## 穿越均线趋势交易策略 ### 核心思路 该策略基于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 止损机制 - 固定止损: - 初始止损额度:**initial_loss_limit**(默认-4000) - 每日调整:**loss_increment_per_day**(默认200) - 均线止损: - 监控均线偏离度 - 突破重要均线立即止损 ##### 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 ### 交易规则 - 采用异步报单模式 - 使用真实价格 - 考虑交易成本: - 手续费:按照不同品种设置 - 滑点:按照品种特性设置 - 保证金:按照交易所要求设置