-
Notifications
You must be signed in to change notification settings - Fork 724
止损组件API
止损组件(Stoploss)是交易系统中的关键模块,用于在价格不利变动时自动平仓以控制风险。本文档详细说明了Hikyuu框架中提供的主要止损策略构造函数,包括固定百分比止损、基于技术指标的动态止损以及安全地带止损等。这些策略可灵活集成到交易系统中,配合信号组件实现完整的交易逻辑。
Hikyuu提供了多种止损策略创建函数,主要包含以下三类:
- ST_FixedPercent: 固定百分比止损
- ST_Indicator: 基于技术指标的止损
- ST_Saftyloss: 安全地带止损(基于亚历山大·艾尔德理论)
这些函数均返回StoplossPtr类型的止损策略实例,可在交易系统中直接使用。
Section sources
- ST_FixedPercent.h
- ST_Indicator.h
- ST_Saftyloss.h
该策略在价格低于买入价的指定百分比时触发止损。
classDiagram
class ST_FixedPercent {
+double p
+ST_FixedPercent(double p = 0.03)
+getPrice(datetime, price) double
}
参数说明:
-
p: 止损百分比,取值范围(0,1],默认值为0.03(即3%)
使用场景:适用于趋势跟踪策略中设置固定风险比例,简单直观,易于管理。
Diagram sources
- ST_FixedPercent.h
Section sources
- ST_FixedPercent.h
该策略使用技术指标输出作为动态止损价格。
classDiagram
class ST_Indicator {
+Indicator ind
+ST_Indicator(const Indicator& ind)
+getPrice(datetime, price) double
}
参数说明:
-
ind: 技术指标实例,如EMA、ATR等
使用示例:ST_Indicator(EMA(CLOSE(), n=10))表示使用10日指数移动平均线作为止损线。
使用场景:适用于波动性较大的市场,可根据市场动态调整止损位置,避免被短期波动触发。
Diagram sources
- ST_Indicator.h
Section sources
- ST_Indicator.h
基于亚历山大·艾尔德《走进我的交易室》中的安全地带止损策略。
classDiagram
class ST_Saftyloss {
+int n1
+int n2
+double p
+ST_Saftyloss(int n1 = 10, int n2 = 3, double p = 2.0)
+getPrice(datetime, price) double
}
参数说明:
-
n1: 计算平均噪音的回溯时间窗口,默认为10天 -
n2: 对初步止损线取n2日内的最高值,默认为3天 -
p: 噪音系数,默认为2.0
计算逻辑:
- 在回溯周期内计算向下穿越的平均长度(噪音均值)
- 用当日最低价减去(噪音均值×系数p)得到初步止损线
- 对初步止损线取N日最高值以平滑波动
使用场景:适用于需要考虑市场噪音和波动性的策略,能有效避免因短期波动而过早止损。
Diagram sources
- ST_Saftyloss.h
- ST_Saftyloss.cpp
Section sources
- ST_Saftyloss.h
- ST_Saftyloss.cpp
止损组件通常与信号组件协同工作,在交易系统中按以下流程执行:
sequenceDiagram
participant 信号组件 as 信号组件
participant 止损组件 as 止损组件
participant 交易系统 as 交易系统
信号组件->>交易系统 : 生成买入信号
交易系统->>止损组件 : 设置止损价格
loop 每日检查
交易系统->>止损组件 : 调用getPrice()
止损组件-->>交易系统 : 返回止损价
交易系统->>交易系统 : 比较当前价格与止损价
alt 价格触及止损
交易系统->>交易系统 : 执行卖出操作
end
end
执行时机:通常在每个交易周期开始时检查是否触及止损条件。
滑点处理:实际成交价可能与止损价存在差异,建议在策略回测中考虑滑点因素。
协同机制:止损组件与信号组件、资金管理组件共同构成完整的交易系统。
Diagram sources
- Stoploss.py
Section sources
- Stoploss.py
- _Stoploss.cpp
- 参数越界:如ST_FixedPercent的p参数超出(0,1]范围
- 数据不足:ST_Saftyloss需要足够的历史数据来计算噪音均值
- 指标冲突:ST_Indicator使用的指标与主策略逻辑矛盾
- 回测偏差:未考虑滑点和交易成本导致回测结果过于乐观
建议在实盘前充分回测,并监控止损触发频率和效果。
Section sources
- Stoploss.py