首页龙虾技能列表 › factorlang-expression — FactorLang量化因子表达式

factorlang-expression — FactorLang量化因子表达式

v1.0.1

提供完整的FactorLang量化因子表达式语言参考手册和规范。当用户需要编写因子表达式、策略开发、查询语法或设计交易策略时调用此技能。包含完整的变量、函数和最佳实践。

0· 93·0 当前·0 累计
by @rxjhfmf (Frank)·MIT-0
下载技能包
License
MIT-0
最后更新
2026/3/27
安全扫描
VirusTotal
无害
查看报告
OpenClaw
可疑
medium confidence
该技能主要是FactorLang的文档/参考资料,与其目的一致,但其运行时指令引用调用未指定的'MCP'引擎/服务器(mcp_engine_mcp_server_run_expression_selected),而未声明端点或凭证——这种模糊性可能导致数据被发送到外部,使用前需要澄清。
评估建议
该包主要是FactorLang的参考手册和示例,与其目的相符,但它还包含调用'MCP'引擎(mcp_engine_mcp_server_run_expression_selected)的指令,该引擎会将策略/条件数据发送到外部服务。在安装或启用此技能之前,请向发布者询问:(1) MCP服务器是什么(URL、所有者、隐私政策)?(2) 代理是否真的会向该服务器发送用户策略文本或其他敏感数据?(3) 需要哪些凭证或配置,为什么没有声明?如果您计划仅将该技能用作离线文档,请确保代理/平台不会自动调用外部API或传输您的专有策略;建议禁用自主调用或限制网络调用,直到您验证端点和凭证。如果作者无法提供明确答案或端点不可信,请将该技能视为处理机密策略代码或账户敏感参数的高风险技能。...
详细分析 ▾
用途与能力
声明的目的(FactorLang表达式参考和指导)与所包含的文档和示例相符。然而,SKILL.md包含了一个特定的MCP服务器调用模式用于运行表达式,这将该技能的范围从'文档'扩展到'集成/执行',而未声明服务端点、所需凭证,或为什么文档类技能需要此类调用。
指令范围
指令主要是文档和解析规则,用于构建表达式,这符合预期。令人担忧的是,一个特殊规则(Rule5)展示了具体的mcp_engine_mcp_server_run_expression_selected调用,发送开始/结束日期、poolId、开仓/平仓/止损条件、资金和方向。这指示代理将用户提供的策略详情传输到外部执行/引擎服务;SKILL.md未标识目标地址、认证或隐私处理方式。
安装机制
没有安装规范,除了文档外也没有执行代码的文件;从安装角度来看,这是最低风险的。
凭证需求
该技能未声明所需的环境变量或凭证,这与纯文档定位相符。然而,因为它明确指示代理调用MCP服务器,却未声明端点或凭证要求,这很不寻常——如果代理/平台将执行该调用,可能需要凭证或配置,但未予说明。
持久化与权限
always为false且该技能可由用户调用;它不请求提升的持久性或系统级配置。默认允许自主调用(平台正常),但这本身并非新问题。
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv1.0.12026/3/27

文档路径从根目录移至resources/下(FactorLang表达式系统规范.md → resources/FactorLang表达式系统规范.md);SKILL.md内的数据来源说明同步为新路径,引用为[resources/FactorLang表达式系统规范.md];其余规范、内容、示例、规则均保持一致,没有其他功能或逻辑性调整。

● 无害

安装命令 点击复制

官方npx clawhub@latest install factorlang-expression
镜像加速npx clawhub@latest install factorlang-expression --registry https://cn.clawhub-mirror.com

技能文档

🎯 快速开始

# 示例1:日线收盘价突破10日最高价
_close_1d > HHV(10, _close_1d, 1d, 1ref)

# 示例2:5日EMA斜率向上且金叉状态 _ema_1d_5_slope > 0 && _dkx_1d_cross_status == 1

# 示例3:最近3天至少2天收阳 ANY(3, 2, _close_1d > _open_1d, 1d)

# 示例4:价格在箱体内震荡 INRANGE(_close_1d, _box_1d_green_low, _box_1d_green_high)

# 示例5:盈亏点数止损(使用正确的_palp变量) _palp > 10 # 盈利10点止盈或亏损10点止损

📋 核心变量速查表(基于原始文档)

行情数据变量

变量说明示例原始文档位置
_open_{period}开盘价_open_1d第1-50行
_high_{period}最高价_high_1d第1-50行
_low_{period}最低价_low_1d第1-50行
_close_{period}收盘价_close_1d第1-50行
_vol_{period}成交量_vol_1d第1-50行

技术指标变量

