下面我将为您提供一个全面的指南,包括:

(图片来源网络,侵删)
- 基础语法和结构:让您快速上手。
- 常用函数示例:涵盖趋势、震荡、成交量等。
- 经典指标完整源码:如均线、MACD、KDJ等。
- 如何编写和调试自己的指标:从零开始创建一个指标。
基础语法和结构
一个文华指标通常由以下几个部分组成:
// 1. 指标名称
指标名称: MACD
// 2. 参数定义(可选)
PARAM = 12; // 快速EMA周期
PARAM2 = 26; // 慢速EMA周期
PARAM3 = 9; // DEA周期
// 3. 变量定义(可选)
VARIABLE: DIF = 0; // DIF线
VARIABLE: DEA = 0; // DEA线
VARIABLE: MACD_HIST = 0; // MACD柱状图
// 4. 主计算逻辑
DIF = EMA(CLOSE, PARAM) - EMA(CLOSE, PARAM2); // 计算DIF
DEA = EMA(DIF, PARAM3); // 计算DEA
MACD_HIST = 2 * (DIF - DEA); // 计算MACD柱状图,放大2倍
// 5. 绘图指令
PLOT(DIF, "DIF", COLOR_RED); // 绘制DIF线,颜色为红色
PLOT(DEA, "DEA", COLOR_GREEN); // 绘制DEA线,颜色为绿色
PLOT(MACD_HIST, "MACD", COLOR_STICK); // 绘制MACD柱状图,用颜色棒表示
// 6. 输出信号(可选)
IF DIF > DEA THEN BEGIN
DRAWICON(CROSS(DIF, DEA), LOW, 1); // 当DIF上穿DEA时,在最低价处画一个向上图标
END;
核心概念:
CLOSE,OPEN,HIGH,LOW,VOLUME: 这些是内置的变量,代表当前周期的收盘价、开盘价、最高价、最低价和成交量。PARAM,PARAM2, ...: 用户可以在图表上调整的参数。VARIABLE: 用于在指标运行过程中存储中间计算结果的变量。PLOT: 绘制指标线或柱状图。PLOT(数值, "名称", 颜色)COLOR_STICK表示绘制成柱状图。
IF...THEN...BEGIN...END: 条件判断语句。CROSS(A, B): 函数,表示A上穿B。DRAWICON(条件, 位置, 图标代码): 在满足条件的K线上绘制一个图标。图标代码:1=向上箭头, 2=向下箭头, 3=圆形, 4=叉号, 等等。
常用函数示例
文华财经提供了丰富的内置函数。

(图片来源网络,侵删)
| 函数类别 | 函数名 | 说明 | 示例 |
|---|---|---|---|
| 趋势指标 | MA(CLOSE, N) |
简单移动平均线 | MA5 = MA(CLOSE, 5); |
EMA(CLOSE, N) |
指数移动平均线 | EMA12 = EMA(CLOSE, 12); |
|
SMA(CLOSE, N, M) |
平滑移动平均线 | SMA10 = SMA(CLOSE, 10, 2); |
|
ATR(N) |
平均真实波幅 | ATR14 = ATR(14); |
|
| 震荡指标 | RSI(CLOSE, N) |
相对强弱指数 | RSI6 = RSI(CLOSE, 6); |
KDJ(K周期, D周期, J周期) |
随机指标 | 需要定义三个变量来接收K, D, J值 | |
CCI(N) |
顺势指标 | CCI20 = CCI(20); |
|
| 成交量指标 | VOL |
成交量 | VOLUME = VOL; |
VMA(N) |
成交量均线 | VMA5 = VMA(5); |
|
AMOUNT |
成交额 | TOTAL_AMOUNT = AMOUNT; |
|
| 逻辑函数 | CROSS(A, B) |
A上穿B | IF CROSS(CLOSE, MA20) THEN ... |
CROSSDOWN(A, B) |
A下穿B | IF CROSSDOWN(CLOSE, MA20) THEN ... |
|
COUNT(条件, N周期) |
N周期内满足条件的次数 | IF COUNT(CLOSE > REF(CLOSE, 1), 5) = 5 THEN ... |
|
REF(数据, N) |
引用N周期前的数据 | REF(CLOSE, 1) 是昨天的收盘价 |
|
HHV(数据, N周期) |
N周期内的最高值 | HHV(HIGH, 20) 是20日最高价 |
|
LLV(数据, N周期) |
N周期内的最低值 | LLV(LOW, 20) 是20日最低价 |
经典指标完整源码
布林带
布林带由中轨(简单移动平均线)、上轨(中轨+2倍标准差)和下轨(中轨-2倍标准差)组成。
// 指标名称: 布林带 // 参数 N = 20; // 周期 P = 2; // 标准差倍数 // 变量 VARIABLE: MID = 0; // 中轨 VARIABLE: UPPER = 0; // 上轨 VARIABLE: LOWER = 0; // 下轨 // 计算 MID = MA(CLOSE, N); UPPER = MID + P * STD(CLOSE, N); // STD是计算标准差的函数 LOWER = MID - P * STD(CLOSE, N); // 绘图 PLOT(MID, "MID", COLOR_WHITE); // 中轨用白色 PLOT(UPPER, "UPPER", COLOR_RED); // 上轨用红色 PLOT(LOWER, "LOWER", COLOR_GREEN); // 下轨用绿色
KDJ
KDJ指标需要三个变量来接收K, D, J值。
// 指标名称: KDJ // 参数 N = 9; // K, D的周期 M1 = 3; // K的平滑周期 M2 = 3; // D的平滑周期 // 变量 VARIABLE: RSV = 0; VARIABLE: K_VALUE = 50; // 初始值设为50 VARIABLE: D_VALUE = 50; // 初始值设为50 VARIABLE: J_VALUE = 0; // 计算 RSV = (CLOSE - LLV(LOW, N)) / (HHV(HIGH, N) - LLV(LOW, N)) * 100; K_VALUE = SMA(RSV, M1, 1); // 使用SMA平滑 D_VALUE = SMA(K_VALUE, M2, 1); J_VALUE = 3 * K_VALUE - 2 * D_VALUE; // 绘图 PLOT(K_VALUE, "K", COLOR_RED); PLOT(D_VALUE, "D", COLOR_BLUE); PLOT(J_VALUE, "J", COLOR_CYAN);
RSI (相对强弱指数)
// 指标名称: RSI // 参数 N1 = 6; N2 = 12; N3 = 24; // 变量 VARIABLE: RSI1 = 0; VARIABLE: RSI2 = 0; VARIABLE: RSI3 = 0; // 计算 RSI1 = RSI(CLOSE, N1); RSI2 = RSI(CLOSE, N2); RSI3 = RSI(CLOSE, N3); // 绘图 PLOT(RSI1, "RSI6", COLOR_RED); PLOT(RSI2, "RSI12", COLOR_GREEN); PLOT(RSI3, "RSI24", COLOR_BLUE); // 可选:绘制超买超卖区 PLOT(70, "超买线", COLOR_GRAY); PLOT(30, "超卖线", COLOR_GRAY);
如何编写和调试自己的指标(实战案例)
让我们来创建一个简单的“双均线金死叉”交易信号指标。
目标:

