xf_MACD計算上周數值錯誤

  •   642 
  • 最後發表   Aucker  2017 十月 19
Aucker 發文於   2017/08/17

小幫手好

 

以下程式碼要計算本周與上周的MACD DIF跟OSC數值,本周正確但上周的數值根本周一樣,請問錯在何處?

input: FastLength(8), SlowLength(13), MACDLength(9);
variable: difValue(0), macdValue(0), oscValue(0);

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

SetInputName(1, "DIF短期期數");
SetInputName(2, "DIF長期期數");
SetInputName(3, "MACD期數");

xf_macd("W", xf_weightedclose("W"), FastLength, SlowLength, MACDLength, difValue, macdValue, oscValue);

if difValue > 0 then ret = 1;

outputfield1(difValue, "本周DIF");
outputfield2(oscValue, "本周OSC");
outputfield3(difValue[1], "上周DIF");
outputfield4(oscValue[1], "上周OSC");

附加文件

排序方式: 標準 | 最新
XQ小幫手 發文於   2017/08/18

Hi Aucker,

如果要取跨頻率計算出來的技術指標數值( 也就是 xf_ ... ),

需使用 xf_GetValue 引用指定頻率前期值,相關詳細說明如連結網頁,

 

您先嘗試修改看看,小幫手抽空在提供完整修正後的程式碼範例,謝謝。

 

Aucker 發文於   2017/08/20

Hi 小幫手

 

改了幾次還是數值不對,請幫忙....

XQ小幫手 發文於   2017/08/21

Hi Aucker,

猜想您的選股策略資料頻率應該為日,

若是的話,資料讀取範圍要約設為

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

因為一週是大概由7日所組成,故需約乘以7

 

修改後的完整程式碼範例腳本如下,執行選股策略會跑得有點久,請耐心等候,謝謝

input: FastLength(8), SlowLength(13), MACDLength(9);
variable: difValue(0), macdValue(0), oscValue(0);

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

SetInputName(1, "DIF短期期數");
SetInputName(2, "DIF長期期數");
SetInputName(3, "MACD期數");

xf_macd("W", xf_weightedclose("W"), FastLength, SlowLength, MACDLength, difValue, macdValue, oscValue);
value1 = xf_getvalue("W",difValue,1);
value2 = xf_getvalue("W",oscValue,1);

if difValue > 0 then ret = 1;

outputfield1(difValue, "本周DIF");
outputfield2(oscValue, "本周OSC");
outputfield3(value1, "上周DIF");
outputfield4(value2, "上周OSC");

 

Aucker 發文於   2017/08/22

Hi 小幫手

 

執行選股策略會跑得有點久.....但一直都是連線逾時(2)......而沒有結果

 

解決的辦法:可以修改資料讀取範圍嗎?

 

XQ小幫手 發文於   2017/08/23

Hi Aucker,

修改資料讀取範圍,會因為資料筆數不足,造成計算的MACD數值不正確,

 

故可以另外寫一個資料頻率為週的MACD選股腳本,編譯完成後,在加入您的選股策略中,

就可以不用在同一個選股腳本,因為用到日跨週的跨頻率語法,而設較大的資料讀取範圍,

 

以上說明,謝謝。

Aucker 發文於   2017/10/19

多謝小幫手

  • 按讚來自於
  • b24524658
發表回覆
Close