// 绘制K线影线(从最高价到最低价)
STICKLINE(1,H,L,COLORBLACK,0);
// 多空线:收盘价的11日双重指数移动平均,用红色粗线显示
多空线:EMA(EMA(C,11),11),COLORRED,LINETHICK2; ///////////////////可优化
// 判断多空线是否上升
B8:=多空线>REF(多空线,1);
// 如果多空线下降,则用绿色显示
IF(B8-1,多空线,NULL),COLORGREEN,LINETHICK2;
// 计算典型价格(收盘+最低+最高)/3
X1:=(CLOSE+LOW+HIGH)/3;
X2:=EMA(X1,6); // 6日指数移动平均
X3:=EMA(X2,5); // 5日指数移动平均
VAR2:=EMA(EMA(X1,1),13); // 双重EMA
VAR3:=EMA(VAR2,21); // 21日EMA
// 计算HEIKIN-ASHI(平均K线)的四个价格
XCLOSE:=EMA((OPEN+HIGH+LOW+CLOSE)/4,3); // 平均收盘价
XOPEN:=EMA((REF(OPEN,1)+REF(XCLOSE,1))/2,3); // 平均开盘价
TEMPG:=MAX(HIGH,XOPEN);
XHIGH:=EMA(MAX(TEMPG,XCLOSE),3); // 平均最高价
TEMP:=MIN(LOW,XOPEN);
XLOW:=EMA(MIN(TEMP,XCLOSE),3); // 平均最低价
// 确定K线的实体范围
O1:=IF(XOPEN<XCLOSE,XOPEN,XCLOSE);
C1:=IF(XOPEN<XCLOSE,XCLOSE,XOPEN);
// 绘制平均K线的影线(根据涨跌显示不同颜色)
STICKLINE1(XOPEN>=XCLOSE,XHIGH,XLOW,0,0 ),COLORGREEN; // 下跌为绿色
STICKLINE1(XOPEN<XCLOSE,XHIGH,XLOW,0,0 ),COLORRED; // 上涨为红色
AC:=CLOSE;
// 转折线相关计算
转强:=MA(HIGH,6);
转弱:=MA(LOW,6);
B:=CLOSE*0; // 初始化为0
转折线:=IF(B=-1,MA(HIGH,6),MA(LOW,6)),LINETHICK2,COLORFFFFFF,NODRAW;
// 计算多个EMA线
EM01:=EMA(C,10);
EM:=EMA(C,21);
UP:=EMA(EM,13);
DOWN:=EMA(EM,17);
MIDD:=(UP+DOWN)/2; // 中线
MAM:=(EMA(EM01,2)+EMA(EM01,5))/2; // 移动平均组合
// 根据MIDD方向绘制实体K线
STICKLINE(MIDD>REF(MIDD,1),C1,O1,8,0),COLORRED; // 上涨红色实体
STICKLINE(MIDD<=REF(MIDD,1),C1,O1,8,0),COLORGREEN; // 下跌绿色实体
// 神龙多空线系统
X18:=(CLOSE+LOW+HIGH+OPEN)/4; // 四价平均
X28:=EMA(X18,6);
X38:=EMA(X28,2);
VAR200:=EMA(EMA(X18,1),18);
VAR300:=EMA(VAR200,18);
O100:=IF(XOPEN<XCLOSE,XOPEN,XCLOSE);
C100:=IF(XOPEN<XCLOSE,XCLOSE,XOPEN);
// 神龙线:40日均线的60日EMA
神龙线:EMA(MA(C,40),43),LINETHICK1,COLORYELLOW; ///////////////////可优化25/39
// 显示图标
DRAWICON((神龙线>=XCLOSE),神龙线,'ICO11'),VALIGN2,ALIGN1;
DRAWICON((神龙线<XCLOSE),神龙线,'ICO10'),VALIGN0,ALIGN1;
// 设置背景颜色
DRAWGBK(神龙线<XCLOSE,COLOR000000,COLOR2F0000,0); // 做多背景
DRAWGBK(神龙线>=XCLOSE,COLOR000000,COLOR140A45,0); // 做空背景
// 变色K线系统(根据MIDD方向)
STICKLINE1(MIDD<=REF(MIDD,1),XHIGH,XLOW,0,0 ),COLOR00FFFF; // 下跌影线
STICKLINE1(MIDD<=REF(MIDD,1),C1,O1,3.2,0),COLOR008888; // 多层实体
STICKLINE1(MIDD<=REF(MIDD,1),C1,O1,2.6,0),COLOR00AAAA;
STICKLINE1(MIDD<=REF(MIDD,1),C1,O1,1.9,0),COLOR00CCCC;
STICKLINE1(MIDD<=REF(MIDD,1),C1,O1,1.1,0),COLOR00FFFF;
STICKLINE1(MIDD<=REF(MIDD,1),C1,O1,0.3,0),COLOR00FFFF;
STICKLINE1(MIDD>REF(MIDD,1),XHIGH,XLOW,0,0 ),COLORRED; // 上涨影线
STICKLINE1(MIDD>REF(MIDD,1),C1,O1,3.2,0),COLOR890107; // 多层实体
STICKLINE1(MIDD>REF(MIDD,1),C1,O1,2.6,0),COLORBC010B;
STICKLINE1(MIDD>REF(MIDD,1),C1,O1,2,0),COLORE0010D;
STICKLINE1(MIDD>REF(MIDD,1),C1,O1,1,0),COLORFE010E;
STICKLINE1(MIDD>REF(MIDD,1),C1,O1,0.3,0),COLORFE2934;
// 高低点转折文字提示
HH:=HHV(HIGH,22); // 22日最高价
LL:=LLV(LOW,22); // 22日最低价
HH3:=HHV(HIGH,14);
LL3:=LLV(LOW,14);
HH1:=BARSLAST((HH>REF(HH,1))); // 上次创新高的周期数
LL1:=BARSLAST((LL<REF(LL,1))); // 上次创新低的周期数
// 支撑阻力系统
N:=5;
VAR1:=(HIGH+LOW+CLOSE)/3; // 典型价格
MA1:=REF(SMA(VAR1,5,1),3); // 平滑移动平均
MA2:=REF(SMA(VAR1,8,1),5);
H1:=HHV(HIGH,N); // N日最高
L1:=LLV(LOW,N); // N日最低
H2:=HHV(HIGH,N-1);
L2:=LLV(LOW,N-1);
XD:=LOW=L1; // 是否创新低
SZ:=HIGH=H1; // 是否创新高
XDT:=BARSLAST(XD); // 上次创新低的周期数
SZT:=BARSLAST(SZ); // 上次创新高的周期数
// 判断多空状态
DT:=SZT<XDT OR (SZT=XDT AND REF(SZT,1)>REF(XDT,1)); // 多头状态
KT:=XDT<SZT OR (SZT=XDT AND REF(XDT,1)>REF(SZT,1)); // 空头状态
DTT:=BARSLAST(DT); // 上次多头状态以来的周期
KTT:=BARSLAST(KT); // 上次空头状态以来的周期
FH:=CROSS(KTT,DTT); // 转空信号
FL:=CROSS(DTT,KTT); // 转多信号
FHT:=BARSLAST(FH); // 上次转空以来的周期
FLT:=BARSLAST(FL); // 上次转多以来的周期
// 计算支撑阻力位
GD:=IF(FL,HHV(HIGH,FHT+1),0); // 阻力位
DD:=IF(FH,LLV(LOW,FLT+1),0); // 支撑位
SG:=REF(GD,FLT),POINTDOT,LINETHICK4,RGB(0,128,255),DOT; // 阻力线
XG:=REF(DD,FHT),POINTDOT,LINETHICK4,COLORWHITE,DOT; // 支撑线
// RSI超买超卖提示
LC:=REF(CLOSE,1);
WRSI:=SMA(MAX(CLOSE-LC,0),6,1)/SMA(ABS(CLOSE-LC),6,1)*100; // RSI计算
// RSI极值点图标
LC8:=REF(CLOSE,1);
WRSI8:=SMA(MAX(CLOSE-LC8,0),6,1)/SMA(ABS(CLOSE-LC8),6,1)*100;
DRAWICON(CROSS(WRSI8,10),L,'ICO153'),VALIGN0; // RSI超卖图标
DRAWICON(CROSS(90,WRSI8),H,'ICO152'),VALIGN2; // RSI超买图标
抛物线红状态:神龙线<XCLOSE,NODRAW;
抛物线绿状态:神龙线>=XCLOSE,NODRAW;
抛物线转红:CROSS(神龙线<XCLOSE,0.5),NODRAW;
// K线颜色变化声音提示
K线红状态:MIDD>REF(MIDD,1),NODRAW;
K线绿状态:MIDD<=REF(MIDD,1),NODRAW;
K线转红:CROSS(MIDD>REF(MIDD,1),0.5),NODRAW;
K线转绿:CROSS(MIDD<=REF(MIDD,1),0.5),NODRAW;
// ================== 优化部分开始 ==================
// 1. 增加趋势质量过滤器
TR1:=MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1)));
TR2:=MAX(TR1,ABS(LOW-REF(CLOSE,1)));
ATR:=MA(TR2,14);
价格波动率:=ATR/CLOSE*100;
低波动率:=价格波动率<2.5; // 过滤过度波动的市场
// 2. 增加成交量确认
VOL_MA:=MA(VOL,20);
成交量放大:=VOL>VOL_MA*1.2; // 成交量需要放大
// 3. 优化多空状态判断 - 增加更多确认条件
多头状态:=(MIDD>REF(MIDD,1)) AND (LL1>HH1) AND (神龙线<XCLOSE) ; //AND (CLOSE > 多空线+MINPRICE) AND 低波动率;
空头状态:=(MIDD<=REF(MIDD,1)) AND (HH1>LL1) AND (神龙线>=XCLOSE) ; // AND (CLOSE < 多空线-MINPRICE) AND 低波动率;
// 4. 简化连续亏损检测(符合文华语法)
VAR1_连续亏损计数:=0;
VAR2_上次盈利:=0;
// 价格通道用于出场
价格通道上轨:=HHV(HIGH,3); ///////////////////可优化
价格通道下轨:=LLV(LOW,2); ///////////////////可优化
价格通道中轨:=(价格通道上轨+价格通道下轨)/2;
绿点线价格:=REF(GD, FLT); // 绿色点线价格
红点线价格:=REF(DD, FHT); // 红色点线价格
绿点线状态:=GD; // 绿色点线价格
红点线状态:=DD; // 红色点线价格
转空信号:=CROSS(HH1,LL1); // 即出现"转空"文字的条件
转多信号:=CROSS(LL1,HH1); // 即出现"转多"文字的条件
转空状态:=HH1>LL1; // 即出现"转空"文字的条件
转多状态:=LL1>HH1; // 即出现"转多"文字的条件
// 保留原有文字标记并添加红色实体向上箭头
DRAWICON(转多信号,LOW,'ICO112'),VALIGN0,ALIGN1; // 添加红色向上箭头
// 保留原有文字标记并添加绿色实体向下箭头
DRAWICON(转空信号,HIGH,'ICO113'),VALIGN2,ALIGN1; // 添加绿色向下箭头
非多头信号:=NOT(多头状态) AND REF(多头状态,1);
非空头信号:=NOT(空头状态) AND REF(空头状态,1);
// 保留原有文字标记并添加红色实体圆点
DRAWICON(非多头信号,HIGH,'ICO114'),VALIGN0,ALIGN1; // 添加红色圆点
// 保留原有文字标记并添加绿色实体圆点
DRAWICON(非空头信号,LOW,'ICO115'),VALIGN2,ALIGN1; // 添加绿色圆点
// 添加的代码开始
// 定义当前绿点线价格(阻力线)和红点线价格(支撑线)
当前绿点线:=REF(GD,FLT);
当前红点线:=REF(DD,FHT);
// 1. 收盘价大于绿点线状态(突破阻力)
突破绿点线条件:=CROSS(CLOSE,当前绿点线) AND 当前绿点线>0;
// 2. 收盘价小于红点线状态(跌破支撑)
突破红点线条件:=CROSS(当前红点线,CLOSE) AND 当前红点线>0;
HON:=MIDD>REF(MIDD,1);
LAN:=MIDD<=REF(MIDD,1);
ZD:=BARSLAST(CROSS(LL1,HH1))<BARSLAST(CROSS(HH1,LL1));
ZK:=BARSLAST(CROSS(LL1,HH1))>BARSLAST(CROSS(HH1,LL1));
KZZ:=(神龙线>=XCLOSE);
DZZ:=(神龙线<XCLOSE);
//去均线MA函数值预警
MB1:INTPART(MA(CLOSE,25)); // 有均线MA函数值预警:MB1:=INTPART(MA(CLOSE,30)); ,计算30日收盘价移动平均线的整数部分,赋值给变量MB1
CONDUPS:=IF(CROSS(REF(CLOSE,1),MB1) AND MB1>REF(MB1,1),1,0); // 当昨日收盘价上穿MB1 且 当前MB1值大于前一日MB1值时,条件成立标记为1,否则为0
CONDDOWNS:=IF(CROSSDOWN(REF(CLOSE,1),MB1) AND MB1<REF(MB1,1),1,0); // 当昨日收盘价下穿MB1 且 当前MB1值小于前一日MB1值时,条件成立标记为1,否则为0
CONDUP:=IF(CLOSE>MB1 AND MB1>REF(MB1,1),1,0); // 当当前收盘价大于MB1 且 MB1值大于前一日MB1值时,条件成立标记为1,否则为0
CONDDOWN:=IF(C<MB1 AND MB1<REF(MB1,1),1,0); // 当当前收盘价小于MB1 且 MB1值小于前一日MB1值时,条件成立标记为1,否则为0
DRAWICON(CONDUP,C,4); // 当CONDUP条件满足时,在当前K线收盘价位置绘制4号图标(通常为向上箭头)
DRAWICON(CONDDOWN,C,5); // 当CONDDOWN条件满足时,在当前K线收盘价位置绘制5号图标(通常为向下箭头)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 多单交易逻辑 1、1、80、1
开多条件1:=HON AND ZD AND DZZ && CLOSE >= 多空线+1*MINPRICE && MB1> REF(MB1,1)+1*MINPRICE ; // ; //
开多条件5:= CLOSE >=99999 ; //指定价格开仓
平多条件2:=空头状态; //多单止损
平多条件4:= MB1< REF(MB1,1)-1*MINPRICE ;
平多条件6:= CLOSE >= 99999; //指定价格平仓
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 空单交易逻辑 1、1、60、13
开空条件1:=LAN AND ZK AND KZZ && CLOSE <= 多空线-1*MINPRICE && MB1< REF(MB1,1)-1*MINPRICE ; // ; //
开空条件5:= CLOSE <= 99 ; //指定价格开仓
平空条件2:=多头状态 ; //空单止
平空条件4:= MB1> REF(MB1,1)+13*MINPRICE ; //42、46、9、11、12、14、15、17、18、20、21、23、24、30、34、47、44、
平空条件6:=CLOSE <= 99; //指定价格平仓