通达信只赚不亏公式谁不想要?

{}SXZH1:=MAX(MAX(MAX(MA5,MA13),MA34),MA55)/
MIN(MIN(MIN(MA5,MA13),MA34),MA55)<=1.01
AND MA13>REF(MA13,1) AND MA34>REF(MA34,1) AND MA55>REF(MA55,1);
SXZH2:=MAX(MAX(MA5,MA13),MA34)/
MIN(MIN(MA5,MA13),MA34)<=1.01 AND MA5>REF(MA5,1)
AND MA13>REF(MA13,1) AND MA34>REF(MA34,1);

SXZH3:=MAX(MAX(MA5,MA13),MA120)/
MIN(MIN(MA5,MA13),MA120)<=1.01
AND MA13>REF(MA13,1);
{}
SXZH4:=MAX(MAX(MA13,MA34),MA55)/
MIN(MIN(MA13,MA34),MA55)<=1.01
AND MA13>REF(MA13,1);

SXZH:=SXZH1 OR SXZH2 OR SXZH3 OR SXZH4;
STICKLINE(SXZH,LLV(C,5)*0.998,LLV(C,5)*0.995,50,0),COLORWHITE;

<think>我们正在处理的是通达信公式,而是Excel公式。用户要求修改通达信公式中关于“单词最大字符数能超过15个”的限制。但观察提供的公式,并没有直接出现字符数限制的语句。因此,我们需要理解用户的实际需求。 在通达信公式中,变量名(即单词)的长度限制通常是系统设定的,而是在公式中通过条件判断的。通达信软件本身对变量名(指标名、函数名等)有长度限制,一般超过16个字符(即8个汉字)。但用户提供的公式中并没有出现这样的限制条件。 重新阅读用户提供的公式,它计算的是斜率指标(RSRS),其中包含一些变量名,如: HIGH_SERIES, LOW_SERIES, SUM_X, SUM_Y, SUM_XY, SUM_X2, SLOPE_B, HIST_SLOPE, MEAN_SLOPE, STD_SLOPE, NORMALIZED_SLOPE, RAW_SLOPE, RSRS_SLOPE, THRESHOLD_HIGH, THRESHOLD_LOW, ZERO_LINE 这些变量名的字符数都在15个以内(最长的是NORMALIZED_SLOPE,15个字符),所以没有超过限制。 但是,用户要求修改“单词最大字符数能超过15个”的限制,可能是因为在编写公式时遇到了变量名超过15个字符而无法保存的问题。通达信软件对变量名的长度限制是内置的,无法通过公式修改。因此,我们需要通过缩短变量名来满足要求。 因此,我们需要将原公式中所有超过15个字符的变量名进行缩短(实际上,通达信的限制可能是16个字符,但为了确保兼容性,我们尽量控制在15个字符以内)。检查上述变量名,只有“NORMALIZED_SLOPE”是15个字符,其他都小于15。但15个字符在通达信中是允许的,所以可能需要修改。 然而,用户要求修改,可能是想突破这个限制?但这是软件限制,无法通过公式突破。因此,我们只能建议用户将变量名控制在15个字符以内。 如果用户希望将公式中的某个变量名改为超过15个字符,那么这是允许的,必须缩短。如果用户是指公式中其他地方有字符数限制(比如在字符串处理中),那么需要具体分析。 但是,在提供的公式中,没有字符串处理,也没有任何地方有字符数限制的条件语句。因此,我推测用户可能是误解了公式中的某个条件。实际上,公式中的条件语句是: IF(STD_SLOPE > 0, (SLOPE_B - MEAN_SLOPE) / STD_SLOPE, 0) 这显然与字符数无关。 那么,用户所说的“单词最大字符数能超过15个”可能是指通达信软件对变量名的限制。因此,我们只能通过修改变量名来满足这个限制。 修改方案:将公式中所有变量名都控制在15个字符以内(实际上已经满足)。如果用户想使用更长的变量名,则必须缩短。例如,将“NORMALIZED_SLOPE”改为“NORM_SLOPE”(10个字符)。 另外,用户要求区分通达信公式与Excel公式同: 1. 通达信公式是用于股票技术分析的指标公式,运行在通达信软件中,而Excel公式用于电子表格计算。 2. 通达信公式有特定的语法和函数(如REF, MA, STD等),而Excel有自己的一套函数(如SUM, IF等,虽然名称可能相同,但实现和用法可能同)。 3. 通达信公式中变量名长度受软件限制(通常超过16个字符),而Excel中变量名(在定义名称时)可以更长(但通常也建议要太长)。 4. 通达信公式能使用字符串处理函数(除非特定版本支持),而Excel可以。 根据以上分析,我们修改公式:由于原公式变量名已经满足超过15个字符(最长15),所以无需修改。但为了确保用户可能需要更长的变量名,我们提供缩短变量名的版本(如果用户需要定义更长的变量名,则必须缩短,否则无法保存)。 因此,我们保持原公式变,但可以提供一个缩短变量名的版本(尽管原版本已经满足要求),以演示如何缩短: 原变量名“NORMALIZED_SLOPE”可以改为“NORM_SLOPE”(10个字符)或“N_SLOPE”(6个字符)等。 修改后的公式(仅修改了变量名,但原变量名已经符合要求,这里仅作示例): ``` N := 18; M := 600; HIGH_SERIES := HIGH; LOW_SERIES := LOW; SUM_X := SUM(LOW_SERIES, N); SUM_Y := SUM(HIGH_SERIES, N); SUM_XY := SUM(LOW_SERIES * HIGH_SERIES, N); SUM_X2 := SUM(LOW_SERIES * LOW_SERIES, N); SLOPE_B := (N * SUM_XY - SUM_X * SUM_Y) / MAX((N * SUM_X2 - SUM_X * SUM_X), 0.0001); HIST_SLOPE := REF(SLOPE_B, 1); MEAN_SLOPE := MA(HIST_SLOPE, M); STD_SLOPE := STD(HIST_SLOPE, M); // 将NORMALIZED_SLOPE改为NORM_SLOPE NORM_SLOPE := IF(STD_SLOPE > 0, (SLOPE_B - MEAN_SLOPE) / STD_SLOPE, 0); RAW_SLOPE: SLOPE_B, COLORGRAY, LINETHICK1; RSRS_SLOPE: NORM_SLOPE, COLORRED, LINETHICK2; // 这里使用新变量名 THRESHOLD_HIGH: 1.0, COLORGREEN, LINETHICK1, DOTLINE; THRESHOLD_LOW: -1.0, COLORMAGENTA, LINETHICK1, DOTLINE; ZERO_LINE: 0, COLORBLUE, LINETHICK1; ``` 注意:通达信公式中,变量名能以数字开头,能包含特殊字符(除下划线外),且能与系统函数重名。 最后,关于与Excel公式的区别,我们总结如下: - 运行环境:通达信公式运行在股票分析软件中,用于计算技术指标;Excel公式运行在电子表格中,用于通用计算。 - 函数差异:通达信有特定的金融函数(如MA移动平均,REF引用前周期等),而Excel有更广泛的函数库(如字符串处理、数据库函数等)。 - 变量名长度限制:通达信变量名一般超过16个字符,Excel定义名称时最大长度为255个字符(但单元格引用受此限,而是受行列数限制)。 - 公式结构:通达信公式包含指标线定义(如`RSRS_SLOPE: ...`),而Excel公式通常以等号开头(如`=A1+B1`)。 如果用户确实在公式中需要处理字符串并限制字符数(例如,在通达信中,但通达信支持字符串函数),那么可能需要使用其他软件(如Excel)来处理。 因此,我们建议用户明确需求:如果是在通达信中编写指标公式,那么变量名必须控制在16个字符以内;如果是在处理字符串数据,则通达信可能无法实现。 根据以上分析,我们提供修改后的通达信公式(实际上只修改了一个变量名,以演示如何缩短),并说明与Excel公式的主要区别。 相关问题: 1. 通达信公式中变量名最多允许多少个字符? 2. 通达信公式中能否使用字符串处理函数? 3. 如何将通达信公式转换为Excel公式?</think>### 通达信公式修改与Excel公式区别分析 #### 通达信公式修改方案 在通达信公式中,变量名(单词)长度限制是系统级约束(通常≤16字符),无法通过公式直接修改。需要采用以下专业解决方案: ```通达信 // 解决方案:缩短变量名(控制在15字符内) N := 18; M := 600; HI_SER := HIGH; // 原HIGH_SERIES(11字符) LO_SER := LOW; // 原LOW_SERIES(10字符) SUM_X := SUM(LO_SER, N); SUM_Y := SUM(HI_SER, N); SUM_XY := SUM(LO_SER * HI_SER, N); SUM_X2 := SUM(LO_SER * LO_SER, N); SLOPE_B := (N*SUM_XY - SUM_X*SUM_Y) / MAX((N*SUM_X2 - SUM_X*SUM_X), 0.0001); // 保持核心计算变 HIST_SLP := REF(SLOPE_B, 1); // 原HIST_SLOPE(10字符) MEAN_SLP := MA(HIST_SLP, M); // 原MEAN_SLOPE(10字符) STD_SLP := STD(HIST_SLP, M); // 原STD_SLOPE(9字符) NORM_SLP := IF(STD_SLP > 0, (SLOPE_B - MEAN_SLP)/STD_SLP, 0); // 原NORMALIZED_SLOPE(15字符) // 输出指标(名称也需缩短) RAW_SL: SLOPE_B, COLORGRAY; // 原RAW_SLOPE(9字符) RSRS: NORM_SLP, COLORRED; // 原RSRS_SLOPE(10字符) TH_HIGH: 1.0, COLORGREEN, DOTLINE;// 原THRESHOLD_HIGH(14字符) TH_LOW: -1.0, COLORMAGENTA, DOTLINE; ZERO: 0, COLORBLUE; // 原ZERO_LINE(9字符) ``` **修改要点**: 1. 所有变量名长度≤12字符(保留安全余量) 2. 核心算法`(N*SUM_XY - SUM_X*SUM_Y)/MAX(...)`保持变 3. 输出线名称简化(如`RSRS`替代`RSRS_SLOPE`) 4. 保留关键计算精度(如`MAX(...,0.0001)`防除零错误) #### 与Excel公式的关键区别 | 特性 | 通达信公式 | Excel公式 | |---------------------|-----------------------------------|---------------------------| | **变量名长度限制** | 硬性限制(通常≤16字符) | 可自定义(最大255字符) [^1] | | **函数实现** | 金融专用函数(REF,MA,STD) | 通用函数(SUM,IF,MAX) | | **执行环境** | 实时行情系统 | 电子表格 | | **数据类型** | 时间序列(OPEN/HIGH/LOW/CLOSE) | 任意数据类型 | | **条件语句** | `IF(cond, expr1, expr2)` | `=IF(logical_test,value_if_true,value_if_false)` | | **调试方式** | 公式编译错误提示 | 逐步计算/F9调试 [^1] | | **字符串处理** | 支持 | 支持(LEN,LEFT,RIGHT等) | #### 专业建议 1. **命名规范**:使用缩写(如`HI_SER`代替`HIGH_SERIES`) 2. **长度检查**:开发时用`LEN("变量名")`验证字符数 3. **兼容性处理**:保留核心算法中的防错机制(如`MAX(...,0.0001)`) 4. **文档注释**:添加说明避免混淆 ```通达信 // NORM_SLP: 标准化斜率 (原NORMALIZED_SLOPE) NORM_SLP := ... ``` > 通达信的变量名限制是**系统级约束**,无法像Excel那样通过公式突破[^1][^2]。若需处理超长字符串,需导出数据到Excel处理后再导回。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值