MCAD 0軸上的問題

  •   149 
  • 最後發表   Dorfairl  2023 五月 22
Dorfairl 發文於   2023/05/18

Hi  

想請問一下MACD 日跟周 都要在0軸上,需要怎麼修改。

另外程式都跑好久,可以修改讓程式跑快一點嗎?//------------- 讀取足夠K棒(可改) -------------

input: W_FastLength(12), W_SlowLength(26), W_MACDLength(9);

 

variable: W_DIF(0), W_MACD(0), W_OSC(0);

 

SetTotalBar(maxlist(50,(maxlist(W_FastLength,W_SlowLength,6) + W_MACDLength) * 3 + 8 + 12));

 

// ========== 周均線 ==========

value1 = average(GetField("close", "W"),10); //10MA均線 

value2 = average(GetField("close", "W"),30); //30MA均線 

value3 = average(GetField("close", "W"),40); //40MA均線

value4 = average(GetField("close", "W")[1],40); //上1周40MA均線

value5 = average(GetField("close", "W")[2],40); //上2周40MA均線

value6 = average(GetField("close", "W")[3],40); //上3周40MA均線

 

 

// ==========  MACD ==========  

xf_MACD("W",xf_weightedclose("W"),W_FastLength,W_SlowLength,W_MACDLength,W_DIF,W_MACD,W_OSC); //MACD宣告參數設定

 

 

condition1 = (value1 > value2 ) and (value2 > value3); //周10>30>40

 

condition6 = (W_DIF>0);

condition7 = (value3 > value4 ) and (value4 > value5) and (value5 > value6 ); //周40MA連續上彎一個月

 

if condition1 and condition6 and condition7

then ret =1 ;

XQ小幫手 發文於   2023/05/22

 Hello Dorfairl,

 

1.小幫手不知道您頻率為何。

若使用日頻率的話,您目前的腳本只有計算週頻率的MACD,要使用MACD函數另外計算日頻率的MACD並設定條件。

另外,由於您是跨頻率,所以settotalbar也需要針對使用的頻率作調整。

舉例來說,日頻率上跨到週頻率的話,原本的 SetTotalBar((maxlist(FastLength,SlowLength,6) + MACDLength) * 4);

就應該修改為 SetTotalBar((maxlist(FastLength,SlowLength,6) + MACDLength) * 4 * 5);,因為一週有5天。

 

2.您需要的計算筆數會影響到運算的時間,所以使用到MACD這種需要運算大量前期值的指標就會花上比較多時間。

另外,可以使用 xf_getvalue 來取得指定頻率的前期值,所以並不需要另外計算 value4 ~ value6。

發表回覆
Close