小編你好!
我想要在選股腳本裡取得某類股指數(不是大盤加權)的MACD值
請教如何寫腳本才能取得跨商品的MACD值呢?
謝謝!!
這個需要自己寫函數。沒有現成的可用。將系統內建的MACD函數修改,裡面的價格都用跨商品的價格替代即可。
請問許教授,我原來腳本如下,還請教授指導!! 感謝!!
array:
ValueArray[148](0),
ratioarray[148](0);
var:x(0);
var:si(0),difValue(0), macdValue(0), oscValue(0);// 商品所在的產業
settotalBar(60);
If symbol="2609.TW" or symbol="2615.TW" or symbol="2603.TW" then si=105;//......依此邏輯延伸數十個類股陣列
valuearray[105]=getsymbolField("I023370.TW", "收盤價");
MACD(valuearray[si], 12, 26, 9, difValue, macdValue, oscValue);
問題是outputfield出來的MACD和內建指標數值不一樣,並且同一類股的個股對應的MACD值也不一樣,不知錯誤在哪?
以下MACD的函數,您說修改價格,是指函數裡的"price" 嗎? ,可否指導小弟價格要怎麼寫呢?(我不知函數的價格和選股腳本的類股價格之間要怎麼連結)
SetBarMode(1);
Input: Price(numericseries), FastLength(numericsimple), SlowLength(numericsimple), MACDLength(numericsimple);
Input: DifValue(numericref), MACDValue(numericref), OscValue(numericref);
DifValue = XAverage(price, FastLength) - XAverage(price, SlowLength);
MACDValue = XAverage(DifValue, MACDLength) ;
OscValue = DifValue - MACDValue;
MACD函數裡面的Price參數,我們都賦予WeightedClose,它是(H+L+2*C)/4。你這裡要改用getsymbolfield去抓跨商品的這三個價格,且當作參數呼叫MACD函數。
太感謝許教授了 !
這個方法解決了我的問題了!!
4 評論