請問XS有辦法取得選擇權各履約價的未平倉量嗎,如圖圈起來?謝謝

請問XS有辦法取得選擇權履約價的未平倉量嗎
- 340
- 最後發表 努力之人 2025 七月 03
請問有函數可以直接獲取選擇權目前最大未平倉的商品嗎
Hello 努力之人,
您可以使用 未平倉 來取得執行商品的未平倉量。
需注意當日的資料會在下午 3:30 以後才執行,所以是無法在盤中取到當日的資料。
如果要取得其他價格的選擇權未平倉量的話,可以使用 GetSymbolField 來跨商品取得未平倉量。
目前沒有函數可以直接獲取選擇權目前最大未平倉的商品。
另外小幫手補充,小幫手回覆時都是由討論區的後面往前面回覆。(會依據用戶是否有訂閱調整順序)
所以如果您在同一篇文章推文的話會造成您的文章被往前推,反而讓小幫手看到問題的時間變晚。
由於近來問題量不少,麻煩您發問後多等待一陣子。
小編好, 我想推算出最大未平倉的履約價, 用以下比較笨的方法來寫(以周選W1為例),有比較建議的改善方式嗎 謝謝
variables:
OIC1(0), OIC2(0), OIC3(0), OIC4(0), OIC5(0), OIC6(0), OIC7(0), OIC8(0), OIC9(0), OIC10(0),
MaxOIC(0), MaxCStrike(0),
OIP1(0), OIP2(0), OIP3(0), OIP4(0), OIP5(0), OIP6(0), OIP7(0), OIP8(0), OIP9(0), OIP10(0), OIP11(0), OIP12(0),
MaxOIP(0), MaxPStrike(0);
// 取得C履約價的未平倉量
OIC1 = GetSymbolField("TX107C22600.TF", "未平倉", "D", param := "Call");
OIC2 = GetSymbolField("TX107C22700.TF", "未平倉", "D", param := "Call");
OIC3 = GetSymbolField("TX107C22800.TF", "未平倉", "D", param := "Call");
OIC4 = GetSymbolField("TX107C22900.TF", "未平倉", "D", param := "Call");
OIC5 = GetSymbolField("TX107C23000.TF", "未平倉", "D", param := "Call");
OIC6 = GetSymbolField("TX107C23100.TF", "未平倉", "D", param := "Call");
OIC7 = GetSymbolField("TX107C23200.TF", "未平倉", "D", param := "Call");
OIC8 = GetSymbolField("TX107C23300.TF", "未平倉", "D", param := "Call");
OIC9 = GetSymbolField("TX107C23400.TF", "未平倉", "D", param := "Call");
OIC10 = GetSymbolField("TX107C23500.TF", "未平倉", "D", param := "Call");
// 取得P履約價的未平倉量
OIP1 = GetSymbolField("TX107P22600.TF", "未平倉", "D", param := "Put");
OIP2 = GetSymbolField("TX107P22500.TF", "未平倉", "D", param := "Put");
OIP3 = GetSymbolField("TX107P22400.TF", "未平倉", "D", param := "Put");
OIP4 = GetSymbolField("TX107P22300.TF", "未平倉", "D", param := "Put");
OIP5 = GetSymbolField("TX107P22200.TF", "未平倉", "D", param := "Put");
OIP6 = GetSymbolField("TX107P22100.TF", "未平倉", "D", param := "Put");
OIP7 = GetSymbolField("TX107P22000.TF", "未平倉", "D", param := "Put");
OIP8 = GetSymbolField("TX107P21900.TF", "未平倉", "D", param := "Put");
OIP9 = GetSymbolField("TX107P21800.TF", "未平倉", "D", param := "Put");
OIP10 = GetSymbolField("TX107P21700.TF", "未平倉", "D", param := "Put");
OIP11 = GetSymbolField("TX107P21600.TF", "未平倉", "D", param := "Put");
OIP12 = GetSymbolField("TX107P21500.TF", "未平倉", "D", param := "Put");
// 找出最大未平倉量
MaxOIC = MaxList(OIC1, OIC2, OIC3, OIC4, OIC5, OIC6, OIC7, OIC8, OIC9, OIC10);
MaxOIP = MaxList(OIP1, OIP2, OIP3, OIP4, OIP5, OIP6, OIP7, OIP8, OIP9, OIP10, OIP11, OIP12);
// 確定Call最大未平倉量對應的履約價
if MaxOIC = OIC1 then
MaxCStrike = 22600
else if MaxOIC = OIC2 then
MaxCStrike = 22700
else if MaxOIC = OIC3 then
MaxCStrike = 22800
else if MaxOIC = OIC4 then
MaxCStrike = 22900
else if MaxOIC = OIC5 then
MaxCStrike = 23000
else if MaxOIC = OIC6 then
MaxCStrike = 23100
else if MaxOIC = OIC7 then
MaxCStrike = 23200
else if MaxOIC = OIC8 then
MaxCStrike = 23300
else if MaxOIC = OIC9 then
MaxCStrike = 23400
else if MaxOIC = OIC10 then
MaxCStrike = 23500;
// 確定Put最大未平倉量對應的履約價
if MaxOIP = OIP1 then
MaxPStrike = 22600
else if MaxOIP = OIP2 then
MaxPStrike = 22500
else if MaxOIP = OIP3 then
MaxPStrike = 22400
else if MaxOIP = OIP4 then
MaxPStrike = 22300
else if MaxOIP = OIP5 then
MaxPStrike = 22200
else if MaxOIP = OIP6 then
MaxPStrike = 22100
else if MaxOIP = OIP7 then
MaxPStrike = 22000
else if MaxOIP = OIP8 then
MaxPStrike = 21900
else if MaxOIP = OIP9 then
MaxPStrike = 21800
else if MaxOIP = OIP10 then
MaxPStrike = 21700
else if MaxOIP = OIP11 then
MaxPStrike = 21600
else if MaxOIP = OIP12 then
MaxPStrike = 21500;
// 繪製最大未平倉量的履約價
Plot1(MaxCStrike, "上檔壓力");
Plot2(MaxPStrike, "下檔支撐");
Plot3((MaxCStrike+MaxPStrike)/2, "預計結算價");
你的寫法,必須經常更改履約價。16.01版本之後,你可以使用Group處理。將群組設定為參數,並以指定組合方式指向『台指W1選擇權全部』這個商品組合。
感謝許教授回覆
5 評論