撰寫DIF上揚語法有問題(選股)

  •   227 
  • 最後發表   Hardy  2017 七月 27
Hardy 發文於   2017/07/26

// DIF上揚 

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

variable: price(0);

SetInputName(1, "DIF短天數");

SetInputName(2, "DIF長天數");

SetInputName(3, "MACD天數");

price = WeightedClose();

 

Value1 = XAverage(price, FastLength) - XAverage(price, SlowLength);

 

ret = value1 > value1[1]; <<<比較昨日今日DIF

請問這個語法哪邊有問題?

為什麼前一天DIF大於今天的個股還是有幾支會被選出來?

以今天篩選結果為例,為什麼卜蜂會被選出來?

請問邏輯上有什麼問題?

感謝

XQ小幫手 發文於   2017/07/27

Hi Hardy,

小幫手查看此選股程式碼,由於您沒有提供資料讀取筆數相關資料,

故小幫手依照 選股欄位放大鏡:談OutputField 教學在末段程式碼加入

outputfield1(value1,"DIF當期");
outputfield2(value1[1],"DIF前期");

觀察 value1 與 value1[1] 計算數值是否正確?

對照技術分析MACD副圖結果發現,算出來的數值有問題,

猜測應該是資料讀取筆數為預設值10筆,資料筆數不夠計算,造成算出來的數值不正確。

 

於是小幫手參考 選股腳本_MACD黃金交叉 資料讀取筆數設定的程式碼範例

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

並在您的程式碼添加此資料讀取筆數設定後的完整程式碼範例如下

// DIF上揚 
input: FastLength(12), SlowLength(26), MACDLength(9);
variable: price(0);
SetInputName(1, "DIF短天數");
SetInputName(2, "DIF長天數");
SetInputName(3, "MACD天數");

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

price = WeightedClose();
Value1 = XAverage(price, FastLength) - XAverage(price, SlowLength);

ret = value1 > value1[1];
outputfield1(value1,"DIF當期");
outputfield2(value1[1],"DIF前期");

 

方才執行選股策略,跑出來的應該就會是正確的數值,如圖,呈請您試試看完整程式碼範例,謝謝。

 

 

 

發表回覆
Close