想詢問選股條件"成交量X日趨勢"的語法

  •   520 
  • 最後發表   Andy WU  2023 十一月 09
Andy WU 發文於   2021/10/28

您好,

想請問一下內建選股條件中的成交量X日趨勢上升or下降的邏輯?

目前有嘗試過
e.g. 五日
condition1= volume=highest(volume,5) and volume>average(volume,5);

or
Value1=average(volume,5);

Condition1=Value1>value1[1];

等等

但回測結果都與套用範本不太一樣, 因此想詢問一下語法的邏輯

謝謝

排序方式: 標準 | 最新
XQ小幫手 發文於   2021/11/02

Hello Andy WU,

 

小幫手查了一下,成交量的N日趨勢是上升的 條件的腳本應為:

input: Period(10); 

Condition1 = rateofchange(GetField("成交量"), period) >= Period; 

Condition2 = GetField("成交量") > GetField("成交量")[Period/2]; 

Condition3 = GetField("成交量") > average(GetField("成交量"), period); 

ret = condition1 and condition2 and condition3;

測試過腳本和內建的選股策略篩選出來會是相同的。

Y_L_ 發文於   2023/07/25

小幫手您好,我想請問一下成交量的n日趨勢是下降的就直接是把符號相反嗎?因為我將程式修改後與內建程式相比發現選出檔數不一樣,再麻煩小幫手解答,謝謝

input: Period(10); 

Condition1 = rateofchange(GetField("成交量"), period)<= Period; 

Condition2 = GetField("成交量") < GetField("成交量")[Period/2]; 

Condition3 = GetField("成交量") < average(GetField("成交量"), period); 

 

ret = condition1 and condition2 and condition3;

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

Hello Y_L_,

 

您的condition1 有誤,應該是 Condition1 = rateofchange(GetField("成交量"), period) <= -1*Period; 。

 

此為條件:

input: Period(10); 

Condition1 = rateofchange(GetField("成交量"), period) <= -1*Period; 

Condition2 = GetField("成交量") < GetField("成交量")[Period/2]; 

Condition3 = GetField("成交量") < average(GetField("成交量"), period); 

ret = condition1 and condition2 and condition3; 

 

Y_L_ 發文於   2023/10/25

小幫手您好,
針對這一個腳本我有2個問題想詢問:
1.腳本中condition1的意思在確認成交量的斜率是否小於一個數值,但是為什麼斜率的數值要小於-1*期間呢?
因為就我自己想的邏輯,如果是成交量的趨勢是向下的,斜率應該小於0即可

2.假設我的period設成5的話,那腳本中condition2中的getfieid("成交量")[period/2]他就會變成getfieid("成交量")[2.5],這個[2.5]抓取到的成交量是什麼期間的成交量呢?為什麼需要/2呢?

 

XQ小幫手 發文於   2023/10/31

Hello Y_L_,

 

1. rateofchange 並不是斜率,是計算變動的百分比。

您可以開啟內建函數腳本來確認。

另外period也不會是0,除非您將condition1後面的 <= period 改為 <= 0 (因為period設為0的話會變成 rateofchange 計算出來都是0)。

 

2.如果有小數點的話,在判斷其別時會將無條件捨去。

所以會和 getfield("成交量")[2] 相同。

至於為什麼要除以2,小幫手推測 GetField("成交量") > GetField("成交量")[Period/2] 這樣可能是想表達量增的狀況。

Y_L_ 發文於   2023/11/07

小幫手好,那想再問一下condition1那樣寫(-1*Period)的邏輯是甚麼呢?

 

XQ小幫手 發文於   2023/11/09

 Hello Y_L_,

 

網站上有教學區,裡面有XS語法的基礎和應用,建議您先閱覽該區的文章。

 

您可以嘗試帶數字進去,或許會比較好理解。

假設 period 為 5 好了。

rateofchange 會計算當期與5期前的成交量變動率。 (100 * (volume - volume[5]) / volume[5])

在成交量下降時,此值計算出來會為負值。

 

所以 Condition1 = rateofchange(GetField("成交量"), period) <= -1*Period; 在 Period 為 5 的狀況下就會是:

成交量和5期前相比,要小於 -5 %,也就是成交量要減少5%以上。

 

如果此條件不符合您的需求,當然可以改寫。

發表回覆
Close