取得過去五天最高價及最低價在哪天以及漲幅

  •   436 
  • 最後發表   KL1003  2025 四月 01
KL1003 發文於   2024/10/18

Hi, 小幫手,不好意思 我卡住了,需要能幫忙一下

我打算取得過去五天的最高價以及最低價,然後是在哪一天,以及當天的漲幅資訊為何

我的想法是,透過for loop 找出最高及最低價,並記錄, 所以我寫了以下的程式碼,

 

input:period(5,"期數");

Vars: ChangeList(GetField("漲跌幅","D"));
Vars: HighestPriceList(GetField("High", "D", Adjusted:=true));
Vars: LowestPriceList(GetField("Low", "D", Adjusted:=true));
Vars: HighAt(0), LowAt(0), HighPrice(0), LowPrice(0), i(0);

HighPrice = HighestPriceList[0];//先記錄當天最高價
LowPrice = LowestPriceList[0];//先記錄當天最低價
For i = 1 to period-1 Begin
    if HighPrice < HighestPriceList[i] then
    Begin
        HighPrice = HighestPriceList[i];
        HighAt = i;//取得最高價在哪一天
    End;
    if LowPrice > LowestPriceList[i] then
    Begin
        LowPrice = LowestPriceList[i];
        LowAt = i;//取得最低價在哪一天
    End;    
End;

if ChangeList[LowAt ] <= -5 then //小於 -5% 且為5日內最低價,則return 1
ret = 1;

if ChangeList[HighAt] >= 5 then // 大於  5% 且為5日內最高價,則return 1
ret = 1;

我這樣寫,但我跑完錯得離譜,並沒有找到過去五日的最高價,反而推算到非常多天前

實在不太知道為什麼,希望能幫忙一下,謝謝

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

XQ的需求,很多時候並不需要跑迴圈。

以台積電為例:

if symbol="2330.TW" then 

begin

value1=highestbar(h[1],5);

value2=lowestbar(L[1],5);

value3=highest(h[1],5);

value4=lowest(L[1],5);

value11=date[value1+1];

value12=date[value2+1];

value21=GetField("漲跌幅")[value1+1];

value22=GetField("漲跌幅")[value2+1];

ret=1;

outputField1(value3,"最高價");

outputField2(value11,"最高價日期");

outputField3(value21,"最高價漲跌幅");

outputField4(value4,"最低價");

outputField5(value12,"最低價日期");

outputField6(value22,"最低價漲跌幅");

end;

KL1003 發文於   2024/10/19

教授謝謝!

我試了可以,感謝您

也知道錯誤在哪了~

Luckyguide 發文於   2025/04/01

許教授的程式中,我要在最高價的位置,劃出一條水平線,我加了plot1(value3,"最高價"); 

但視窗中出現的水平線卻彎彎曲曲,請問:plot1(value3,"最高價"); 否寫錯了?

另外我要在最高價的位置「註明最高價的價格」,程式應該如何寫?

虎科大許教授 發文於   2025/04/01

用PlotLine。

發表回覆
Close