通达信智能kdj 源码

{}N:=9;M1:=3;M2:=3;
{KDJ}
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:SMA(RSV,M1,1);
D:SMA(K,M2,1);
J:3*K-2*D;
顶轴:105, POINTDOT;
上轴:90, POINTDOT;
下轴:10, POINTDOT;
底轴:0, POINTDOT;
抢钱轴:-10, POINTDOT;
DRAWTEXT(CROSS(J,顶轴) ,100,'大出'), COLORYELLOW;
DRAWTEXT(CROSS(J,上轴) ,90,'小出'), COLOR99FFCC;
DRAWTEXT(CROSS(下轴,J) ,10,'小进'), COLORBLUE;
DRAWTEXT(CROSS(底轴,J) ,0,'大进'), COLORRED;
DRAWTEXT(CROSS(抢钱轴,J) ,-5,'狂进'), COLORWHITE;
{黄金方块}{}
RA:=LLV(LOW,35);
RB:=HHV(HIGH,30);
RC:=EMA((CLOSE-RA)/(RB-RA)*4,4)*19;
近日均价:=MA(CLOSE,5),COLORYELLOW,LINETHICK2;
STICKLINE(RC<6 AND 100*(HHV(HIGH,19)-CLOSE)/(HHV(HIGH,19)-LLV(LOW,19))>97 ,0 ,近日均价*1.15 ,2 , 0),COLORYELLOW;
{提示}
VAR1:=(EMA(CLOSE,12)-EMA(CLOSE,26))*100+50;
VAR2:=EMA(VAR1,9);
VAR3:=(HHV(HIGH,21)-CLOSE)/(HHV(HIGH,21)-LLV(LOW,21))*100-10;
VAR4:=(CLOSE-LLV(LOW,21))/(HHV(HIGH,21)-LLV(LOW,21))*100;
VAR5:=SMA(VAR4,13,8);
Q1:=(CLOSE-REF(CLOSE, 1))/REF(CLOSE, 1)*100;
Q2:=(CLOSE-LLV(LOW, 18))/(HHV(HIGH, 18)-LLV(LOW, 18))*100;
Q3:=SMA(Q2, 9, 1);
Q4:=SMA(Q3, 3, 1);
趋势:=3*Q3-2*Q4;
Q5:=趋势>1*REF(趋势, 1);
Q6:=LLVBARS(LOW, 50);
Q7:=SUM(VOL, Q6);
Q8:=HHVBARS(HIGH, 50);
Q9:=SUM(VOL, Q8);
Q10:=(CLOSE-REF(OPEN, Q8))/REF(OPEN, Q8)*100;
Q11:=HHV(趋势,5);
A1:=EMA(Q3, 3);
A2:=EMA(A1, 3);
A3:=EMA(A2, 3);
A4:=EMA(A3, 3);
A5:=EMA(A4, 3);
A6:=EMA(A5, 3);
A:=EMA(A4, 3);
DRAWTEXT(CROSS(趋势, 20) AND Q10<-13,10,'看量入场'), COLORRED;
DRAWTEXT(CROSS(趋势, A5) AND REF(趋势,1)<34,REF(趋势,1),'盯紧'), COLORWHITE;
DRAWTEXT(CROSS(趋势, A1) AND Q5 AND A1<20 AND Q1>9 OR A1>1*REF(A1, 1)
AND Q1>4 AND A1<60, 45, '调'), COLOR00FF00;

通达信版本的KDJ指标在MT4平台的实现需要考虑MT4平台使用的编程语言(MQL4)以及通达信KDJ指标的基本计算逻辑。KDJ指标是一种动量指标,用于衡量市场是否处于超买或超卖状态,其计算基于一定周期内的最高价、最低价和收盘价。 通达信KDJ指标的基本公式如下: - 计算周期内的未成熟随机值(RSV): $$ RSV = \frac{CLOSE - LOW_N}{HIGH_N - LOW_N} \times 100 $$ 其中,$LOW_N$ 和 $HIGH_N$ 分别为N周期内的最低价和最高价,CLOSE为当前收盘价。 - 计算K值: $$ K = \frac{2}{3} \times K_{prev} + \frac{1}{3} \times RSV $$ - 计算D值: $$ D = \frac{2}{3} \times D_{prev} + \frac{1}{3} \times K $$ - J值为: $$ J = 3 \times K - 2 \times D $$ 以下是基于MT4平台实现的通达信风格KDJ指标的MQL4源代码: ```mql4 //+------------------------------------------------------------------+ //| KDJ_TDX.mq4 | //| Custom KDJ indicator based on TDX formula | //+------------------------------------------------------------------+ #property indicator_separate_window #property indicator_buffers 3 #property indicator_color1 Blue #property indicator_color2 Red #property indicator_color3 Green //--- input parameters extern int KPeriod = 9; extern int DPeriod = 3; extern int Slowing = 3; //--- indicator buffers double KBuffer[]; double DBuffer[]; double JBuffer[]; int OnInit() { SetIndexBuffer(0, KBuffer); SetIndexBuffer(1, DBuffer); SetIndexBuffer(2, JBuffer); SetIndexStyle(0, DRAW_LINE); SetIndexStyle(1, DRAW_LINE); SetIndexStyle(2, DRAW_LINE); IndicatorShortName("KDJ (TDX)"); return(INIT_SUCCEEDED); } int OnCalculate(int rates_total, int prev_calculated, datetime &time[], double &open[], double &high[], double &low[], double &close[], volume &tick_volume[], spread &spread[], ticks &real_volume[]) { for(int i = 0; i < rates_total; i++) { double highest = iHigh(NULL, 0, MODE_HIGH, KPeriod, i); double lowest = iLow(NULL, 0, MODE_LOW, KPeriod, i); double rsv = (close[i] - lowest) / (highest - lowest) * 100; if(i == 0) { KBuffer[i] = rsv; DBuffer[i] = KBuffer[i]; } else { KBuffer[i] = (2.0 / 3.0) * KBuffer[i-1] + (1.0 / 3.0) * rsv; DBuffer[i] = (2.0 / 3.0) * DBuffer[i-1] + (1.0 / 3.0) * KBuffer[i]; } JBuffer[i] = 3 * KBuffer[i] - 2 * DBuffer[i]; } return(rates_total); } ``` ### 注意事项 - 上述代码中,`iHigh` 和 `iLow` 函数用于获取周期内的最高价和最低价,`close[i]` 为当前K线的收盘价。 - `KBuffer`、`DBuffer` 和 `JBuffer` 分别用于存储K值、D值和J值。 - `OnCalculate` 函数是MT4中指标计算的核心函数,它会在每次有新的K线生成时被调用。 - 该代码假设KDJ的默认周期为9,D周期为3,平滑系数为3[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值