变量说明示例原始文档位置
_ma_{period}_{N}移动平均线_ma_1d_30第100-200行
_ma_{period}_{N}_trendMA趋势方向_ma_1d_30_trend第100-200行
_dkx_{period}多空线_dkx_1d第200-300行
_dkx_{period}_cross_status金叉状态_dkx_1d_cross_status第200-300行
_box_{period}_green_high绿色箱体高点_box_1d_green_high第300-400行
_box_{period}_green_low绿色箱体低点_box_1d_green_low第300-400行
_box_{period}_red_high红色箱体高点_box_1d_red_high第300-400行
_box_{period}_red_low红色箱体低点_box_1d_red_low第300-400行

盈亏相关变量(重要)

变量说明示例原始文档位置
_palp盈亏点数_palp > 10第604行
_palr盈亏百分比_palr > 40第603行
重要区别
  • _palp: 盈亏点数(当前价格 - 持仓成本)
  • _palr: 盈亏百分比(相对于持仓成本的百分比)

周期参数

周期说明应用场景
1m1分钟高频交易
5m5分钟短线交易
15m15分钟中短线
30m30分钟中短线
60m60分钟短期趋势
1d日线中长线
1w周线长期投资
1mon月线长期投资

🔧 常用函数速查

统计函数

# 最高值
HHV(10, _close_1d, 1d, 1ref) # 最近10日最高收盘价

# 最低值 LLV(10, _close_1d, 1d, 1ref) # 最近10日最低收盘价

# 移动平均 MA(_close_1d, 20, 1d, 1ref) # 20日移动平均

# 指数移动平均 EMA(_close_1d, 12, 1d, 1ref) # 12日指数移动平均

# 引用函数 REF(_close_1d, 1) # 前一日收盘价 REF(_close_1d, 2) # 前两日收盘价

逻辑函数

# 条件判断
IF(_close_1d > _ma_1d_20, 1, -1)

# 范围判断 INRANGE(_close_1d, _box_1d_green_low, _box_1d_green_high)

# 任意条件满足 ANY(3, 2, _close_1d > _open_1d, 1d)

# 所有条件满足 ALL(3, 3, _close_1d > _open_1d, 1d)

数学函数

# 绝对值
ABS(_close_1d - _open_1d)

# 最大值 MAX(_close_1d, _open_1d)

# 最小值 MIN(_close_1d, _open_1d)

# 求和 SUM(5, _close_1d, 1d, 1ref)

🎯 策略模板

趋势跟踪策略

# 多头趋势:多空线金叉且斜率向上
_dkx_1d_cross_status == 1 && _dkx_1d_slope > 0

# 空头趋势:多空线死叉且斜率向下 _dkx_1d_cross_status == -1 && _dkx_1d_slope < 0

# 均线多头排列 _ma_1d_5 > _ma_1d_10 && _ma_1d_10 > _ma_1d_20

# 均线空头排列 _ma_1d_5 < _ma_1d_10 && _ma_1d_10 < _ma_1d_20

突破策略

# 突破箱体上轨
_close_1d > _box_1d_green_high

# 突破前高 _close_1d > HHV(20, _high_1d, 1d, 1ref)

# 突破均线 _close_1d > _ma_1d_30

# 突破布林带上轨 _close_1d > _boll_1d_upper

止损策略

# 盈亏点数止损(使用正确的_palp变量)
_palp > 10 # 盈利10点止盈或亏损10点止损

# 盈亏百分比止损 _palp > 0.1 # 盈利10%止盈 _palp < -0.05 # 亏损5%止损

# 移动止损 _close_1d < HHV(10, _close_1d, 1d, 1ref) * 0.95 # 从最高点回撤5%

震荡策略

# RSI超买超卖
_rsi_1d > 70 # 超买
_rsi_1d < 30 # 超卖

# KD指标金叉死叉 _kd_1d_k > _kd_1d_d && REF(_kd_1d_k, 1) < REF(_kd_1d_d, 1) # 金叉 _kd_1d_k < _kd_1d_d && REF(_kd_1d_k, 1) > REF(_kd_1d_d, 1) # 死叉

💡 最佳实践

1. 变量使用规范

  • 使用正确的盈亏变量:_palp(点数)和_palr(百分比)
  • 周期参数必须正确:1m, 5m, 1d, 1w
  • 技术指标参数必须完整:_ma_1d_30(周期_长度)

2. 表达式编写技巧

  • 使用括号明确运算优先级
  • 避免过于复杂的嵌套表达式
  • 使用注释说明策略逻辑

3. 策略组合

  • 结合多个时间周期进行验证
  • 使用多种技术指标进行确认
  • 设置合理的止损止盈条件

🚨 常见错误

