GROUP取值問題

  •   412 
  • 最後發表   RS168  2025 六月 09
RS168 發文於   2025/06/07

 

我想畫這個指標

 

https://forum.xq.com.tw/thread/%E5%B0%8F%E5%8F%B0%E6%8C%87%E6%95%A3%E6%88%B6%E5%A4%9A%E7%A9%BA%E6%AF%94/

程式碼如下,有3個問題

1. 小台的合約 每月都會變, 所以還是需要每月自己重新更改INPUT對嗎?

2.取得的未平倉值跟期交所的差很多, 是那裡有寫錯嗎??

3.這樣取得的值畫出來的指標不就都很短??無法追朔歷史??

https://www.taifex.com.tw/cht/3/futDailyMarketReport

期交所2025/6/6總和是39114, 我PRINT出來是662863

 

Vars: _MTXsize(0), i(0);

input: _MTX(group, "小台合約");

 

 _MTXsize = groupsize(_MTX);

 

for i=1 to _MTXsize begin

value1 += GetSymbolField(_MTX[i], "未平倉", "D");

print (date, i, value1);

end;

 

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

你的需求有以下的問題:

(1)要將目前有掛牌的小台期貨商品的未平倉口數加總,使用Group時,參數的商品若不希望每個月都修改,只能由系統組合找,雖然系統組合有『小型台指』,但裡面有重複的商品,例如202506到期的合約與近月份合約相同。這樣的話,執行策略時會出錯。妥協的做法是使用自訂的組合,但衍生的問題是,每個月都要更新這六檔或七檔商品。這樣一方面很麻煩而且畫歷史指標也會有問題。

(2)若使用自訂組合,組合裡面放了目前的七檔小台指期,則下列程式可以計算出正確的39114。

setTotalBar(1);
Vars: _MTXsize(0), i(0);
input: _MTX(group, "小台合約");
 _MTXsize = groupsize(_MTX);
for i=1 to _MTXsize 
    begin
        value1 += GetSymbolField(_MTX[i], "未平倉", "D");
    end;
print (date, value1);

RS168 發文於   2025/06/08

若使用自訂組合,組合裡面放了目前的七檔小台指期,則下列程式可以計算出正確的39114。

我取出來的值是662863請問教授是取那些合約?

虎科大許教授 發文於   2025/06/08

W2、06、07、08、09、12、03。目前是第二週,所以多了W2的合約。

RS168 發文於   2025/06/08

我也取這幾個但值是錯,是FIMTX03.....這些嗎

20250606.000000 1.000000 624178.000000 

20250606.000000 2.000000 654931.000000 

20250606.000000 3.000000 659104.000000 

20250606.000000 4.000000 659492.000000 

20250606.000000 5.000000 659691.000000 

20250606.000000 6.000000 661870.000000 

20250606.000000 7.000000 662863.000000 

虎科大許教授 發文於   2025/06/09

你print的數據看來,你並非用我提供的程式。我測試數據是正常的。你的問題應該出在value1沒有每天歸零。跑迴圈之前,讓value1=0即可。

發表回覆
Close