MA多空指数趋势预测指标

Viewed 104

好的指标还需要很强的执行力

{多空指数指标}
VARA:=(2*CLOSE+HIGH+LOW)/4;
VARB:=LLV(LOW,34);
VARC:=HHV(HIGH,34);
VARD:=EMA((VARA-VARB)/(VARC-VARB+0.000001)*100,13); {防除零}
VARE:=EMA(0.667*REF(VARD,1)+0.333*VARD,2);
{多空分界线}
多空线:VARD, COLORGRAY;
趋势线:VARE, COLORBLUE;
{多空区域}
STICKLINE(VARD>VARE,VARD,VARE,2,0),COLORRED;
STICKLINE(VARD<VARE,VARD,VARE,2,0),COLORGREEN;

{买卖信号}
买入信号:IF(CROSS(VARD,VARE) AND VARD<30,20,0),STICK,COLORRED,LINETHICK3;
加仓信号:IF(CROSS(VARD,VARE) AND VARD>30 AND VARD<70,15,0),STICK,COLORMAGENTA,LINETHICK2;
卖出信号:IF(CROSS(VARE,VARD) AND VARD>70,80,0),STICK,COLORGREEN,LINETHICK3;
减仓信号:IF(CROSS(VARE,VARD) AND VARD>50 AND VARD<=70,85,0),STICK,COLORBLUE,LINETHICK2;

{信号图标}
DRAWICON(买入信号>0,15,1);
DRAWICON(加仓信号>0,10,1);
DRAWICON(卖出信号>0,85,2);
DRAWICON(减仓信号>0,80,2);

{多空强度指标}
多空强度:(VARD-VARE)/VARE*100,COLORYELLOW,LINETHICK2;

{关键位置线}
强势线:20,COLORRED;
弱势线:-20,COLORGREEN;
零轴:0,COLORWHITE;
超买线:80,COLORRED;
超卖线:20,COLORGREEN;
中线:50,COLORWHITE;

{多空状态判断}
多头力量:IF(VARD>VARE,VARD-VARE,0),COLORRED;
空头力量:IF(VARD<VARE,VARE-VARD,0),COLORGREEN;

{多空能量柱}
STICKLINE(多头力量>0,0,多头力量,2,0),COLORRED;
STICKLINE(空头力量>0,0,-空头力量,2,0),COLORGREEN;

{预警信号}
DRAWICON(CROSS(VARD,VARE) AND VARD<20,VARD,23);
DRAWICON(CROSS(VARE,VARD) AND VARD>80,VARD,15);

{关键位置标记}
DRAWTEXT(ISLASTBAR,80,'超买区'),COLORRED;
DRAWTEXT(ISLASTBAR,20,'超卖区'),COLORGREEN;
DRAWTEXT(ISLASTBAR,50,'中线'),COLORWHITE;

{多空状态显示}
多头信号:IF(VARD>VARE AND VARD>50,1,0);
空头信号:IF(VARD<VARE AND VARD<50,1,0);
DRAWTEXT(多头信号,多空线,'↑多'),COLORRED;
DRAWTEXT(空头信号,多空线,'↓空'),COLORGREEN;
3 Answers

优化后的版本:

{多空指数指标 - 基础优化版}
VARA:=(2*CLOSE+HIGH+LOW)/4;
VARB:=LLV(LOW,34);
VARC:=HHV(HIGH,34);
VARD:=EMA((VARA-VARB)/(VARC-VARB+0.000001)*100,13); {防除零}
VARE:=EMA(0.667*REF(VARD,1)+0.333*VARD,2);

{多空分界线}
多空线:VARD, COLORGRAY;
趋势线:VARE, COLORBLUE;

{多空区域}
STICKLINE(VARD>VARE,VARD,VARE,2,0),COLORRED;
STICKLINE(VARD<VARE,VARD,VARE,2,0),COLORGREEN;

{买卖信号}
金叉:=CROSS(VARD,VARE);
死叉:=CROSS(VARE,VARD);

买入信号:IF(金叉 AND VARD<30,20,0),STICK,COLORRED,LINETHICK3;
加仓信号:IF(金叉 AND VARD>30 AND VARD<70,15,0),STICK,COLORMAGENTA,LINETHICK2;
卖出信号:IF(死叉 AND VARD>70,80,0),STICK,COLORGREEN,LINETHICK3;
减仓信号:IF(死叉 AND VARD>50 AND VARD<=70,85,0),STICK,COLORBLUE,LINETHICK2;

{信号图标 - 直接使用条件}
DRAWICON(金叉 AND VARD<30,15,1);
DRAWICON(金叉 AND VARD>30 AND VARD<70,10,1);
DRAWICON(死叉 AND VARD>70,85,2);
DRAWICON(死叉 AND VARD>50 AND VARD<=70,80,2);

