請教如何在個股指標圖上抓大盤日周月的KD值

  •   232 
  • 最後發表   fangchih  2022 十一月 04
fangchih 發文於   2022/11/02

我使用跨頻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");

 

 

是否可以請小編幫忙檢查一下語法哪邊寫錯了~~謝謝

排序方式: 標準 | 最新
XQ小幫手 發文於   2022/11/04

Hello fangchih,

 

您計算 maxHigh 時使用到TSE.T的最低價。

修改後如果資料運算的筆數夠長的話就會正確。

fangchih 發文於   2022/11/04

非常感謝已經解決了~~

謝謝

發表回覆
Close