- 買賣權
- 標的價格
- 履約價
- 到期天數
- 無風險利率
- 持有成本
- 波動率
買賣權=midstr(symbol,6,1); //利用商品名稱取得 履約價=strtonum(midstr(symbol,7,strlen(symbol) - 9)); //利用商品名稱取得 到期天數利用daystoexpirationtf函數,直接寫死找出每月第三個星期三也就是因為這些規則是死的,利用商品名稱取得資訊的方式讓我們之前系統內建指標只能提供台指選專用的指標。更不要說碰到颱風或農曆春節導致結算日異動時,這個指標就會失真。在有了GetSymbolInfo函數之後,這些資訊我們就可以直接使用
買賣權=GetSymbolInfo("買賣權"); 履約價=GetSymbolInfo("履約價"); 到期天數=DateDiff(GetSymbolInfo("到期日"), Date) + 1;所有的選擇權商品,XS都會提供這些商品基本資料,我們就可以寫出通用版的Delta指標,而不是僅限台指選專用。改寫後的腳本如下:
input: iRate100(2,"無風險利率%"), iHV(20,"標的歷史波動率計算期間"); variable:vStrikePrice(0),vVolity100(0),vTTMdays(0); if symboltype <> 5 then raiseruntimeerror("僅支援選擇權"); if iHV > 0 then vVolity100 = HVolatility(getsymbolfield("Underlying","收盤價","D"),iHV) else vVolity100 = 20; vStrikePrice = getsymbolinfo("履約價"); vTTMdays = DateDiff(GetSymbolInfo("到期日"), Date) + 1; value1 = bsdelta(leftstr(getsymbolinfo("買賣權"),1), //C表買權、P表賣權 getsymbolfield("Underlying","收盤價"), //標的價格 vStrikePrice, //履約價 vTTMdays, //到期天數 iRate100, //無風險利率 0, //持有成本 vVolity100); //波動率 plot1(value1,"Delta");計算Delta需要的所有參數,都是透過GetSymbolInfo取得系統資料,所以現在不止台指選可以用,其他電子選、金融選甚至是個股選擇權都可以使用這個Delta指標。 有沒有注意到在取得標的價格的地方我們是怎麼寫的?
getsymbolfield("Underlying","收盤價");是的,這次我們同時強化了GetSymbolField的功能,在商品欄的位置可以直接使用"Underlying"或"標的"動態取得標的商品。如此一來,不止是本篇文章說明的選擇權希臘字母可以計算,要自行計算期貨商品的價差值也是可行的。以上是GetSymbolInfo的應用範例,GetSymbolInfo完整的支援項目清單請參考XSHelp說明