(图片来源网络,侵删)
- 绘制一条20日均线(MA20)和一条60日均线(MA60)。
- 当短期均线上穿长期均线时,在K线上画一个红色的“买”字。
- 当短期均线下穿长期均线时,在K线上画一个绿色的“卖”字。
步骤:
-
新建指标
- 在文华财经软件中,右键点击图表 -> “指标公式” -> “新建公式”。
- 给指标起个名字,双均线信号”。
-
编写源码
// 指标名称: 双均线信号
// 描述: 根据双均线交叉产生交易信号
// 参数
N1 = 20; // 短期均线周期
N2 = 60; // 长期均线周期
// 变量
VARIABLE: MA_SHORT = 0; // 短期均线值
VARIABLE: MA_LONG = 0; // 长期均线值
// 计算均线
MA_SHORT = MA(CLOSE, N1);
MA_LONG = MA(CLOSE, N2);
// 绘制均线
PLOT(MA_SHORT, "MA" + NUMTOSTR(N1, 0), COLOR_RED); // 红色短线
PLOT(MA_LONG, "MA" + NUMTOSTR(N2, 0), COLOR_BLUE); // 蓝色长线
// 生成信号
// 1. 金叉信号:当MA_SHORT上穿MA_LONG时
IF CROSS(MA_SHORT, MA_LONG) THEN BEGIN
DRAWTEXT(CROSS(MA_SHORT, MA_LONG), LOW, '买'), COLOR_RED; // 在最低价位置显示“买”字
END;
// 2. 死叉信号:当MA_SHORT下穿MA_LONG时
IF CROSSDOWN(MA_SHORT, MA_LONG) THEN BEGIN
DRAWTEXT(CROSSDOWN(MA_SHORT, MA_LONG), HIGH, '卖'), COLOR_GREEN; // 在最高价位置显示“卖”字
END;
代码解释:
NUMTOSTR(N1, 0): 这是一个函数,将数字N1转换为字符串,这样指标名称就能动态显示为MA20和MA60。DRAWTEXT(条件, 位置, "文字内容", 颜色): 在满足条件的K线的指定位置绘制文字。LOW表示在K线的最低价下方绘制。HIGH表示在K线的最高价上方绘制。
- 编译和应用
- 点击“测试公式”,检查语法是否正确。
- 没有问题后,点击“确定”保存。
- 在图表上,右键 -> “指标公式” -> 选择你刚创建的“双均线信号”并加载。
你的图表上就会出现20日和60日均线,并且在金叉死叉的地方出现“买”和“卖”的提示文字。
重要提示
- 历史数据回测:文华财经的WH8软件提供了强大的历史回测功能,编写好指标后,可以在“交易系统”模块中将其设置为交易信号,进行策略回测,评估其历史表现。
- 止损止盈:一个完整的交易策略通常需要包含止损和止盈逻辑,你可以在
IF语句中加入更多条件,IF CROSS(MA_SHORT, MA_LONG) AND HIGH > REF(HIGH, 1) * 1.02 THEN ...来实现更复杂的入场条件。 - 寻求帮助:文华官网、论坛和用户群是学习和交流的好地方,可以找到很多现成的源码和解决问题的思路。
希望这份详细的指南能帮助你理解和编写文华财经的期货指标!
标签: 文华期货指标源码安装教程 文华期货指标源码编写方法 文华期货指标源码常见问题解答
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。