{多空强度指标}
多空强度:IF(VARE<>0,(VARD-VARE)/VARE*100,0),COLORYELLOW,LINETHICK1;

{关键位置线}
强势线:20,COLORRED;
弱势线:-20,COLORGREEN;
零轴:0,COLORWHITE;
超买线:80,COLORRED;
超卖线:20,Color6B8E23;
中线:50,ColorA8A8A8;

{多空状态判断}
多头力量:IF(VARD>VARE,VARD-VARE,0),COLORRED;
空头力量:IF(VARD<VARE,VARE-VARD,0),COLORGREEN;

{多空能量柱}
STICKLINE(多头力量>0,0,多头力量,2,0),COLORRED;
STICKLINE(空头力量>0,0,-空头力量,2,0),COLORGREEN;

{预警信号}
VARD_REF1:=REF(VARD,1);
VARD_REF2:=REF(VARD,2);
强力买入:=金叉 AND VARD<20 AND VARD>VARD_REF1 AND VARD_REF1>VARD_REF2;
强力卖出:=死叉 AND VARD>80 AND VARD<VARD_REF1 AND VARD_REF1<VARD_REF2;

DRAWICON(强力买入,VARD,23);
DRAWICON(强力卖出,VARD,15);

{关键位置标记}
DRAWTEXT(ISLASTBAR,80,'超买'),COLORRED;
DRAWTEXT(ISLASTBAR,20,'超卖'),Color6B8E23;
DRAWTEXT(ISLASTBAR,50,'中线'),COLORWHITE;

{多空状态显示 - 修正变量名}
多头条件:=VARD>VARE AND VARD>50;
空头条件:=VARD<VARE AND VARD<50;
DRAWTEXT(多头条件,多空线,'↑多'),COLORYELLOW;
DRAWTEXT(空头条件,多空线,'↓空'),COLORGREEN;

{信号强度指示}
信号强度:=ABS(VARD-VARE);
强买入:=金叉 AND VARD<30 AND 信号强度>5;
强卖出:=死叉 AND VARD>70 AND 信号强度>5;

DRAWTEXT(强买入,25,'强'),COLORRED;
DRAWTEXT(强卖出,75,'强'),COLORGREEN;

{底背离}
价格新低:=L<REF(LLV(L,10),1);
指标未新低:=VARD>REF(LLV(VARD,10),1);
底背离:=价格新低 AND 指标未新低 AND VARD<30;
DRAWICON(底背离,VARD,9);

{顶背离}
价格新高:=H>REF(HHV(H,10),1);
指标未新高:=VARD<REF(HHV(VARD,10),1);
顶背离:=价格新高 AND 指标未新高 AND VARD>70;
DRAWICON(顶背离,VARD,10);

介于上面给出的代码优化:
待改进点
变量命名 - 使用VARx系列命名,可读性较差
魔法数字 - 大量硬编码数值缺乏解释
信号重叠 - 多个信号可能在同一位置重叠显示

{多空指数指标 - 专业优化版}
{版本:2.0 | 日期:2024-12-24 | 优化:可读性、可维护性、信号准确性}

{=== 参数定义区域 ===}
{周期参数}
SHORT_PERIOD := 13;      {短期EMA周期}
LONG_PERIOD := 34;       {通道计算周期}
SMOOTH_PERIOD := 2;      {平滑周期}

{权重参数}
FAST_WEIGHT := 0.333;    {快速权重}
SLOW_WEIGHT := 0.667;    {慢速权重}

{信号阈值参数}
OVERSOLD_LEVEL := 20;     {超卖线}
OVERBOUGHT_LEVEL := 80;   {超买线}
MID_LEVEL := 50;          {多空分界线}
WEAK_LEVEL := -20;        {弱势阈值}
STRONG_LEVEL := 20;       {强势阈值}

{交易信号阈值}
BUY_THRESHOLD := 30;      {买入阈值}
SELL_THRESHOLD := 70;     {卖出阈值}
STRONG_SIGNAL_THRESHOLD := 5; {强信号阈值}

{信号显示位置}
BUY_SIGNAL_POS := 20;     {买入信号位置}
ADD_SIGNAL_POS := 15;     {加仓信号位置}
SELL_SIGNAL_POS := 80;    {卖出信号位置}
REDUCE_SIGNAL_POS := 85;  {减仓信号位置}

{=== 核心指标计算 ===}
{价格中枢:典型价格}
TypicalPrice := (2 * CLOSE + HIGH + LOW) / 4;

