ARTICLE · 1299597
金叉转折指标:为什么金叉不管用(源码)
老指标的另一种排法
差离值还是那个算法:十二日均线减二十六日均线。它再做九日平滑,就是信号线。
不一样的地方在后面。柱子画的是差离值的两倍,零轴上方用红、下方用青。上升段里柱子缩短,说明推力在减;下降段里柱子缩短,说明抛压在减。
这三样东西摆在一起,是最常见的组合。真正省事的地方在于,它把后面的判断都画好了。
转折线怎么来的
它另外取了一条转折线:按最近两根 K 线的最高最低,哪个更近就用哪个。
收盘价从下往上穿过这条线,算一次向上突破;从上往下穿过,算向下。突破之后走了几根 K 线,它用另一个数记着。
这条线的好处是它会跟着价格走,不是固定的均线。价格贴着它走的时候,突破就很频繁;离得远的时候,一次突破就很有分量。
图标都在标什么
上下两个小图标,标的是突破的方向。
旁边还有小圆点。小圆点的条件是:柱子连续三根在收缩,然后突然放大。这个形态在转折处最常见,比金叉早半步。
柱子的最大最小也单独记了一份。零轴上方取这一段的柱子高点,下方取低点,用来判断现在的柱子算大还是算小。
三点提醒
一是它的平滑参数是固定的。十二、二十六、九是默认值,换到别的周期要整体缩放。
二是柱子翻红不等于转多。零轴下方的红柱只说明跌势在放缓。
三是图标密度高的地方,往往是震荡区。那一段的圆点不要单独看,要等柱子站上零轴。
温馨提示
1、指标:www.logic88.cn
2、本指标仅作为知识分享,不构成任何建议。


