您好,
想請問一下內建選股條件中的成交量X日趨勢上升or下降的邏輯?
目前有嘗試過
e.g. 五日
condition1= volume=highest(volume,5) and volume>average(volume,5);
or
Value1=average(volume,5);
Condition1=Value1>value1[1];
等等
但回測結果都與套用範本不太一樣, 因此想詢問一下語法的邏輯
謝謝
您好,
想請問一下內建選股條件中的成交量X日趨勢上升or下降的邏輯?
目前有嘗試過
e.g. 五日
condition1= volume=highest(volume,5) and volume>average(volume,5);
or
Value1=average(volume,5);
Condition1=Value1>value1[1];
等等
但回測結果都與套用範本不太一樣, 因此想詢問一下語法的邏輯
謝謝
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;
測試過腳本和內建的選股策略篩選出來會是相同的。
小幫手您好,我想請問一下成交量的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;
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;
小幫手您好,
針對這一個腳本我有2個問題想詢問:
1.腳本中condition1的意思在確認成交量的斜率是否小於一個數值,但是為什麼斜率的數值要小於-1*期間呢?
因為就我自己想的邏輯,如果是成交量的趨勢是向下的,斜率應該小於0即可
2.假設我的period設成5的話,那腳本中condition2中的getfieid("成交量")[period/2]他就會變成getfieid("成交量")[2.5],這個[2.5]抓取到的成交量是什麼期間的成交量呢?為什麼需要/2呢?
Hello Y_L_,
1. rateofchange 並不是斜率,是計算變動的百分比。
您可以開啟內建函數腳本來確認。
另外period也不會是0,除非您將condition1後面的 <= period 改為 <= 0 (因為period設為0的話會變成 rateofchange 計算出來都是0)。
2.如果有小數點的話,在判斷其別時會將無條件捨去。
所以會和 getfield("成交量")[2] 相同。
至於為什麼要除以2,小幫手推測 GetField("成交量") > GetField("成交量")[Period/2] 這樣可能是想表達量增的狀況。
小幫手好,那想再問一下condition1那樣寫(-1*Period)的邏輯是甚麼呢?
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%以上。
如果此條件不符合您的需求,當然可以改寫。
7 評論