我利用選股統計機率 每次回測還是一堆標的有問題

  •   124 
  • 最後發表   qwerty87798  2023 三月 23
qwerty87798 發文於   2023/03/19

//黑K機率

input:N(40,"樣本數");

setTotalBar(n);

var: a1(0),a2(0),price(0),pab(0),pba(0);

 

if open > close then a1+=1 ;

if open < close then a2+=1 ; //上漲機率

 

pab = a1/n ;

pba=  a2/n; //上漲次數機率

if a1 > 5  and average(volume,20) > 1000  and  pba*100 >= 70  then ret = 1 ;

outputField1(pab*100,"下跌機率");

outputField2(a1,"下跌次數"); 

outputField3(pba*100,"上漲機率"); 

程式碼如上 我利用選股裡面 我把上漲70%的挑出來 , 每日的選股清單應該只有10隻以內 但是我用選股回測每天交易都超過20隻 明明清單上就只有10隻回測可以跑20隻 求小幫手查問題

排序方式: 標準 | 最新
XQ小幫手 發文於   2023/03/21

Hello qwerty87798,

 

您的這種寫法在選股執行時不會出問題,因為 settotalbar(n) 的關係所以只會執行n筆資料。

但是在回測時卻不是如此,a1 和 a2 會隨著執行區間長短而變化。

舉例來說,您回測過去一年的資料的話,腳本實際上會計算過去1年 + 40個開盤日的資訊。

您可以使用print將相關數值在回測時印出即可得知。

 

建議您可以將回測腳本修改為:

if open > close then a1+=1 ;

if open < close then a2+=1 ; 

value1 += 1;

 

pab = a1/value1;

pba=  a2/value1;

這樣在計算上漲下跌機率時就不會受到執行區間的長短影響。 

qwerty87798 發文於   2023/03/22

對齁還有這一層關係  謝謝小幫手!!

另外這樣我如果要在回測系統抓當根日期的前40跟K棒 是不是就無法做到了

XQ小幫手 發文於   2023/03/23

Hello qwerty87798,

 

小幫手會建議您改用迴圈去檢查過去40根Bar的資訊。

不過這樣的話資料讀取筆數就可以設的少一些來避免大量運算。

舉例來說:

input:N(40,"樣本數");

settotalbar(1);

var: a1(0),a2(0),price(0),pab(0),pba(0);

 

a1 = 0;

a2 = 0;

for value1 = 0 to (N - 1) begin

    if open[value1] > close[value1] then a1 += 1;

    if open[value1] < close[value1] then a2 += 1;

    end;

 

pab = a1 / N;

pba = a2 / N;

發表回覆
Close