請問如何在回測中
加入當大盤的 日級別 MACD OSC為正值時
才選出個股
謝謝 !
您好,可以使用GetSymbolField分別取得大盤(TSE.TW)相關資料,再依照MACD函數將值帶入並計算結果,例如:
input:mashortlength(12,"短期數"),longlength(26,"長期數"),macdlength(9,"MACD平滑期數");
Var:TSEClose(0),TSEHigh(0),TSELow(0),WeightedTSEClose(0);
TSEClose=GetSymbolField("TSE.TW","收盤價","D");
TSEHigh=GetSymbolField("TSE.TW","最高價","D");
TSELow=GetSymbolField("TSE.TW","最低價","D");
WeightedTSEClose=(2 * TSEClose + TSEHigh + TSELow) / 4;
value1 = MACD(WeightedTSEClose,mashortlength,longlength,macdlength,value2,value3,value4);
ret =1;
outputfield(1,value2,"DIF");
outputfield(2,value3,"MACD");
outputfield(3,value4,"OSC");
篩選結果如下圖,謝謝。


您可以依照您的需求加入判斷,以利您後續操作,謝謝。
hi~請教一下,也是想用大盤MACD來參考,但是發現算出來的值,跟實際值不一樣,不知道是怎麼了?我是直接COPY你的那一段程式


瘋狂北極熊 您好
主要是資料讀取筆數的問題喔!
您應該是設太小才會發生此問題
input:mashortlength(12,"短期數"),longlength(26,"長期數"),macdlength(9,"MACD平滑期數");
Var:TSEClose(0),TSEHigh(0),TSELow(0),WeightedTSEClose(0);
SetTotalBar((maxlist(mashortlength,longlength,6) + MACDLength) * 4);
TSEClose=GetSymbolField("TSE.TW","收盤價","D");
TSEHigh=GetSymbolField("TSE.TW","最高價","D");
TSELow=GetSymbolField("TSE.TW","最低價","D");
WeightedTSEClose=(2 * TSEClose + TSEHigh + TSELow) / 4;
value1 = MACD(WeightedTSEClose,mashortlength,longlength,macdlength,value2,value3,value4);
ret =1;
outputfield(1,value2,"DIF");
outputfield(2,value3,"MACD");
outputfield(3,value4,"OSC");
請使用以上的程式碼跑看看,
我直接在語法中建立正確的筆數
請問小幫手, 如果是要使用大盤"昨天" 或前天的MACD的DIF, MACD和OSC,應該怎麼寫呢?
6 評論