MJ指標

  •   1.5K 
  • 最後發表   Luckyguide  2024 十一月 12
Luckyguide 發文於   2024/10/20

前面文章說:MACD+KDJ指標副圖疊加=MJ指標 ,小編說:您可以參考複製內建的MACD指標和KDJ指標,然後稍作修改即可。我修改後程式如下:

//MJ指標
// XQ: MACD指標//
input: FastLength(12), SlowLength(26),MACDLength(9);
variable: price(0);
SetInputName(1, "DIF短天數");
SetInputName(2, "DIF長天數");
SetInputName(3, "MACD天數");
price = WeightedClose();
Value1 = XAverage(price, FastLength) -
XAverage(price, SlowLength);
Value2 = XAverage(Value1, MACDLength) ;
Value3 = Value1 - Value2 ;
// 前面區段資料變動較大, 先不繪出
if CurrentBar <= SlowLength then begin
        Value1= 0;
        Value2= 0;
        Value3= 0;
                                                         end;

Plot1(Value3, "OSC");Plot3(0, "MACD0");
// XQ: KDJ指標//
input: Length(9), RSVt(3), Kt(3), JType(0);
variable: rsv(0), k(0), _d(0), j(0);
SetInputName(1, "天數");
SetInputName(2, "RSVt權數");
SetInputName(3, "Kt權數");
Stochastic(Length, RSVt, Kt, rsv, k, _d);
 if JType = 0 then   j = 3 * k - 2 * _d
else   j  = 3 * _d - 2 * k;
 Plot2(J,"J(%)");
但發現當頻率為1分鐘 , macd 0軸跟kdj 50軸可以重疊, 如附圖1!
但當頻率改為5分鐘 , macd 0軸跟kdj 50軸就位移了,  如附圖2!

附加文件

排序方式: 標準 | 最新
虎科大許教授 發文於   2024/10/20

//MJ指標

input: FastLength(12, "DIF短天數"), SlowLength(26, "DIF長天數"),MACDLength(9, "MACD天數");

input: Length(9, "天數"), RSVt(3, "RSVt權數"), Kt(3, "Kt權數"), JType(0, "JType");

var: dif5(0),macd5(0),osc5(0);

variable: rsv5(0), k5(0), d5(0), j5(0);

MACD(WeightedClose,FastLength, SlowLength,MACDLength,dif5,macd5,osc5);

Stochastic(Length, RSVt, Kt, rsv5, k5, d5);

if JType = 0 

then j5 = 3 * k5 - 2 * d5

else j5 = 3 * d5 - 2 * k5;

Plot1(osc5, "OSC");

Plot2(J5,"J(%)");

Plot3(0, "MACD0");

虎科大許教授 發文於   2024/10/20
Luckyguide 發文於   2024/10/23

請問許教授:上面圖形Macd的0軸跟Kdj的50軸分開,,沒有重疊成為一軸(MJ指標,Macd的0軸跟Kdj的50軸必需重疊成為一軸)

虎科大許教授 發文於   2024/10/23

{
MJ指標,MACD的零軸要與J的50放在一起
OSC放第一坐標軸,KDJ放第二坐標軸
設定第一坐標軸刻度:對稱 中心點為0,第二坐標軸刻度:對稱 中心點50
}
input: FastLength(12, "DIF短天數"), SlowLength(26, "DIF長天數"),MACDLength(9, "MACD天數");
input: Length(9, "天數"), RSVt(3, "RSVt權數"), Kt(3, "Kt權數"), JType(0, "JType");
var: dif5(0),macd5(0),osc5(0);
variable: rsv5(0), k5(0), d5(0), j5(0);
MACD(WeightedClose,FastLength, SlowLength,MACDLength,dif5,macd5,osc5);
Stochastic(Length, RSVt, Kt, rsv5, k5, d5);
if JType = 0 
then j5 = 3 * k5 - 2 * d5
else j5 = 3 * d5 - 2 * k5;
Plot1(osc5, "OSC");
Plot2(J5,"J(%)");

  • 按讚來自於
  • johnlintw
虎科大許教授 發文於   2024/10/23
虎科大許教授 發文於   2024/10/23
Luckyguide 發文於   2024/10/23

感恩!終於找到答案!

tiger1 發文於   2024/11/01

你的程式,我如果要改成J5向上穿越MACD的 0軸發出警示,,是否在程式上加上

condition1 = j5 cross over 0  ;

if condition1 then ret=1;

 

 

 

虎科大許教授 發文於   2024/11/01

你的寫法OK,但其實與MACD無關。單純就是J穿越0,就警示。

tiger1 發文於   2024/11/03

如上面,要J5向上穿越MACD的 0軸發出警示,,你説下面程式是錯誤的

condition1 = j5 cross over 0  ;

if condition1 then ret=1;

 那正確的程式應該如何修改?

顯示更多回應 發表回覆
Close