指标源码
{差离值:十二日均线减二十六日均线}
QS_DIF:=(EMA(CLOSE,12) - EMA(CLOSE,26));
{它再做九日平滑,得到信号线}
QS_DEA:=EMA(QS_DIF,9);
QS_HIST:=(2 * (QS_DIF - QS_DEA));
{差离值上穿零轴}
QS_CROSS_UP0:=CROSS(QS_DIF,0);
QS_CROSS_DN0:=CROSS(0,QS_DIF);
{上穿之后走了多少根 K 线}
QS_BARS_UP0:=BARSLAST(QS_CROSS_UP0);
QS_BARS_DN0:=BARSLAST(QS_CROSS_DN0);
QS_UP0_REF:=REF(QS_CROSS_UP0,1);
QS_DN0_REF:=REF(QS_CROSS_DN0,1);
QS_BARS_UP3:=BARSLAST(QS_UP0_REF);
QS_BARS_DN3:=BARSLAST(QS_DN0_REF);
{按最近两根 K 线的最高最低取一条转折线}
QS_SWING_LINE:=IF((QS_BARS_UP3 < QS_BARS_DN3),REF(HHV(HIGH,2),QS_BARS_UP3),REF(LLV(LOW,2),QS_BARS_DN3));
{收盘从下往上穿过这条转折线}
QS_BREAK_UP:=(((REF(CLOSE,1) <= REF(QS_SWING_LINE,1)) AND (CLOSE > QS_SWING_LINE)) AND (QS_BARS_UP0 < QS_BARS_DN0));
QS_BREAK_DN:=(((REF(CLOSE,1) >= REF(QS_SWING_LINE,1)) AND (CLOSE < QS_SWING_LINE)) AND (QS_BARS_DN0 < QS_BARS_UP0));
QS_UP1:=(QS_BREAK_UP AND (COUNT(QS_BREAK_UP,QS_BARS_UP0) = 1));
QS_DN1:=(QS_BREAK_DN AND (COUNT(QS_BREAK_DN,QS_BARS_DN0) = 1));
QS_UP2:=(QS_UP1 AND (REF(BARSLAST(QS_DN1),1) < REF(BARSLAST(QS_UP1),1)));
QS_DN2:=(QS_DN1 AND (REF(BARSLAST(QS_DN1),1) > REF(BARSLAST(QS_UP1),1)));
QS_UP3:=(QS_UP1 AND (REF(BARSLAST(QS_DN1),1) > REF(BARSLAST(QS_UP1),1)));
QS_DN3:=(QS_DN1 AND (REF(BARSLAST(QS_DN1),1) < REF(BARSLAST(QS_UP1),1)));
QS_BS_LINE:=IF((BARSLAST(QS_UP2) < BARSLAST(QS_DN2)),IF(REF(CROSS(0,QS_HIST),1),LLV(LOW,2),REF(LLV(LOW,2),BARSLAST(REF(CROSS(0,QS_HIST),1)))),IF(REF(CROSS(QS_HIST,0),1),HHV(HIGH,2),REF(HHV(HIGH,2),BARSLAST(REF(CROSS(QS_HIST,0),1)))));
{上下两处图标,分别标出突破的方向}
DRAWICON((QS_UP1 OR (BARSLAST(QS_UP1) < BARSLAST(QS_DN1))),0, 0);
DRAWICON((QS_DN1 OR (BARSLAST(QS_UP1) > BARSLAST(QS_DN1))),0,0) ;
{柱子在零轴上方用红色}
STICKLINE((QS_HIST >= 0),0,QS_HIST,2,1),COLORRED ;
STICKLINE(((QS_HIST >= 0) AND (QS_HIST < REF(QS_HIST,1))),0,QS_HIST,2,0),COLORRED;
STICKLINE((QS_HIST < 0),0,QS_HIST,2,0),COLORFFFF00;
STICKLINE(((QS_HIST < 0) AND (QS_HIST > REF(QS_HIST,1))),0,QS_HIST,2,1),COLORFFFF00;
{差离值单独画一条粗黄线}
QS_DIF_OUT:QS_DIF,LINETHICK2,COLORYELLOW;
QS_DEA_OUT:QS_DEA ,COLORLIMAGENTA ;
QS_HIST_OUT:QS_HIST,LINETHICK0,COLORFFFF00 ;
STICKLINE((CLOSE > 0),0,0,0 ,0) ;
{离零轴最近一次交叉到现在的天数}
QS_UP_BARS:=BARSLAST(CROSS(QS_HIST,0));
QS_DN_BARS:=BARSLAST(CROSS(0,QS_HIST));
{零轴上方的柱子高度取这一段的最大值}
QS_HIST_HI:=IF((QS_HIST >= 0),HHV(QS_HIST,(QS_UP_BARS + 1)),REF(HHV(QS_HIST,(QS_UP_BARS + 1)),(QS_DN_BARS + 1)));
QS_HIST_LO:=IF((QS_HIST < 0),LLV(QS_HIST,(QS_DN_BARS + 1)),REF(LLV(QS_HIST,(QS_DN_BARS + 1)),(QS_UP_BARS + 1)));
QS_HIST_HI2:=REF(QS_HIST_HI,(QS_UP_BARS + 1));
QS_HIST_LO2:=REF(QS_HIST_LO,(QS_DN_BARS + 1));
{连续三根柱子缩小之后再放大,标出小圆点}
DRAWICON(((((LLV(QS_HIST,4) > 0) AND (QS_HIST < REF(QS_HIST,1))) AND (REF(QS_HIST,1) > REF(QS_HIST,2))) AND (REF(QS_HIST,2) > REF(QS_HIST,3))),QS_HIST,2) ;
DRAWICON(((((HHV(QS_HIST,4) < 0) AND (QS_HIST > REF(QS_HIST,1))) AND (REF(QS_HIST,1) < REF(QS_HIST,2))) AND (REF(QS_HIST,2) < REF(QS_HIST,3))),QS_HIST,1);
DRAWICON(((((QS_DN1 OR (BARSLAST(QS_UP1) > BARSLAST(QS_DN1))) AND (QS_HIST >= 0)) AND (REF(QS_HIST,1) < REF(QS_HIST_HI2,1))) AND (QS_HIST > QS_HIST_HI2)),QS_HIST,12) ;
DRAWICON(((((QS_UP1 OR (BARSLAST(QS_UP1) < BARSLAST(QS_DN1))) AND (QS_HIST < 0)) AND (REF(QS_HIST,1) > REF(QS_HIST_LO2,1))) AND (QS_HIST < QS_HIST_LO2)),QS_HIST,12);
源码,原文一键复制















































































