夜雨聆风学习资料网

ARTICLE · 1251398

火焰顶部多空力度指标(源码)

火焰顶部多空力度指标(源码)

火焰顶部源码把开盘后的上下力度拆成2组,再算成一条比值曲线,分别画成火和山2根柱子。

逻辑

先算向上和向下的力度。开盘比昨收高就取最高价减开盘、开盘减昨收里更大的那个;开盘比昨收低就取开盘减最低、开盘减昨收里更大的那个。

2个力度各自累加5根后相除,得到5日多空对比,再取5日均值。同样的算法在3根窗口上再做一遍,得到3日对比。

火取5日均线连续走弱的根数,山取5日均线连续走强的根数,这2个数直接当成柱子的上下边界。

柱子按条件分色。山大于零时画红柱并叠一层暗黄,山和火都为零画蓝柱,山小于火画绿柱。

盘中还有一道判断。山由零转正的那一根额外拉一根红柱,提示一段上行刚起步。

顶部调整的提示挑在末根K线上。火连续3根为正、当日转零、且前一根火高于山,就在那根柱子上写调整。

参数微调

5和3是多空力度的累加窗口,改大对比更钝,柱子更平。

0.5和1.618是上边界的2档抬升比例,改了会让山的高低位置整体移动。

温馨提示

本指标仅作为知识分享,不构成任何建议。

指标源码

{先算多空两股力量:开盘比昨开高,就把最高价到开盘价的距离记成上冲力,否则记 0;开盘比昨开低,就把开盘价到最低价的距离记成下砸力,否则记 0。}

JX_UP0:=IF(OPEN<=REF(OPEN,1),0,MAX(HIGH-OPEN,OPEN-REF(OPEN,1)));

JX_DN0:=IF(OPEN>=REF(OPEN,1),0,MAX(OPEN-LOW,OPEN-REF(OPEN,1)));

{把两股力量各累加 5 根 K 线,再拿差值除以两者中较大的那个,得到 0 到 1 之间的多空力度比,最后给它做一条 5 日均线。}

JX_UPS0:=SUM(JX_UP0,5);

JX_DNS0:=SUM(JX_DN0,5);

JX_POW0:=IF(JX_UPS0>JX_DNS0,(JX_UPS0-JX_DNS0)/JX_UPS0,IF(JX_UPS0=JX_DNS0,0,(JX_UPS0-JX_DNS0)/JX_DNS0));

JX_POW0MA:=MA(JX_POW0,5);

{从这里起换成 3 根 K 线的窗口,算法和上面完全一样;这一小段会在后面被整段复制很多份,只跟绘图条件挂钩。}

JX_UP1:=IF(OPEN<=REF(OPEN,1),0,MAX(HIGH-OPEN,OPEN-REF(OPEN,1)));

JX_DN1:=IF(OPEN>=REF(OPEN,1),0,MAX(OPEN-LOW,OPEN-REF(OPEN,1)));

JX_UPS1:=SUM(JX_UP1,3);

JX_DNS1:=SUM(JX_DN1,3);

JX_POW1:=IF(JX_UPS1>JX_DNS1,(JX_UPS1-JX_DNS1)/JX_UPS1,IF(JX_UPS1=JX_DNS1,0,(JX_UPS1-JX_DNS1)/JX_DNS1));

JX_POW1MA:=MA(JX_POW1,3);

{火 是离最近一次 5 日均线拐头向下过去了多少根 K 线;山 是最近 5 根里有几根 5 日均线在上行,两个都是图上要显示的中文名,原样保留。}

火: BARSLAST(EMA(CLOSE,5)<REF(EMA(CLOSE,5),1)),  COLORRED;

{用 2 根内的最高收盘价定位一个小高点,数出它到现在过了几根,据此画一条会随根数抬升的回落带;一旦它比前一根低,就改用 3 日均线兜底。}

JX_HH2:=HHV(CLOSE,2);

JX_CNT2:=BARSLAST(JX_HH2<REF(JX_HH2,2));

JX_LLV:=IF(JX_CNT2>=1,LLV(JX_HH2,JX_CNT2),LOW);

JX_BAND:=JX_LLV+JX_LLV*JX_CNT2*0.5/100;

JX_BAND2:=IF(JX_BAND<REF(JX_BAND,1),MA(LOW,3),JX_BAND);

JX_BAND3:=JX_LLV+JX_LLV*(JX_CNT2-1)*1.618/100;

山: COUNT(EMA(CLOSE,5)>REF(EMA(CLOSE,5),1),5);

{下面这几段到 62 行附近,和上面第 7 行那段逐字相同,是同一套力度计算被复制了多份,算法没变,只是各挂各的绘图条件,不必逐段细看。}

JX_UP2:=IF(OPEN<=REF(OPEN,1),0,MAX(HIGH-OPEN,OPEN-REF(OPEN,1)));

JX_DN2:=IF(OPEN>=REF(OPEN,1),0,MAX(OPEN-LOW,OPEN-REF(OPEN,1)));

JX_UPS2:=SUM(JX_UP1,3);

JX_DNS2:=SUM(JX_DN1,3);

