XS MACD 計算

  •   305 
  • 最後發表   hsinboo  2024 十一月 19
hsinboo 發文於   2024/11/12

小編好:

碰到計算MACD, 使用不同頻率下的OSC值。以下腳本可過編譯器,但是執行程式時會超時跑不出結果。請小編幫我看一下,出了什麼問題或要如何解決。謝謝。

Input:FastLength(12),SlowLength(26),MACDLength(9); 

Var:difValue(0),macdValue(0),oscValue(0);

Var:WdifValue(0),WmacdValue(0),WoscValue(0);

SetTotalBar((maxlist(FastLength,SlowLength,6) + MACDLength) * 4 * 7 );

// 計算 

xf_macd("D",xf_weightedclose("D"),FastLength,SlowLength,MACDLength,difValue,macdValue,oscValue);//計算今日MACD 

xf_macd("W",xf_weightedclose("W"),FastLength,SlowLength,MACDLength,WdifValue,WmacdValue,WoscValue);//計算本周MACD 

if difvalue>=-0.60

and oscvalue>=-0.07

and Wdifvalue>=-0.35

and Woscvalue>=-0.18

then ret=1;

outputfield1(oscvalue,2,"osc");

outputfield2(Woscvalue,2,"Wosc");

排序方式: 標準 | 最新
虎科大許教授 發文於   2024/11/12

兩個問題:

(1)你用日頻率跨週頻率選股,主頻率是日,就不需要再跨日,這樣只會增加系統不必要的負擔。

(2)跨頻率操作,運算較慢,若從一千八百多檔選股,需要花較長的時間。我試著從中型100選股,就都OK,選了25檔。

Input:FastLength(12),SlowLength(26),MACDLength(9); 
Var:difValue(0),macdValue(0),oscValue(0);
Var:WdifValue(0),WmacdValue(0),WoscValue(0);
SetTotalBar((maxlist(FastLength,SlowLength,6) + MACDLength) * 4 * 7 );
// 計算 
macd(weightedclose,FastLength,SlowLength,MACDLength,difValue,macdValue,oscValue);//計算今日MACD 
xf_macd("W",xf_weightedclose("W"),FastLength,SlowLength,MACDLength,WdifValue,WmacdValue,WoscValue);//計算本周MACD 
if difvalue>=-0.60
and oscvalue>=-0.07
and Wdifvalue>=-0.35
and Woscvalue>=-0.18
then ret=1;
outputfield1(oscvalue,2,"osc");
outputfield2(Woscvalue,2,"Wosc");

hsinboo 發文於   2024/11/12

收到,謝謝小編。

XS小編 發文於   2024/11/19

Hello hsinboo,

 

小編補充,您的資料讀取筆數在換算成週時可以乘上5就好 (每週的工作天為5),這樣所需計算的筆數就會減少,降低逾時的可能性。

另外由於選股策略可以設定多個條件,建議您可以將週頻率的MACD和日頻率的MACD分開來計算 (兩個條件,一個設定為日一個設定為週),這樣也能夠大幅減少所需的筆數。

發表回覆
Close