{多空通道边界}
LowChannel := LLV(LOW, LONG_PERIOD);     {34周期最低价通道}
HighChannel := HHV(HIGH, LONG_PERIOD);   {34周期最高价通道}

{多空指数:价格在通道中的相对位置}
BBI_Raw := EMA((TypicalPrice - LowChannel) / (HighChannel - LowChannel + 0.000001) * 100, SHORT_PERIOD);

{趋势平滑:减少信号抖动}
BBI_Smooth := EMA(SLOW_WEIGHT * REF(BBI_Raw, 1) + FAST_WEIGHT * BBI_Raw, SMOOTH_PERIOD);

{=== 多空分界线 ===}
多空线: BBI_Raw, COLORGRAY, LINETHICK1;
趋势线: BBI_Smooth, COLORBLUE, LINETHICK1;

{=== 多空区域 ===}
STICKLINE(BBI_Raw > BBI_Smooth, BBI_Raw, BBI_Smooth, 2, 0), COLORRED;
STICKLINE(BBI_Raw < BBI_Smooth, BBI_Raw, BBI_Smooth, 2, 0), COLORGREEN;

{=== 信号条件定义 ===}
金叉条件 := CROSS(BBI_Raw, BBI_Smooth);
死叉条件 := CROSS(BBI_Smooth, BBI_Raw);

{基础信号条件}
低位金叉 := 金叉条件 AND BBI_Raw < BUY_THRESHOLD;
中位金叉 := 金叉条件 AND BBI_Raw >= BUY_THRESHOLD AND BBI_Raw < SELL_THRESHOLD;
高位死叉 := 死叉条件 AND BBI_Raw > SELL_THRESHOLD;
中位死叉 := 死叉条件 AND BBI_Raw > MID_LEVEL AND BBI_Raw <= SELL_THRESHOLD;

{=== 信号优先级处理(避免重叠)===}
买入信号 := IF(低位金叉, BUY_SIGNAL_POS, 0);
加仓信号 := IF(中位金叉 AND NOT(低位金叉), ADD_SIGNAL_POS, 0);  {排除已触发买入信号的情况}
卖出信号 := IF(高位死叉, SELL_SIGNAL_POS, 0);
减仓信号 := IF(中位死叉 AND NOT(高位死叉), REDUCE_SIGNAL_POS, 0);  {排除已触发卖出信号的情况}

{=== 交易信号显示 ===}
买入信号, STICK, COLORRED, LINETHICK3;
加仓信号, STICK, COLORMAGENTA, LINETHICK2;
卖出信号, STICK, COLORGREEN, LINETHICK3;
减仓信号, STICK, COLORBLUE, LINETHICK2;

{=== 信号图标 - 智能去重 ===}
DRAWICON(低位金叉 AND COUNT(低位金叉, 3) = 1, BUY_SIGNAL_POS - 5, 1);  {3周期内首次出现}
DRAWICON(中位金叉 AND COUNT(中位金叉, 3) = 1, ADD_SIGNAL_POS - 5, 1);
DRAWICON(高位死叉 AND COUNT(高位死叉, 3) = 1, SELL_SIGNAL_POS + 5, 2);
DRAWICON(中位死叉 AND COUNT(中位死叉, 3) = 1, REDUCE_SIGNAL_POS + 5, 2);

{=== 多空强度指标 ===}
多空强度: IF(BBI_Smooth <> 0, (BBI_Raw - BBI_Smooth) / BBI_Smooth * 100, 0), COLORYELLOW, LINETHICK1;

{=== 关键位置线 ===}
强势线: STRONG_LEVEL, COLORRED, LINETHICK1;
弱势线: WEAK_LEVEL, COLORGREEN, LINETHICK1;
零轴: 0, COLORWHITE, LINETHICK1;
超买线: OVERBOUGHT_LEVEL, COLORRED, LINETHICK1;
超卖线: OVERSOLD_LEVEL, Color6B8E23, LINETHICK1;
中线: MID_LEVEL, ColorA8A8A8, LINETHICK1;

{=== 多空状态判断 ===}
多头力量: IF(BBI_Raw > BBI_Smooth, BBI_Raw - BBI_Smooth, 0), COLORRED;
空头力量: IF(BBI_Raw < BBI_Smooth, BBI_Smooth - BBI_Raw, 0), COLORGREEN;

{=== 多空能量柱 ===}
STICKLINE(多头力量 > 0, 0, 多头力量, 2, 0), COLORRED;
STICKLINE(空头力量 > 0, 0, -空头力量, 2, 0), COLORGREEN;

{=== 预警信号 ===}
BBI_REF1 := REF(BBI_Raw, 1);
BBI_REF2 := REF(BBI_Raw, 2);