JX_POW2:=IF(JX_UPS1>JX_DNS1,(JX_UPS1-JX_DNS1)/JX_UPS1,IF(JX_UPS1=JX_DNS1,0,(JX_UPS1-JX_DNS1)/JX_DNS1));

JX_POW2MA:=MA(JX_POW1,3);

{再算一个 9 根窗口的随机指标原始值,衡量收盘价落在 9 根最高最低区间里的相对位置。}

JX_RSV9:=(CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100;

{接下来用 山 和 火 的取值组合,在图上打出红黄蓝绿几根竖向色带。}

STICKLINE(山>0,火,0,2,0),  COLORRED;

JX_UP3:=IF(OPEN<=REF(OPEN,1),0,MAX(HIGH-OPEN,OPEN-REF(OPEN,1)));

JX_DN3:=IF(OPEN>=REF(OPEN,1),0,MAX(OPEN-LOW,OPEN-REF(OPEN,1)));

JX_UPS3:=SUM(JX_UP1,3);

JX_DNS3:=SUM(JX_DN1,3);

JX_POW3:=IF(JX_UPS1>JX_DNS1,(JX_UPS1-JX_DNS1)/JX_UPS1,IF(JX_UPS1=JX_DNS1,0,(JX_UPS1-JX_DNS1)/JX_DNS1));

JX_POW3MA:=MA(JX_POW1,3);

STICKLINE(山>0,火,山,2,1),  COLORF0F000;

JX_UP4:=IF(OPEN<=REF(OPEN,1),0,MAX(HIGH-OPEN,OPEN-REF(OPEN,1)));

JX_DN4:=IF(OPEN>=REF(OPEN,1),0,MAX(OPEN-LOW,OPEN-REF(OPEN,1)));

JX_UPS4:=SUM(JX_UP1,3);

JX_DNS4:=SUM(JX_DN1,3);

JX_POW4:=IF(JX_UPS1>JX_DNS1,(JX_UPS1-JX_DNS1)/JX_UPS1,IF(JX_UPS1=JX_DNS1,0,(JX_UPS1-JX_DNS1)/JX_DNS1));

JX_POW4MA:=MA(JX_POW1,3);

STICKLINE(山=0 AND 火=0,0,1,4,1),  COLORBLUE;

JX_UP5:=IF(OPEN<=REF(OPEN,1),0,MAX(HIGH-OPEN,OPEN-REF(OPEN,1)));

JX_DN5:=IF(OPEN>=REF(OPEN,1),0,MAX(OPEN-LOW,OPEN-REF(OPEN,1)));

JX_UPS5:=SUM(JX_UP1,3);

JX_DNS5:=SUM(JX_DN1,3);

JX_POW5:=IF(JX_UPS1>JX_DNS1,(JX_UPS1-JX_DNS1)/JX_UPS1,IF(JX_UPS1=JX_DNS1,0,(JX_UPS1-JX_DNS1)/JX_DNS1));

JX_POW5MA:=MA(JX_POW1,3);

STICKLINE(山<火,火,山,1,0),  COLOR00FF00;

JX_UP6:=IF(OPEN<=REF(OPEN,1),0,MAX(HIGH-OPEN,OPEN-REF(OPEN,1)));

JX_DN6:=IF(OPEN>=REF(OPEN,1),0,MAX(OPEN-LOW,OPEN-REF(OPEN,1)));

JX_UPS6:=SUM(JX_UP1,3);

JX_DNS6:=SUM(JX_DN1,3);

JX_POW6:=IF(JX_UPS1>JX_DNS1,(JX_UPS1-JX_DNS1)/JX_UPS1,IF(JX_UPS1=JX_DNS1,0,(JX_UPS1-JX_DNS1)/JX_DNS1));

JX_POW6MA:=MA(JX_POW1,3);

JX_RSV5:=(CLOSE-LLV(LOW,5))/(HHV(HIGH,5)-LLV(LOW,5))*10;

JX_UP7:=IF(OPEN<=REF(OPEN,1),0,MAX(HIGH-OPEN,OPEN-REF(OPEN,1)));

JX_DN7:=IF(OPEN>=REF(OPEN,1),0,MAX(OPEN-LOW,OPEN-REF(OPEN,1)));

JX_UPS7:=SUM(JX_UP1,3);

JX_DNS7:=SUM(JX_DN1,3);

JX_POW7:=IF(JX_UPS1>JX_DNS1,(JX_UPS1-JX_DNS1)/JX_UPS1,IF(JX_UPS1=JX_DNS1,0,(JX_UPS1-JX_DNS1)/JX_DNS1));

JX_POW7MA:=MA(JX_POW1,3);

{最后在 山 由 0 转正的当天补一根红条,并在 火 连续为正后第一次归零、且高于 山 时标注调整字样。}

STICKLINE(REF(山,1)=0 AND 山>0,0,-1,2,0),  COLORRED;

DRAWTEXT(REF(火,3)>0 AND REF(火,2)>0 AND REF(火,1)>0 AND 火=0 AND REF(火,1)>山,REF(火,1),'调整'),COLORYELLOW ;

相关学习资料