內建選股程式 "曾經一個月漲超過兩成的股票", 選出來的都是最新月份符合條件的商品,為何沒有過去月份符合條件的商品? 謝謝!
內建程式"曾經一個月漲超過兩成的股票"程式碼:
setbarfreq("M");
settotalbar(12);
if close>close[1]*1.2 then
begin
ret=1;
outputfield(1,intportion(date*0.01),0,"上漲的月份");
end;
結果:
使用 XS
內建選股程式 "曾經一個月漲超過兩成的股票", 選出來的都是最新月份符合條件的商品,為何沒有過去月份符合條件的商品? 謝謝!
內建程式"曾經一個月漲超過兩成的股票"程式碼:
setbarfreq("M");
settotalbar(12);
if close>close[1]*1.2 then
begin
ret=1;
outputfield(1,intportion(date*0.01),0,"上漲的月份");
end;
結果:
使用 XS
Hello, Primitive.
因為您條件設定的是目前這根K棒比前一根K棒的1.2倍,故您在十月每天的選股結果都是只有十月跟前一個月相比的結果,
要找到之前的MOM20%標的,簡單的作法是利用回測或者選股選擇指定日期去找到您要的日期選股結果。


當然也可以修改程式去找到近三個月曾經MOM20%的股票,例如:
setbarfreq("M");
settotalbar(12);
if
close > close[1] * 1.2
then begin
ret=1;
outputfield(1, intportion(date * 0.01), 0, "上漲的月份");
outputfield(2, (close - close[1]) * 100 / close[1], 2, "月份漲幅%");
end
else if
close[1] > close[2] * 1.2
then begin
ret=1;
outputfield(1, intportion(DateAdd(date, "M", -1) * 0.01), 0, "上漲的月份");
outputfield(2, (close[1] - close[2]) * 100 / close[2], 2, "月份漲幅%");
end
else if
close[2] > close[3] * 1.2
then begin
ret=1;
outputfield(1, intportion(DateAdd(date, "M", -2) * 0.01), 0, "上漲的月份");
outputfield(2, (close[2] - close[3]) * 100 / close[3], 2, "月份漲幅%");
end;

但是這種寫法,假設某檔股票9月份漲了20%,10月份也漲了20%,這只會顯示10月份的。
謝謝。
1 評論