矩陣使用方法確認___企業版訂閱用戶PHOT-187

  •   134 
  • 最後發表   EricTN  2024 五月 27
EricTN 發文於   2024/05/07

請問小編:

頻率:1分K

商品:小台近月日盤

矩陣使用方法問題:

1. 我想要取出5分K的開盤/收盤價所以我會設定1天K棒的數量,然後去取餘數;所以我設立一個IF條件當條件成立時帶入矩陣如下:

當MOD=1時取開盤價;代表1分K開盤;當條件成立時帶入矩陣_5MinOpenArray[1]

當MOD=0時取收盤價;代表5分K收盤;當條件成立時帶入矩陣_5MinCloseArray[1]

但是我PRINT出來的矩陣卻是每一分鐘的開盤/收盤價?(我想要的是一分K的第1根開盤和第5根收盤價)

請問哪邊需要修改呢?

1.1 我可以有其他方式取得5分K的開盤/收盤價嗎?

2. 我想要在084500的時候矩陣歸0,之後依序寫入矩陣內,但是我用PRINT出來確認 (確認用那段)卻發現在084600的時候矩陣還會有其他數值,是因為他計算到前天的嗎?

如果問題1可以解決的話那我要如何修改才會達到問題2的目的呢?

variable:BarNumberOfToday(0);
Array:_5MinOpenArray[5](0);
Array:_5MinCloseArray[5](0);

//條件


if Date <> Date[1] then BarNumberOfToday=1 
else BarNumberOfToday+=1;{記錄今天的Bar數}
print(file("C:\print\"),"BarNumberOfToday=",BarNumberOfToday,numtostr(date,0),TimeToString(time));
// 如果是 5 分K 的第一分K,則更新五分K的開盤價格

if date<>date[1] then begin
    for i = 1 to 5
        begin
             _5MinOpenArray[i]=0;
             _5MinCloseArray[i]=0;
             print (file("C:\print\"),"隔日矩陣歸0",_5MinCloseArray[i],"____5分開盤價=",_5MinOpenArray[i],numtostr(date,0),TimeToString(time));
        end;
end;

IF MOD(BarNumberOfToday, 5) = 2 THEN begin
        _5MinOpenArray[1] = OPEN; // 五分K的開盤價格
         print(file("C:\print\"),"MOD=",MOD(BarNumberOfToday, 5),"___開盤價=",numtostr(_5MinOpenArray[1],0),numtostr(date,0),TimeToString(time));
        end
        //_5MinCloseArray[1] = CLOSE; // 五分K的收盤價格
    else begin
        // 如果是 5 分K 的最後一個 K 棒,則更新五分K的收盤價格
        if MOD(BarNumberOfToday, 5) = 1 then begin
         _5MinCloseArray[1]=close;
         print(file("C:\print\"),"MOD=",MOD(BarNumberOfToday, 5),"___收盤價=",numtostr(_5MinCloseArray[1],0),numtostr(date,0),TimeToString(time));
         end;
 end;

// 檢查前一個 5 分K 是否收紅K
condition5 = _5MinCloseArray[1]>_5MinOpenArray[5]; {AND _5KC>_5KC[1]};//5分K收紅K and 收盤價>前一根
print(file("C:\print\"),"____前5分收盤價=",_5MinCloseArray[1],"____前5分開盤價=",_5MinOpenArray[5],numtostr(date,0),TimeToString(time));

//確認用
print (file("C:\print\"),"----------確認用---------");
for i =1 to 5
    begin
        _5MinCloseArray[i]=close[i];
        _5MinOpenArray[i]=open[i];
        print (file("C:\print\"),"5分收盤價=",_5MinCloseArray[i],"____5分開盤價=",_5MinOpenArray[i],numtostr(date,0),TimeToString(time));
    end;



附加文件

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

在1分鐘頻率下,若只是想抓前一根5分K的開盤價與收盤價,不用這麼麻煩。它們分別為

GetField("開盤價", "5")[1]

GetField("收盤價", "5")[1]

若這根5分K還沒收,則這根5分K的開盤價及收盤價分別為

GetField("開盤價", "5")

close

 

XS小編 發文於   2024/05/09

 Hello EricTN,

 

您可以使用 GetField 函數來取得不同頻率的資料。

若要確認是否為同一天的話,可以搭配該頻率的Date資訊。

 

至於為何歸0後還會有數值的部分,是因為您在確認用的地方有賦予值:

_5MinCloseArray[i]=close[i];

_5MinOpenArray[i]=open[i];

這樣就算前面歸0了,這邊還是會被賦予值。

 

感謝 虎科大許教授 的熱心回覆。

EricTN 發文於   2024/05/27

謝謝小編和教授的回答!

 

發表回覆
Close