OBV_X3
{OBV_X3
【背景】考虑到OBV_X03在情况1的时候,采用的是寻找波段线的同价K线,
但是由于此种情况下必须使用CONST(C)或通过输入参数CONSTCC设定固定值,
无法当前K线的CLOSE同时变化,所以改进为OBV_X03
【效果】此指标的卖出信号对大盘、创业板指数15分钟其准确,虽然不能做
到每次见顶都发出信号,但是只要一出信号,0.5-1个月内一定会有大跌25%的情况
同时情况TJ调整位1, 2,分别对应情况TJ11,20 和 12, 30
同时还能提示OBV突破向下、向上的
【文档】REF: G:\D电子书\29 股票\MY选股公式\OBV背离(OBV_X)\README.DOCX
CONSTCC: 2095.00
}
{INFO}
INFO:='此指标的卖出信号对大盘、创业板指数15分钟及其准确(尤其当和前一个大峰顶中间间隔1个以上小峰时)。只要一有S,0.5-1个月内一定会有大跌25%的情况';
DRAWTEXT_FIX(ISLASTBAR, 0,35, 0, INFO ),COLOR00FF00;
{=======================OBV变量定义=============================}
VA:=IF(CLOSE>REF(CLOSE,1),VOL,-VOL), NODRAW;
OBV:SUM(IF(CLOSE=REF(CLOSE,1),0,VA),0);
MAOBV:=MA(OBV,M){, NODRAW};
{ICONPOS:=OBV{TAN_OUT}
{=======================DAY分隔线=======================}
{结果从0到13,依次分别是1/5/15/30/60分钟,日/周/月,多分钟,}
5分钟 := (1==PERIOD);
十五分钟:= (2==PERIOD);
30分钟:= (3==PERIOD);
60分钟:= (4==PERIOD);
日线 := (5==PERIOD);
{DRAWKLINE(H,O,L,C);}
A:=REF(OBV,BARSLAST(IF(CURRBARSCOUNT<=CONST(BARSLAST(DAY!=REF(DAY,1))+7*0+1),OBV,DRAWNULL)));
ISNEWDAY:= REF(DAY,1)!=DAY AND(2==PERIOD);
STICKLINE(ISNEWDAY,OBV*0.5,OBV*1.5,0,0),COLORYELLOW;
DRAWTEXT(ISNEWDAY, OBV*1.5, VAR2STR(DATE+19000000-20170000, 0) );
{========================OBV 和价格的关系===============================}
PREDAYBAR : REF(BARSLAST(ISNEWDAY), 1)+1+1, NODRAW;
BAR_H:HHVBARS(C, 44*4*4), NODRAW;
BAR_L:LLVBARS(C, 44*4*4), NODRAW;
P_L:REF(C, BAR_L), NODRAW;
P_H:REF(C, BAR_H), NODRAW;
OBV_L:REF(OBV, BAR_L), NODRAW;
OBV_H:REF(OBV, BAR_H), NODRAW;
DELT_P12 :100*(C-P_L)/(P_H-P_L), NODRAW;
DELT_OBV12:100*(OBV-OBV_L)/(OBV_H-OBV_L), NODRAW;
P_OBV:DELT_P12/DELT_OBV12, NODRAW;
DRAWTEXT(ISNEWDAY AND P_OBV>=0.5, OBV*0.5, VAR2STR(P_OBV, 2) ), COLORYELLOW;
DRAWTEXT(ISNEWDAY AND P_OBV<0.5 , OBV*0.5, VAR2STR(P_OBV, 2) ), COLORRED;
{========================OBV背离===============================}
{ZIG 顶底定义}
ZIGT2:=1{ZIGT/6};
L6底 :=ZIG(3,ZIGT)>REF(ZIG(3,ZIGT),1) AND REF(ZIG(3,ZIGT),1)<=REF(ZIG(3,ZIGT),2) AND REF(ZIG(3,ZIGT),2)<=REF(ZIG(3,ZIGT),3);
L6顶 :=ZIG(3,ZIGT)<REF(ZIG(3,ZIGT),1) AND REF(ZIG(3,ZIGT),1)>=REF(ZIG(3,ZIGT),2) AND REF(ZIG(3,ZIGT),2)>=REF(ZIG(3,ZIGT),3) ;
L1底:=ZIG(3,ZIGT2)>REF(ZIG(3,ZIGT2),1) AND REF(ZIG(3,ZIGT2),1)<=REF(ZIG(3,ZIGT2),2) AND REF(ZIG(3,ZIGT2),2)<=REF(ZIG(3,ZIGT2),3);
L1顶:=ZIG(3,ZIGT2)<REF(ZIG(3,ZIGT2),1) AND REF(ZIG(3,ZIGT2),1)>=REF(ZIG(3,ZIGT2),2) AND REF(ZIG(3,ZIGT2),2)>=REF(ZIG(3,ZIGT2),3) ;
{向前最多寻找4个同价的参照BAR,对OBV的变动进行比较}
{ZIG BAR}
L6_BOTTOM_BAR1:=BARSLAST(L6底)+1, NODRAW;
L6_BOTTOM_BAR2:=REF(BARSLAST(L6底), L6_BOTTOM_BAR1)+L6_BOTTOM_BAR1, NODRAW;
L6_TOP_BAR1:=BARSLAST(L6顶)+1, NODRAW;
L6_TOP_BAR2:=REF(BARSLAST(L6底), L6_TOP_BAR1)+L6_TOP_BAR1, NODRAW;
MIN_ZIG_BAR:=MIN(L6_BOTTOM_BAR1, L6_TOP_BAR1), NODRAW;
MAX_ZIG_BAR:=MAX(L6_BOTTOM_BAR1, L6_TOP_BAR1), NODRAW;
DELT顶1:=ABS(REF(C, L6_TOP_BAR1)-REF(C, L6_TOP_BAR2)), NODRAW;
DELT顶2:=0.33*(REF(C, L6_TOP_BAR1)-REF(C, L6_BOTTOM_BAR1)), NODRAW;
DELT顶3:=0.50*(REF(C, L6_TOP_BAR1)-REF(C, L6_BOTTOM_BAR1)), NODRAW;
DELT顶:=MIN(DELT顶3, MAX(DELT顶1, DELT顶2)), NODRAW;
DELT底1:=ABS(REF(C, L6_BOTTOM_BAR1)-REF(C, L6_BOTTOM_BAR2)), NODRAW;
DELT底2:=0.33*(REF(C, L6_TOP_BAR1)-REF(C, L6_BOTTOM_BAR1)), NODRAW;
DELT底3:=0.50*(REF(C, L6_TOP_BAR1)-REF(C, L6_BOTTOM_BAR1)), NODRAW;
DELT底:=MIN(DELT底3, MAX(DELT底1, DELT底2)), NODRAW;
{状态1:当前价格处于前一ZIG峰谷价格范围内}
{状态10:前一ZIG峰谷上部}
TJ10C:=REF(CLOSE, L6_TOP_BAR1), NODRAW;
TJ10DELT:-DELT顶, NODRAW;
TJ10:= CLOSE>REF(CLOSE, L6_TOP_BAR1)-DELT顶; {BOTTOM_BAR>TOP_BAR从顶部降下来}
TJ11:= L6_BOTTOM_BAR1>L6_TOP_BAR1 AND TJ10; {BOTTOM_BAR>TOP_BAR从顶部降下来}
LASTBAR10:=BARSLAST(L1顶)+1;
{状态20:前一ZIG峰谷下部}
TJ20C:=REF(CLOSE, L6_BOTTOM_BAR1), NODRAW;
TJ20DELT:DELT底, NODRAW;
TJ20:= CLOSE<REF(CLOSE, L6_BOTTOM_BAR1)+DELT底; {BOTTOM_BAR<TOP_BAR从底部升下来}
TJ21:= L6_BOTTOM_BAR1<L6_TOP_BAR1 AND TJ20; {BOTTOM_BAR<TOP_BAR从底部升下来}
LASTBAR20:=BARSLAST(L1底)+1;
{参照点计算}
REF_BAR: IF (TJ10, LASTBAR10,
IF (TJ20, LASTBAR20,
0)), NODRAW, COLORGREEN;
{FOR DEBUG——配合对CONSTC的调节,使用}
{INFO_TJ: 2016=YEAR AND 7=MONTH AND 15=DAY AND 14=HOUR AND 0=MINUTE AND NOT(ISLASTBAR);}
{INFO_A:=STRCAT('INFO_A=', STRCAT(CON2STR(REF(MONTH, REF_BAR_A), 0), STRCAT('-', STRCAT(CON2STR(REF(DAY, REF_BAR_A), 0), STRCAT(' ', STRCAT(CON2STR(REF(HOUR, REF_BAR_A), 0), STRCAT(':', CON2STR(REF(MINUTE, REF_BAR_A), 0)) ))))));}
{角度计算方法1:将四个参照点的角度求平均}
{通过归一化,将TAN1,TAN2,变成0-100的数值}
DELT_CLOSE:CLOSE-REF(CLOSE, REF_BAR), NODRAW;
DELT_OBV: OBV-REF(OBV, REF_BAR), NODRAW;
TAN_C :100*DELT_CLOSE/ABS(REF(CLOSE, REF_BAR)), NODRAW;
TAN_O :100*DELT_OBV/ABS(REF(OBV, REF_BAR)), NODRAW;
TAN_CO_UP:100*(TAN_C-TAN_O), NODRAW;
TAN_CO_DOWN:(100*100+TAN_C*TAN_O), NODRAW;
TAN_CO: IF (0=REF_BAR, 0, 100*(TAN_C-TAN_O)/(100*100+TAN_C*TAN_O) ), COLORWHITE, NODRAW;
BEILI10:=DELT_CLOSE>0 AND DELT_OBV<0, NODRAW;{价升量跌}
BEILI20:=DELT_CLOSE<0 AND DELT_OBV>0, NODRAW;{价跌量升}
BEILI: IF (BEILI10, 10,
IF (BEILI20, 20,
0)), NODRAW;
{B/S}
{注意不一定是价升量跌才是卖出信号,高位价跌量升也是卖出信号}
TJ: IF (TJ10, 10,
IF (TJ20, 20,
IF (TJ11, 11,
IF (TJ21, 21,
0)))), NODRAW;
WS: IF(TJ10 AND BEILI=10, 1, 0), COLORRED, NODRAW;{WARNNING}
WB: IF(TJ20 AND BEILI=20, 1, 0), COLORGREEN, NODRAW;{WARNNING}
S: IF(TJ11 AND BEILI>0, 1, 0), COLORRED, NODRAW;{LIFE AND DEATH}
B: IF(TJ21 AND BEILI>0, 1, 0), COLORGREEN, NODRAW;{LIFE AND DEATH}
{显示}
TAN_OUT:TAN_CO, NODRAW;
MATAN12:MA(TAN_CO,M), NODRAW;
{
DRAWICON(WS, ICONPOS*1.005, 6);
DRAWICON(WB, ICONPOS*0.995, 5);
DRAWICON(S, ICONPOS*1.01, 8);
DRAWICON(B, ICONPOS*0.99, 7);
DRAWICON(WS AND NOT(S), ICONPOS*1.005, 6);
DRAWICON(WB AND NOT(B), ICONPOS*0.995, 5);
DRAWICON(S, ICONPOS*1.01, 8);
DRAWICON(B, ICONPOS*0.99, 7);
}
{========================箱体突破===============================}
支撑价:LLV(OBV,34) ,COLOR7FFF00,LINETHICK2;
阻力价:HHV(OBV,19),COLORFF9900, LINETHICK2;
BOXDOWN:=支撑价<REF(支撑价, 1) AND REF(支撑价, 1)<REF(支撑价, 2) AND REF(支撑价, 2)<REF(支撑价, 3) AND REF(支撑价, 3)<REF(支撑价, 4), NODRAW;{60分钟内连续下跌}
BOXDUP :=阻力价>REF(阻力价, 1) AND REF(阻力价, 1)>REF(阻力价, 2) AND REF(阻力价, 2)>REF(阻力价, 3) AND REF(阻力价, 3)>REF(阻力价, 4), NODRAW;{60分钟内连续下跌}
{
DRAWICON(BOXDOWN, ICONPOS*0.985, 2);
DRAWICON(BOXDUP, ICONPOS*1.015, 1);
};
OBV_X3的更多相关文章
随机推荐
- java(6) ArrayList源码
系统环境: JDK 1.7 成员变量 //默认的初始化数组大小 private static final int DEFAULT_CAPACITY = 10; //空的对象数组 private sta ...
- sencha touch list(列表) item(单行)单击事件触发顺序
测试代码如下 Ext.define('app.view.new.List', { alternateClassName: 'newList', extend: 'app.view.util.MyLis ...
- 利用Jenkins未授权获取服务器权限--Docker还来干扰--一次渗透的经历
Jenkins获取权限的过程 Jenkins存在未授权访问漏洞 Jenkins存在未授权访问漏洞,且项目具有读取权限,通过项目的日志获取到一个账号密码,尝试登录成功,打开控制台成功. 备注:控制台一般 ...
- Windows Phone 8.1 Update Preview backup失败的解决方法
当前使用的是开发者预览版(8.10.14219.341),最近一直无法备份text + apps + settings,进度条达到97%或99%以后提示: There was a problem ba ...
- Visual Studio 2012创建SQL Server Database Project提示失败解决方法
新建一个SQL Server Database Project,提示: Unable to open Database project This version of SQL Server Data ...
- Android中openmax实现框架
OMX中 OMXNodeInstance 负责创建并维护不同的实例,这些实例是根据上面需求创建的,以node作为唯一标识.这样播放器中每个OMXCodec在OMX服务端都对应有了自己的OMXNodeI ...
- Nhibernate学习
Contains 缓存中是否存在SessionFactoryBizCom.GetInstance().GetCurrentSession().Contains(t1) Evict 临时状态(Trans ...
- 一个简单web系统的接口性能分析及调优过程
在测试一个简单系统接口性能压力时,压到一定数量,程序总是崩溃,查看相关机器相关数据时,CPU.内存.IO占用均不高,问题自然出现在其它地方先介绍下系统部件架构 Resin版本为:[root@local ...
- 从Spring到SpringBoot构建WEB MVC核心配置详解
目录 理解Spring WEB MVC架构的演变 认识Spring WEB MVC 传统时代的Spring WEB MVC 新时代Spring WEB MVC SpringBoot简化WEB MVC开 ...
- win10拖拽的问题
以前很多可以支持托砖的到了win10都不行了 解决 按Windows键+R,打开“运行”对话框:输入regedit,回车或确定. 依次找到以下键值HKEY_LOCAL_MACHINE\SOFTWA ...