强力买入 := 金叉条件 AND BBI_Raw < OVERSOLD_LEVEL AND BBI_Raw > BBI_REF1 AND BBI_REF1 > BBI_REF2;
强力卖出 := 死叉条件 AND BBI_Raw > OVERBOUGHT_LEVEL AND BBI_Raw < BBI_REF1 AND BBI_REF1 < BBI_REF2;

DRAWICON(强力买入, BBI_Raw, 23);
DRAWICON(强力卖出, BBI_Raw, 15);

{=== 关键位置标记 ===}
DRAWTEXT(ISLASTBAR, OVERBOUGHT_LEVEL, '超买'), COLORRED;
DRAWTEXT(ISLASTBAR, OVERSOLD_LEVEL, '超卖'), Color6B8E23;
DRAWTEXT(ISLASTBAR, MID_LEVEL, '中线'), COLORWHITE;

{=== 多空状态显示 ===}
多头条件 := BBI_Raw > BBI_Smooth AND BBI_Raw > MID_LEVEL;
空头条件 := BBI_Raw < BBI_Smooth AND BBI_Raw < MID_LEVEL;

DRAWTEXT(多头条件, 多空线, '↑多'), COLORYELLOW;
DRAWTEXT(空头条件, 多空线, '↓空'), COLORGREEN;

{=== 信号强度指示 ===}
信号强度 := ABS(BBI_Raw - BBI_Smooth);
强买入 := 金叉条件 AND BBI_Raw < BUY_THRESHOLD AND 信号强度 > STRONG_SIGNAL_THRESHOLD;
强卖出 := 死叉条件 AND BBI_Raw > SELL_THRESHOLD AND 信号强度 > STRONG_SIGNAL_THRESHOLD;

DRAWTEXT(强买入, BUY_SIGNAL_POS, '强'), COLORRED;
DRAWTEXT(强卖出, SELL_SIGNAL_POS, '强'), COLORGREEN;

{=== 背离检测 ===}
{底背离:价格新低但指标未新低}
价格新低 := LOW < REF(LLV(LOW, 10), 1);
指标未新低 := BBI_Raw > REF(LLV(BBI_Raw, 10), 1);
底背离 := 价格新低 AND 指标未新低 AND BBI_Raw < BUY_THRESHOLD;
DRAWICON(底背离, BBI_Raw, 9);

{顶背离:价格新高但指标未新高}
价格新高 := HIGH > REF(HHV(HIGH, 10), 1);
指标未新高 := BBI_Raw < REF(HHV(BBI_Raw, 10), 1);
顶背离 := 价格新高 AND 指标未新高 AND BBI_Raw > SELL_THRESHOLD;
DRAWICON(顶背离, BBI_Raw, 10);

{=== 参数信息显示,短期周期/长期周期/买入阈值/卖出阈值 ===}
DRAWTEXT(ISLASTBAR, 95, '多空指数 v2.0......'), COLORWHITE;
DRAWTEXT(ISLASTBAR, 90, '短13/长34......'), COLORWHITE;
DRAWTEXT(ISLASTBAR, 85, '买30/卖70......'), COLORWHITE;

改进效果总结
可读性提升 - 变量名具有明确业务含义
可维护性增强 - 参数集中管理,修改方便
信号质量优化 - 避免重叠,提高信号准确性
扩展性更好 - 便于后续功能添加和参数优化
这样的改进使得代码既保持了原有功能,又大大提升了可读性和可维护性。

指标功能说明

多空线:短期多空力量指标
趋势线:中长期趋势指标
颜色区域:红色为多头区域,绿色为空头区域
买卖信号:明确的买入、卖出、加仓、减仓信号
关键位置:20为超卖线,50为中线,80为超买线
多空强度:量化多空力量对比
多空标识:在图表上显示”↑多”和”↓空”文字提示
关键位置:20为超卖线,50为中线,80为超买线 具体详解:

超卖线 (20)
含义:当指标低于20时,市场可能处于过度下跌状态
特征
卖压过大,可能出现超跌反弹
下跌动能可能衰竭
可能是买入机会
操作建议:关注买入信号,但需等待确认

中线 (50)
含义:多空力量的平衡点
特征
50以上:多头占优
50以下:空头占优
50附近:多空力量均衡,方向不明
操作建议
上穿50:可能转强,考虑做多
下破50:可能转弱,考虑做空

超买线 (80)
含义:当指标高于80时,市场可能处于过度上涨状态
特征
买盘过度,可能出现回调
上涨动能可能衰竭
可能是卖出机会
操作建议:警惕回调风险,考虑减仓