FactorLang表达式系统规范 v2.2(完整版)
🎯 快速开始
CODEBLOCK0
📋 核心变量速查表(基于原始文档)
行情数据变量
| 变量 | 说明 | 示例 | 原始文档位置 |
|---|
| INLINECODE0 | 开盘价 | INLINECODE1 | 第1-50行 |
| INLINECODE2 |
最高价 |
_high_1d | 第1-50行 |
|
_low_{period} | 最低价 |
_low_1d | 第1-50行 |
|
_close_{period} | 收盘价 |
_close_1d | 第1-50行 |
|
_vol_{period} | 成交量 |
_vol_1d | 第1-50行 |
技术指标变量
| 变量 | 说明 | 示例 | 原始文档位置 |
|---|
| INLINECODE10 | 移动平均线 | INLINECODE11 | 第100-200行 |
| INLINECODE12 |
MA趋势方向 |
_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 | 盈亏点数 | INLINECODE27 | 第604行 |
| INLINECODE28 |
盈亏百分比 |
_palr > 40 | 第603行 |
重要区别:
- -
_palp: 盈亏点数(当前价格 - 持仓成本) _palr: 盈亏百分比(相对于持仓成本的百分比)
周期参数
| 周期 | 说明 | 应用场景 |
|---|
| INLINECODE32 | 1分钟 | 高频交易 |
| INLINECODE33 |
5分钟 | 短线交易 |
|
15m | 15分钟 | 中短线 |
|
30m | 30分钟 | 中短线 |
|
60m | 60分钟 | 短期趋势 |
|
1d | 日线 | 中长线 |
|
1w | 周线 | 长期投资 |
|
1mon | 月线 | 长期投资 |
🔧 常用函数速查
统计函数
CODEBLOCK1
逻辑函数
CODEBLOCK2
数学函数
CODEBLOCK3
🎯 策略模板
趋势跟踪策略
CODEBLOCK4
突破策略
CODEBLOCK5
止损策略
CODEBLOCK6
震荡策略
CODEBLOCK7
💡 最佳实践
1. 变量使用规范
- - 使用正确的盈亏变量:
_palp(点数)和_palr(百分比) - 周期参数必须正确:
1m, 5m, 1d, 1w等 - 技术指标参数必须完整:
_ma_1d_30(周期_长度)
2. 表达式编写技巧
- - 使用括号明确运算优先级
- 避免过于复杂的嵌套表达式
- 使用注释说明策略逻辑
3. 策略组合
- - 结合多个时间周期进行验证
- 使用多种技术指标进行确认
- 设置合理的止损止盈条件
🚨 常见错误
错误1:使用错误的盈亏变量
CODEBLOCK8
错误2:周期参数不完整
CODEBLOCK9
错误3:函数参数错误
CODEBLOCK10
🔧 特殊规则(AI必须遵守)
规则1:双箱体高点/低点计算
CODEBLOCK11
规则2:突破逻辑的收盘价周期推断
CODEBLOCK12
规则3:基础周期与收盘价周期的关系
CODEBLOCK13
规则4:止损条件处理
CODEBLOCK14
规则5:MCP服务器调用
CODEBLOCK15
🎯 完整示例
示例1:默认基础周期5分钟
CODEBLOCK16
示例2:用户指定基础周期15分钟
CODEBLOCK17
示例3:用户明确指定收盘价周期
CODEBLOCK18
示例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中的变量使用规范和特殊规则!
FactorLang表达式系统规范 v2.2(完整版)
🎯 快速开始
python
示例1:日线收盘价突破10日最高价
close1d > HHV(10,
close1d, 1d, 1ref)
示例2:5日EMA斜率向上且金叉状态
ema1d
5slope > 0 &&
dkx1d
crossstatus == 1
示例3:最近3天至少2天收阳
ANY(3, 2,
close1d >
open1d, 1d)
示例4:价格在箱体内震荡
INRANGE(
close1d,
box1d
greenlow,
box1d
greenhigh)
示例5:盈亏点数止损(使用正确的_palp变量)
_palp > 10 # 盈利10点止盈或亏损10点止损
📋 核心变量速查表(基于原始文档)
行情数据变量
| 变量 | 说明 | 示例 | 原始文档位置 |
|---|
| open{period} | 开盘价 | open1d | 第1-50行 |
| high{period} |
最高价 |
high1d | 第1-50行 |
|
low{period} | 最低价 |
low1d | 第1-50行 |
|
close{period} | 收盘价 |
close1d | 第1-50行 |
|
vol{period} | 成交量 |
vol1d | 第1-50行 |
技术指标变量
| 变量 | 说明 | 示例 | 原始文档位置 |
|---|
| ma{period}{N} | 移动平均线 | ma1d30 | 第100-200行 |
| ma{period}{N}trend |
MA趋势方向 |
ma1d
30trend | 第100-200行 |
|
dkx{period} | 多空线 |
dkx1d | 第200-300行 |
|
dkx{period}
crossstatus | 金叉状态 |
dkx1d
crossstatus | 第200-300行 |
|
box{period}
greenhigh | 绿色箱体高点 |
box1d
greenhigh | 第300-400行 |
|
box{period}
greenlow | 绿色箱体低点 |
box1d
greenlow | 第300-400行 |
|
box{period}
redhigh | 红色箱体高点 |
box1d
redhigh | 第300-400行 |
|
box{period}
redlow | 红色箱体低点 |
box1d
redlow | 第300-400行 |
盈亏相关变量(重要)
| 变量 | 说明 | 示例 | 原始文档位置 |
|---|
| palp | 盈亏点数 | palp > 10 | 第604行 |
| palr |
盈亏百分比 | palr > 40 | 第603行 |
重要区别:
- - palp: 盈亏点数(当前价格 - 持仓成本)
- palr: 盈亏百分比(相对于持仓成本的百分比)
周期参数
5分钟 | 短线交易 |
| 15m | 15分钟 | 中短线 |
| 30m | 30分钟 | 中短线 |
| 60m | 60分钟 | 短期趋势 |
| 1d | 日线 | 中长线 |
| 1w | 周线 | 长期投资 |
| 1mon | 月线 | 长期投资 |
🔧 常用函数速查
统计函数
python
最高值
HHV(10,
close1d, 1d, 1ref) # 最近10日最高收盘价
最低值
LLV(10,
close1d, 1d, 1ref) # 最近10日最低收盘价
移动平均
MA(
close1d, 20, 1d, 1ref) # 20日移动平均
指数移动平均
EMA(
close1d, 12, 1d, 1ref) # 12日指数移动平均
引用函数
REF(
close1d, 1) # 前一日收盘价
REF(
close1d, 2) # 前两日收盘价
逻辑函数
python
条件判断
IF(
close1d >
ma1d_20, 1, -1)
范围判断
INRANGE(
close1d,
box1d
greenlow,
box1d
greenhigh)
任意条件满足
ANY(3, 2,
close1d >
open1d, 1d)
所有条件满足
ALL(3, 3,
close1d >
open1d, 1d)
数学函数
python
绝对值
ABS(
close1d -
open1d)
最大值
MAX(
close1d,
open1d)
最小值
MIN(
close1d,
open1d)
求和
SUM(5,
close1d, 1d, 1ref)
🎯 策略模板
趋势跟踪策略
python
多头趋势:多空线金叉且斜率向上
dkx1d
crossstatus == 1 &&
dkx1d_slope > 0
空头趋势:多空线死叉且斜率向下
dkx1d
crossstatus == -1 &&
dkx1d_slope < 0
均线多头排列
ma1d
5 > ma
1d10 &&
ma1d
10 > ma
1d20
均线空头排列
ma1d
5 < ma
1d10 &&
ma1d
10 < ma
1d20
突破策略
python
突破箱体上轨
close1d >
box1d
greenhigh
突破前高
close1d > HHV(20,
high1d, 1d, 1ref)
突破均线
close1d >
ma1d_30
突破布林带上轨
close1d >
boll1d_upper
止损策略
python
盈亏点数止损(使用正确的_palp变量)
_palp > 10 # 盈利10点止盈或亏损10点止损
盈亏百分比止损
_palr > 0.1 # 盈利10%止盈
_palr < -0.05 # 亏损5%止损
移动止损
close1d < HHV(10,
close1d, 1d, 1ref) * 0.95 # 从最高点回撤5%
震荡策略
python
RSI超买超卖
rsi1d > 70 # 超买
rsi1d < 30 # 超卖
KD指标金叉死叉
kd1d
k > kd
1dd && REF(
kd1d
k, 1) < REF(kd
1dd, 1) # 金叉
kd1d
k < kd
1dd && REF(
kd1d
k, 1) > REF(kd
1dd, 1) # 死叉
💡 最佳实践
1. 变量使用规范
- - 使用正确的盈亏变量:palp(点数)和palr(百分比)
- 周期参数必须正确:1m, 5m, 1d, 1w等
- 技术指标参数必须完整:ma1d30(周期