错误1:使用错误的盈亏变量

# 错误:使用_profit_loss_percent
_profit_loss_percent > 10

# 正确:使用_palp或_palr _palp > 10 # 盈亏点数 _palr > 0.1 # 盈亏百分比

错误2:周期参数不完整

# 错误:缺少周期参数
_ma_30

# 正确:完整的周期参数 _ma_1d_30 # 日线30周期均线 _ma_5m_60 # 5分钟60周期均线

错误3:函数参数错误

# 错误:参数顺序错误
HHV(_close_1d, 10)

# 正确:正确的参数顺序 HHV(10, _close_1d, 1d, 1ref)

🔧 特殊规则(AI必须遵守)

规则1:双箱体高点/低点计算

# 双绿箱高点 = 当前和前一个绿色箱体高点中取最高值
MAX(_box_30m_green_high, REF(_box_30m_green_high, 1))

# 双红箱低点 = 当前和前一个红色箱体低点中取最低值 MIN(_box_30m_red_low, REF(_box_30m_red_low, 1))

规则2:突破逻辑的收盘价周期推断

# 重要概念:"突破30分钟"指的是突破30分钟周期的箱体,不是使用30分钟收盘价
# 收盘价的周期应该根据上下文决定:

# 情况1:用户明确指定收盘价周期 if "60分钟收盘价" in user_input: close_period = "60m" # 使用60分钟收盘价 elif "30分钟收盘价" in user_input: close_period = "30m" # 使用30分钟收盘价 else: # 情况2:用户未指定收盘价周期,使用基础周期 close_period = base_period # 基础周期(如5m、15m等)

# 示例:突破30分钟双绿箱高点 _close_{close_period} > MAX(_box_30m_green_high, REF(_box_30m_green_high, 1))

规则3:基础周期与收盘价周期的关系

# 默认基础周期是5分钟,那么收盘价就是5分钟收盘价
_close_5m > MAX(_box_30m_green_high, REF(_box_30m_green_high, 1))

# 如果基础周期是15分钟,收盘价就是15分钟收盘价 _close_15m > MAX(_box_30m_green_high, REF(_box_30m_green_high, 1))

# 如果用户明确指定使用60分钟收盘价 _close_60m > MAX(_box_30m_green_high, REF(_box_30m_green_high, 1))

规则4:止损条件处理

# 用户明确提到止损条件时,使用用户指定的条件
if "止损" in user_input or "止盈" in user_input:
    stopCondition = "用户指定的止损条件"
else:
    # 用户未提到止损条件时,止损条件应该传空
    stopCondition = "" # 空字符串

规则5:MCP服务器调用

# 用户未提到止损条件时,MCP调用应该传空字符串
mcp_engine_mcp_server_run_expression_selected(
    startDateStr="2024-01-17",
    endDateStr="2024-04-17",
    period="5m", # 基础周期
    poolId="10",
    openCondition="用户指定的开仓条件",
    closeCondition="用户指定的平仓条件",
    stopCondition="", # 用户未提到止损条件时传空
    initCash=10000000,
    direction=1
)

🎯 完整示例

示例1:默认基础周期5分钟

# 用户输入:突破30分钟双绿箱高点
# 推断:基础周期5分钟,收盘价使用5分钟收盘价
_close_5m > MAX(_box_30m_green_high, REF(_box_30m_green_high, 1))

示例2:用户指定基础周期15分钟

# 用户输入:基础周期15分钟,突破30分钟双绿箱高点
# 推断:基础周期15分钟,收盘价使用15分钟收盘价
_close_15m > MAX(_box_30m_green_high, REF(_box_30m_green_high, 1))

示例3:用户明确指定收盘价周期

# 用户输入:60分钟收盘价突破30分钟双绿箱高点
# 推断:收盘价使用60分钟收盘价
_close_60m > MAX(_box_30m_green_high, REF(_box_30m_green_high, 1))

示例4:完整策略

# 开仓条件:突破30分钟双绿箱高点(使用基础周期收盘价)
_close_{base_period} > MAX(_box_30m_green_high, REF(_box_30m_green_high, 1))

# 平仓条件:突破30分钟双红箱低点(使用基础周期收盘价) _close_{base_period} < MIN(_box_30m_red_low, REF(_box_30m_red_low, 1))

# 止损条件:用户未提到,传空 ""


数据来源:基于resources/FactorLang表达式系统规范.md

调用时机:当用户需要编写因子表达式、策略开发、查询语法或设计交易策略时自动调用此技能。

版本:v2.2(添加突破逻辑的收盘价周期推断规则)

AI执行要求:必须严格遵守本SKILL中的变量使用规范和特殊规则!

数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制

了解定制服务