在 GitHub 上查看

逐笔成交费用核算策略图

该图表根据小时级 CCI(30) 对阈值的确认回归信号,以固定数量的一张市价单交易,并演示对每个已观察成交的费用核算。四根 K 线冷却期限制新信号,教学用百分比仓位保护层可以平仓,一个日志同时接收逐笔计算费用和策略引擎的累计佣金值。

策略概览

  • 已完成的一小时 K 线输入 CommodityChannelIndex 30。指标输出每个数值,包括周期尚未完全形成时产生的数值。
  • 买入要求前一 CCI < -100 且当前 CCI >= -100。卖出要求前一 CCI > 100 且当前 CCI <= 100。
  • 买入分支还要求 Position <= 0,卖出分支要求 Position >= 0,两个分支都要求四根 K 线冷却期已就绪。
  • 每个有效信号只提交一张固定 Volume 的市价单。空仓时它开立信号方向;面对数量为一的反向仓位时,它只把仓位平到零,不会在同一信号中开立另一方向。
  • 仓位保护是明确的教学层,止盈为 1%,固定止损为 0.7%。它只检查已完成 K 线的收盘价,并跳过已经产生信号订单的那根 K 线收盘价。
  • 每个已观察成交按 Trade.Price × Trade.Volume × Commission Rate % / 100 计算一次模拟费用。图表显示 CCI、订单、成交及两组佣金序列,格式化后的佣金消息写入同一个日志流。

入场与出场规则

  • 做多入场: 当前一 CCI 低于 -100、当前 CCI 回到 -100 或更高、Position <= 0 且冷却期已就绪时,提交一张 Volume 的市价买单。空仓时开立多仓;面对数量为一的空头仓位时,只把空头仓位平到零。
  • 做空入场: 当前一 CCI 高于 100、当前 CCI 回到 100 或更低、Position >= 0 且冷却期已就绪时,提交一张 Volume 的市价卖单。空仓时开立空仓;面对数量为一的多仓时,只把多仓平到零。
  • 离场: 符合条件的反向 CCI 信号可用一张固定数量的市价单把数量为一的仓位平到零。与此独立,教学保护层可在 1% 止盈或 0.7% 固定止损处平掉其跟踪的敞口;其价格输入只接收未产生信号订单的已完成 K 线收盘价。

参数

参数 默认值 说明
Candles 01:00:00 一小时时间周期;只有已完成 K 线驱动 CCI 决策、冷却计数增加和保护价格检查。
CCI Length 30 CommodityChannelIndex 的周期;方块无需等待指标完全形成便输出数值。
Lower Level -100 CCI 下阈值。向上回穿 -100 时产生买入侧交叉条件。
Upper Level 100 CCI 上阈值。向下回穿 100 时产生卖出侧交叉条件。
Cooldown 4 一次成交后,再次允许信号交易所需的已完成 K 线数量。
Commission Rate % 0.04 仅供逐笔显示公式 Trade.Price × Trade.Volume × rate / 100 使用的百分比费率。
Take Profit % 1 教学仓位保护层采用的有利方向百分比变动。
Stop Loss % 0.7 教学保护层中固定、非跟踪止损采用的不利方向百分比变动。
Volume 1 每张买入或卖出信号订单的固定数量。

图表详情

  • K 线方块输出已完成的一小时 K 线。其收盘价会为保护层保存,指标方块则在关闭已形成值过滤后计算 CCI 30。逐 K 线标志会保留前一值和当前值与阈值的四项比较结果,直到最终决策脉冲。
  • 当前仓位提供 Position <= 0 和 Position >= 0 门控。冷却计数从 4 开始,在每根 K 线决策前递增并封顶;每次信号订单直接成交及保护成交都会将其重置为 0。因此成交后的第 1、2、3 根已完成 K 线被阻止,第 4 根可以交易。
  • 两个订单注册方块提交固定 Volume 的市价买单和卖单。每个方块的直接成交输出更新保护并重置冷却;专用 Trades for order 方块观察已注册的 Order,并向模拟费用计算和图表提供信号成交流。
  • 两个直接信号成交流都进入仓位保护,使其内部仓位在信号平仓后回到零。保护自身的成交输出不会反馈到该输入。无信号门控仅在该 K 线上两类信号订单都未触发时,才释放保存的已完成收盘价供保护检查。
  • 对于每个已观察的买入、卖出或保护成交,转换器将 Trade.Price 和 Trade.Volume 保存到静默锁存器。释放脉冲随后按费率、价格、数量的顺序输出;公式更新 a × b × r / 100,最后静默费用状态只为该成交输出一次。
  • 策略盈亏的 Commission 输出是引擎累计佣金;如果测试或实盘环境没有配置佣金规则,它会保持为零。逐笔模拟公式只用于显示,不会写入该引擎值。
  • 两个字符串格式化输出由 Combination 合并,并发送到一个 Log 类型的通知。Trades for order 收到注册 Order 后才订阅,因此若执行环境在注册调用内部完成订单,成交可能早于观察器连接;此时直接成交输出仍会驱动保护和冷却。

使用方法

将 .json 文件导入 Designer,在回测器中用历史数据运行,然后根据自己的交易品种调整参数或方块,确认无误后再用于实盘。