文华波段掘进主图指标源码
发布日期: 2025-10-27 | 阅读量:27
N:=100;
// 识别波段高点 (HD)
A1:=REF(C,N)=HHV(C,N*2);
B1:=FILTER(A1,N);
C1:=BACKSET(B1,N+1);
HD:=FILTER(C1,N);
BOX_TOP:=REF(H,BARSLAST(HD));
//STICKLINE(C,BOX_TOP,BOX_TOP,6,0),COLORRED;
// 识别波段低点 (LD)
A2:=REF(C,N)=LLV(C,N*2);
B2:=FILTER(A2,N);
C2:=BACKSET(B2,N+1);
LD:=FILTER(C2,N);
BOX_BOT:=REF(L,BARSLAST(LD));
//STICKLINE(C,BOX_BOT,BOX_BOT,6,0),COLORGREEN;
// FVG 条件和填充(保持原始逻辑)
COND1:=CROSS(C,BOX_TOP);
COND2:=CROSS(BOX_BOT,C);
// 看涨 ORDER BLOCK:波段低点前的最后一个下跌关闭 K 线
TEMP_LD:=BARSLAST(LD); // 波段低点距今的柱数
BULL_OB_POS:=BARSLAST(C<O AND TEMP_LD>0 AND BARSSINCE(C<O)<TEMP_LD); // 优化定位:LD前的最后一个下跌K线
BULL_OB_TOP:=IF(TEMP_LD>0 AND BULL_OB_POS>0, REF(H,BULL_OB_POS), 0); // 看涨 OB 的顶部
BULL_OB_BOT:=IF(TEMP_LD>0 AND BULL_OB_POS>0, REF(L,BULL_OB_POS), 0); // 看涨 OB 的底部
//FILLRGN(BACKSET(ISLASTBAR,BARSLAST(BULL_OB_TOP>0&&REF(L,1)>REFX1(HHV(H,BARSLAST(BULL_OB_TOP>0)+1),10000))+1),REF(H,BARSLAST(BULL_OB_TOP>0&&REF(L,1)>REFX1(HHV(H,BARSLAST(BULL_OB_TOP>0)+1),10000))),REF(L,BARSLAST(BULL_OB_TOP>0&&REF(L,1)>REFX1(HHV(H,BARSLAST(BULL_OB_TOP>0)+1),10000))), COLOR8C4BD86A); // 看涨 OB 用绿色填充
// 看跌 ORDER BLOCK:波段高点前的最后一个上涨关闭 K 线
TEMP_HD:=BARSLAST(HD); // 波段高点距今的柱数
BEAR_OB_POS:=BARSLAST(C>O AND TEMP_HD>0 AND BARSSINCE(C>O)<TEMP_HD); // 优化定位:HD前的最后一个上涨K线
BEAR_OB_TOP:=IF(TEMP_HD>0 AND BEAR_OB_POS>0, REF(H,BEAR_OB_POS), 0); // 看跌 OB 的顶部
BEAR_OB_BOT:=IF(TEMP_HD>0 AND BEAR_OB_POS>0, REF(L,BEAR_OB_POS), 0); // 看跌 OB 的底部
//FILLRGN(BACKSET(ISLASTBAR,BARSLAST(BEAR_OB_TOP>0&&REF(L,1)>REFX1(HHV(H,BARSLAST(BEAR_OB_TOP>0)+1),10000))+1), REF(H,BARSLAST(BEAR_OB_TOP>0&&REF(L,1)>REFX1(HHV(H,BARSLAST(BEAR_OB_TOP>0)+1),10000))),REF(L,BARSLAST(BEAR_OB_TOP>0&&REF(L,1)>REFX1(HHV(H,BARSLAST(BEAR_OB_TOP>0)+1),10000))),COLOR4CFF7F9D); // 看跌 OB 用红色填充
// --------------------------
// 2. 看涨 OB(订单区)
// 定义:在波段低点(LD/BOX_BOT)出现前的最后一根下跌收盘K线
// 思路:以波段低点出现时的索引 BULLINDEX 为基准,取其前一根K线作为 OB
// --------------------------
BULLINDEX:=BARSLAST(LD); // LD所在的K线距今周期数
BULLOBINDEX:=BULLINDEX; // 取LD之前的那根K线
BULLOBHIGH:=REF(H, BULLOBINDEX);
BULLOBLOW :=REF(L, BULLOBINDEX);
//FILLRGN(BACKSET(ISLASTBAR, BULLOBINDEX), BULLOBHIGH, BULLOBLOW, RGB(110,552,130,100));
// --------------------------
// 3. 看跌 OB(订单区)
// 定义:在波段高点(HD/BOX_TOP)出现前的最后一根上涨收盘K线
// 思路:以波段高点所在的K线 BULLINDEX 为基准,取其前一根K线作为 OB
// --------------------------
BEARINDEX:=BARSLAST(HD); // HD所在的K线距今周期数
BEAROBINDEX:=BEARINDEX; // 取HD之前的那根K线
BEAROBHIGH:=REF(H, BEAROBINDEX);
BEAROBLOW :=REF(L, BEAROBINDEX);
//FILLRGN(BACKSET(ISLASTBAR, BEAROBINDEX), BEAROBHIGH, BEAROBLOW, RGB(180,360,200,190));
//N:=1;
高:=H>HV(H,N),NODRAW;
高N:=BARSLAST(高)+1;
低:=L<LV(L,N),NODRAW;
低N:=BARSLAST(低)+1;
高A:=BACKSET(COUNT(低,高N)&&低,高N);
低A:=BACKSET(COUNT(高,低N)&&高,低N);
DRAWLINE1(CROSS(高A=1,0.5),H,CROSS(低A=1,0.5),L,0),LINETHICK2,COLORBLUE;
DRAWLINE1(CROSS(低A=1,0.5),L,CROSS(高A=1,0.5),H,0),LINETHICK2,COLORMAGENTA;
DRAWLINE3(ISLASTBAR&&BARSLAST(CROSS(高A=1,0.5))<BARSLAST(CROSS(低A=1,0.5)),L,0,1,REF(H,BARSLAST(CROSS(高A=1,0.5))),BARSLAST(CROSS(高A=1,0.5)),0),COLORBLUE,LINETHICK2;
DRAWLINE3(ISLASTBAR&&BARSLAST(CROSS(高A=1,0.5))>BARSLAST(CROSS(低A=1,0.5)),H,0,1,REF(L,BARSLAST(CROSS(低A=1,0.5))),BARSLAST(CROSS(低A=1,0.5)),0),COLORMAGENTA,LINETHICK2;
SH:=VALUEWHEN(CROSS(高A=1,0.5),H);
SL:=VALUEWHEN(CROSS(低A=1,0.5),L);
DRAWSL(CROSS(高A=1,0.5),SH,0,5,0,COLORWHITE),LINETHICK2;
DRAWSL(CROSS(高A=1,0.5),SH-(SH-SL)*0.618,0,5,0,COLORWHITE),LINETHICK3;
DRAWSL(CROSS(高A=1,0.5),SH-(SH-SL)*0.382,0,5,0,COLORWHITE),LINETHICK3;
DRAWSL(CROSS(高A=1,0.5),SH-(SH-SL)*0.5,0,5,0,COLORWHITE),LINETHICK3;
DRAWSL(CROSS(高A=1,0.5),SH-(SH-SL)*0.786,0,5,0,COLORWHITE),LINETHICK3;
DRAWSL(CROSS(高A=1,0.5),SH-(SH-SL)*0.886,0,5,0,COLORWHITE),LINETHICK3;
DRAWLINE(CROSS(高A=1,0.5),SH,1,SH-(SH-SL)*0.886,COLORWHITE),LINETHICK3;
DRAWSL(CROSS(低A=1,0.5),SL,0,5,0,COLORMAGENTA),LINETHICK2;
DRAWSL(CROSS(低A=1,0.5),SL+(SH-SL)*0.618,0,5,0,COLORMAGENTA),LINETHICK3;
DRAWSL(CROSS(低A=1,0.5),SL+(SH-SL)*0.382,0,5,0,COLORMAGENTA),LINETHICK3;
DRAWSL(CROSS(低A=1,0.5),SL+(SH-SL)*0.5,0,5,0,COLORMAGENTA),LINETHICK3;
DRAWSL(CROSS(低A=1,0.5),SL+(SH-SL)*0.786,0,5,0,COLORMAGENTA),LINETHICK3;
DRAWSL(CROSS(低A=1,0.5),SL+(SH-SL)*0.886,0,5,0,COLORMAGENTA),LINETHICK3;
DRAWLINE(CROSS(低A=1,0.5),SL,1,SL+(SH-SL)*0.886,COLORMAGENTA),LINETHICK3;
DRAWHORIZONTALLINE(CROSS(高A=1,0.5)||CROSS(低A=1,0.5),IF(CROSS(高A=1,0.5),SH,NULL),COLORWHITE),LINETHICK2;
DRAWHORIZONTALLINE(CROSS(高A=1,0.5)||CROSS(低A=1,0.5),IF(CROSS(低A=1,0.5),SL,NULL),COLORMAGENTA),LINETHICK2;
DRAWKLINE1(H,O,L,C);
CROSS(低A=1,0.5),SOUND('A');
CROSS(高A=1,0.5),SOUND('A');
DRAWCOLORKLINE(BARSLAST(CROSS(高A=1,0.5))>BARSLAST(CROSS(低A=1,0.5)),COLORMAGENTA,1);
DRAWCOLORKLINE(BARSLAST(CROSS(高A=1,0.5))>BARSLAST(CROSS(低A=1,0.5))&&ISDOWN,COLORMAGENTA,0);
DRAWCOLORKLINE(BARSLAST(CROSS(高A=1,0.5))<BARSLAST(CROSS(低A=1,0.5)),COLORBLUE,1);
DRAWCOLORKLINE(BARSLAST(CROSS(高A=1,0.5))<BARSLAST(CROSS(低A=1,0.5))&&ISDOWN,COLORBLUE,0);
// 识别波段高点 (HD)
A1:=REF(C,N)=HHV(C,N*2);
B1:=FILTER(A1,N);
C1:=BACKSET(B1,N+1);
HD:=FILTER(C1,N);
BOX_TOP:=REF(H,BARSLAST(HD));
//STICKLINE(C,BOX_TOP,BOX_TOP,6,0),COLORRED;
// 识别波段低点 (LD)
A2:=REF(C,N)=LLV(C,N*2);
B2:=FILTER(A2,N);
C2:=BACKSET(B2,N+1);
LD:=FILTER(C2,N);
BOX_BOT:=REF(L,BARSLAST(LD));
//STICKLINE(C,BOX_BOT,BOX_BOT,6,0),COLORGREEN;
// FVG 条件和填充(保持原始逻辑)
COND1:=CROSS(C,BOX_TOP);
COND2:=CROSS(BOX_BOT,C);
// 看涨 ORDER BLOCK:波段低点前的最后一个下跌关闭 K 线
TEMP_LD:=BARSLAST(LD); // 波段低点距今的柱数
BULL_OB_POS:=BARSLAST(C<O AND TEMP_LD>0 AND BARSSINCE(C<O)<TEMP_LD); // 优化定位:LD前的最后一个下跌K线
BULL_OB_TOP:=IF(TEMP_LD>0 AND BULL_OB_POS>0, REF(H,BULL_OB_POS), 0); // 看涨 OB 的顶部
BULL_OB_BOT:=IF(TEMP_LD>0 AND BULL_OB_POS>0, REF(L,BULL_OB_POS), 0); // 看涨 OB 的底部
//FILLRGN(BACKSET(ISLASTBAR,BARSLAST(BULL_OB_TOP>0&&REF(L,1)>REFX1(HHV(H,BARSLAST(BULL_OB_TOP>0)+1),10000))+1),REF(H,BARSLAST(BULL_OB_TOP>0&&REF(L,1)>REFX1(HHV(H,BARSLAST(BULL_OB_TOP>0)+1),10000))),REF(L,BARSLAST(BULL_OB_TOP>0&&REF(L,1)>REFX1(HHV(H,BARSLAST(BULL_OB_TOP>0)+1),10000))), COLOR8C4BD86A); // 看涨 OB 用绿色填充
// 看跌 ORDER BLOCK:波段高点前的最后一个上涨关闭 K 线
TEMP_HD:=BARSLAST(HD); // 波段高点距今的柱数
BEAR_OB_POS:=BARSLAST(C>O AND TEMP_HD>0 AND BARSSINCE(C>O)<TEMP_HD); // 优化定位:HD前的最后一个上涨K线
BEAR_OB_TOP:=IF(TEMP_HD>0 AND BEAR_OB_POS>0, REF(H,BEAR_OB_POS), 0); // 看跌 OB 的顶部
BEAR_OB_BOT:=IF(TEMP_HD>0 AND BEAR_OB_POS>0, REF(L,BEAR_OB_POS), 0); // 看跌 OB 的底部
//FILLRGN(BACKSET(ISLASTBAR,BARSLAST(BEAR_OB_TOP>0&&REF(L,1)>REFX1(HHV(H,BARSLAST(BEAR_OB_TOP>0)+1),10000))+1), REF(H,BARSLAST(BEAR_OB_TOP>0&&REF(L,1)>REFX1(HHV(H,BARSLAST(BEAR_OB_TOP>0)+1),10000))),REF(L,BARSLAST(BEAR_OB_TOP>0&&REF(L,1)>REFX1(HHV(H,BARSLAST(BEAR_OB_TOP>0)+1),10000))),COLOR4CFF7F9D); // 看跌 OB 用红色填充
// --------------------------
// 2. 看涨 OB(订单区)
// 定义:在波段低点(LD/BOX_BOT)出现前的最后一根下跌收盘K线
// 思路:以波段低点出现时的索引 BULLINDEX 为基准,取其前一根K线作为 OB
// --------------------------
BULLINDEX:=BARSLAST(LD); // LD所在的K线距今周期数
BULLOBINDEX:=BULLINDEX; // 取LD之前的那根K线
BULLOBHIGH:=REF(H, BULLOBINDEX);
BULLOBLOW :=REF(L, BULLOBINDEX);
//FILLRGN(BACKSET(ISLASTBAR, BULLOBINDEX), BULLOBHIGH, BULLOBLOW, RGB(110,552,130,100));
// --------------------------
// 3. 看跌 OB(订单区)
// 定义:在波段高点(HD/BOX_TOP)出现前的最后一根上涨收盘K线
// 思路:以波段高点所在的K线 BULLINDEX 为基准,取其前一根K线作为 OB
// --------------------------
BEARINDEX:=BARSLAST(HD); // HD所在的K线距今周期数
BEAROBINDEX:=BEARINDEX; // 取HD之前的那根K线
BEAROBHIGH:=REF(H, BEAROBINDEX);
BEAROBLOW :=REF(L, BEAROBINDEX);
//FILLRGN(BACKSET(ISLASTBAR, BEAROBINDEX), BEAROBHIGH, BEAROBLOW, RGB(180,360,200,190));
//N:=1;
高:=H>HV(H,N),NODRAW;
高N:=BARSLAST(高)+1;
低:=L<LV(L,N),NODRAW;
低N:=BARSLAST(低)+1;
高A:=BACKSET(COUNT(低,高N)&&低,高N);
低A:=BACKSET(COUNT(高,低N)&&高,低N);
DRAWLINE1(CROSS(高A=1,0.5),H,CROSS(低A=1,0.5),L,0),LINETHICK2,COLORBLUE;
DRAWLINE1(CROSS(低A=1,0.5),L,CROSS(高A=1,0.5),H,0),LINETHICK2,COLORMAGENTA;
DRAWLINE3(ISLASTBAR&&BARSLAST(CROSS(高A=1,0.5))<BARSLAST(CROSS(低A=1,0.5)),L,0,1,REF(H,BARSLAST(CROSS(高A=1,0.5))),BARSLAST(CROSS(高A=1,0.5)),0),COLORBLUE,LINETHICK2;
DRAWLINE3(ISLASTBAR&&BARSLAST(CROSS(高A=1,0.5))>BARSLAST(CROSS(低A=1,0.5)),H,0,1,REF(L,BARSLAST(CROSS(低A=1,0.5))),BARSLAST(CROSS(低A=1,0.5)),0),COLORMAGENTA,LINETHICK2;
SH:=VALUEWHEN(CROSS(高A=1,0.5),H);
SL:=VALUEWHEN(CROSS(低A=1,0.5),L);
DRAWSL(CROSS(高A=1,0.5),SH,0,5,0,COLORWHITE),LINETHICK2;
DRAWSL(CROSS(高A=1,0.5),SH-(SH-SL)*0.618,0,5,0,COLORWHITE),LINETHICK3;
DRAWSL(CROSS(高A=1,0.5),SH-(SH-SL)*0.382,0,5,0,COLORWHITE),LINETHICK3;
DRAWSL(CROSS(高A=1,0.5),SH-(SH-SL)*0.5,0,5,0,COLORWHITE),LINETHICK3;
DRAWSL(CROSS(高A=1,0.5),SH-(SH-SL)*0.786,0,5,0,COLORWHITE),LINETHICK3;
DRAWSL(CROSS(高A=1,0.5),SH-(SH-SL)*0.886,0,5,0,COLORWHITE),LINETHICK3;
DRAWLINE(CROSS(高A=1,0.5),SH,1,SH-(SH-SL)*0.886,COLORWHITE),LINETHICK3;
DRAWSL(CROSS(低A=1,0.5),SL,0,5,0,COLORMAGENTA),LINETHICK2;
DRAWSL(CROSS(低A=1,0.5),SL+(SH-SL)*0.618,0,5,0,COLORMAGENTA),LINETHICK3;
DRAWSL(CROSS(低A=1,0.5),SL+(SH-SL)*0.382,0,5,0,COLORMAGENTA),LINETHICK3;
DRAWSL(CROSS(低A=1,0.5),SL+(SH-SL)*0.5,0,5,0,COLORMAGENTA),LINETHICK3;
DRAWSL(CROSS(低A=1,0.5),SL+(SH-SL)*0.786,0,5,0,COLORMAGENTA),LINETHICK3;
DRAWSL(CROSS(低A=1,0.5),SL+(SH-SL)*0.886,0,5,0,COLORMAGENTA),LINETHICK3;
DRAWLINE(CROSS(低A=1,0.5),SL,1,SL+(SH-SL)*0.886,COLORMAGENTA),LINETHICK3;
DRAWHORIZONTALLINE(CROSS(高A=1,0.5)||CROSS(低A=1,0.5),IF(CROSS(高A=1,0.5),SH,NULL),COLORWHITE),LINETHICK2;
DRAWHORIZONTALLINE(CROSS(高A=1,0.5)||CROSS(低A=1,0.5),IF(CROSS(低A=1,0.5),SL,NULL),COLORMAGENTA),LINETHICK2;
DRAWKLINE1(H,O,L,C);
CROSS(低A=1,0.5),SOUND('A');
CROSS(高A=1,0.5),SOUND('A');
DRAWCOLORKLINE(BARSLAST(CROSS(高A=1,0.5))>BARSLAST(CROSS(低A=1,0.5)),COLORMAGENTA,1);
DRAWCOLORKLINE(BARSLAST(CROSS(高A=1,0.5))>BARSLAST(CROSS(低A=1,0.5))&&ISDOWN,COLORMAGENTA,0);
DRAWCOLORKLINE(BARSLAST(CROSS(高A=1,0.5))<BARSLAST(CROSS(低A=1,0.5)),COLORBLUE,1);
DRAWCOLORKLINE(BARSLAST(CROSS(高A=1,0.5))<BARSLAST(CROSS(低A=1,0.5))&&ISDOWN,COLORBLUE,0);















