我使用跨頻KD函數改了一份加權的日周月KD值函數~使用在指標上面~~出來的數值跟大盤KD值不對~~
SetBarMode(2);
// 跨頻率Stochastic函數(for KD/RSV相關指標)
//
// FreqType是預期要引用的頻率, 支援"D", "W", "M"
// 輸入: FreqType, SeriesH, SeriesL, SeriesC, Length, rsvt, kt
// 輸出: rsv_value, k_value, d_value
//
input:
FreqType(string),
Length(numericsimple), rsvt(numericsimple), kt(numericsimple),
rsv(numericref), k(numericref), d(numericref);
variable:
maxHigh(0), minLow(0),lastK(50),lastD(50),closePeriod(0);
condition1 = xf_getdtvalue(FreqType, Date) <> xf_getdtvalue(FreqType, Date[1]);
if condition1 then
begin
lastK = k[1];
lastD = d[1];
end;
switch (FreqType)
begin
case "D":
maxHigh = highest(GetSymbolField("TSE.TW","最低價","D"),Length);
minLow = lowest(GetSymbolField("TSE.TW","最低價","D"),Length);
closePeriod = GetSymbolField("TSE.TW","收盤價","D");
case "W":
maxHigh = highest(GetSymbolField("TSE.TW","最低價","W"),Length);
minLow = lowest(GetSymbolField("TSE.TW","最低價","W"),Length);
closePeriod = GetSymbolField("TSE.TW","收盤價","W");
case "M":
maxHigh = highest(GetSymbolField("TSE.TW","最低價","M"),Length);
minLow = lowest(GetSymbolField("TSE.TW","最低價","M"),Length);
closePeriod = GetSymbolField("TSE.TW","收盤價","M");
default:
maxHigh = highest(High,Length);
minLow = lowest(Low,Length);
closePeriod = Close;
end;
if maxHigh <> minLow then
rsv = 100 * (closePeriod - minLow) / (maxHigh - minLow)
else
rsv = 50;
if currentbar = 1 then
begin
k = 50;
d = 50;
end
else
begin
k = (lastK * (rsvt - 1) + rsv) / rsvt;
d = (lastD * (kt - 1) + k) / kt;
end;
xf_Stochastic_market = 1;
使用的指標
xf_Stochastic_market("D",9,3,3,value1,value2,value3);
xf_Stochastic_market("W",9,3,3,value11,value12,value13);
xf_Stochastic_market("M",9,3,3,value21,value22,value23);
plot1(value2,"日K");
plot2(value3,"日D");
plot3(value12,"周K");
plot4(value13,"周D");
plot5(value22,"月K");
plot6(value23,"月D");
是否可以請小編幫忙檢查一下語法哪邊寫錯了~~謝謝
2 評論