| | |
| | | import java.math.BigDecimal; |
| | | |
| | | /** |
| | | * 网格交易单参数,封装单笔条件开仓单及其止盈单的完整状态。 |
| | | * 单笔挂单的完整参数,封装条件开仓单及止盈单的状态。 |
| | | * |
| | | * <p>每笔挂单对应的参数独立存储为一个 TraderParam 实例, |
| | | * 用于追踪条件开仓单和止盈条件单的挂单状态、价格位置及订单 ID。 |
| | | * <h3>定位</h3> |
| | | * 每个 GridElement 内嵌两个 TraderParam(longTraderParam / shortTraderParam), |
| | | * 分别记录该价格层级上多仓和空仓的挂单参数。所有字段通过 getter/setter |
| | | * 在挂单/成交/止盈各阶段逐步填充。 |
| | | * |
| | | * <h3>关键字段</h3> |
| | | * <ul> |
| | | * <li><b>方向</b>:多 / 空,决定挂单和止盈的触发方向</li> |
| | | * <li><b>价格</b>:挂单价(条件开仓触发价)、止盈价(止盈触发价)</li> |
| | | * <li><b>挂单状态</b>:挂单价是否挂成功、止盈价是否挂成功</li> |
| | | * <li><b>网格位置</b>:挂单价网格位置、止盈价网格位置(用于定位在价格队列中的索引)</li> |
| | | * <li><b>订单ID</b>:挂单订单 ID、止盈订单 ID(用于取消和匹配)</li> |
| | | * </ul> |
| | | * <h3>字段分组</h3> |
| | | * <table> |
| | | * <tr><th>类别</th><th>字段</th><th>生命周期</th></tr> |
| | | * <tr><td>开仓准备</td><td>direction, entryPrice, quantity</td><td>updateGridElements() 预填充</td></tr> |
| | | * <tr><td>止盈预定</td><td>takeProfitPrice</td><td>updateGridElements() 预填充(entryPrice ± (step - minTick))</td></tr> |
| | | * <tr><td>挂单确认</td><td>entryOrderPlaced, entryOrderId</td><td>条件单挂成功后由 longEntryTraderIdParam 等写入</td></tr> |
| | | * <tr><td>止盈确认</td><td>takeProfitPlaced, takeProfitOrderId</td><td>止盈单挂成功后由 longTakeProfitTraderIdParam 等写入</td></tr> |
| | | * <tr><td>定位</td><td>entryGridPosition, takeProfitGridPosition</td><td>当前策略中由 upId/downId 替代</td></tr> |
| | | * </table> |
| | | * |
| | | * <h3>使用示例</h3> |
| | | * <h3>盈利公式(正向合约)</h3> |
| | | * <pre> |
| | | * TraderParam param = TraderParam.builder() |
| | | * .direction(Direction.LONG) |
| | | * .entryPrice(new BigDecimal("2293.7")) |
| | | * .takeProfitPrice(new BigDecimal("2301.6")) |
| | | * .quantity("1") |
| | | * .entryGridPosition(3) |
| | | * .takeProfitGridPosition(4) |
| | | * .build(); |
| | | * |
| | | * // 挂单成功后更新 |
| | | * param.setEntryOrderPlaced(true); |
| | | * param.setEntryOrderId("12345"); |
| | | * |
| | | * // 止盈单挂成功后更新 |
| | | * param.setTakeProfitPlaced(true); |
| | | * param.setTakeProfitOrderId("12346"); |
| | | * 多仓止盈盈利 = takeProfitPrice - entryPrice = (entryPrice + step - minTick) - entryPrice = step - minTick |
| | | * 空仓止盈盈利 = entryPrice - takeProfitPrice = entryPrice - (entryPrice - step + minTick) = step - minTick |
| | | * </pre> |
| | | * |
| | | * @author Administrator |