想問問看 要如何設定條件,找到類似線型股
1.飆股(ex五日內漲幅設定) ok
2.達成第一個條件後...連續三日不跌破五日,並且...不漲超過停只漲幅的那一根高點的n%?
其他條件: 收盤價跟五日十日"即將"糾結?
第二個條件後半段,不知道怎麼設定比較好
跪求各位大大給點意見....最好是有現有的類似腳本可以做修改,感謝.....
xs 選股策略請益
- 191
- 最後發表 里歐 2023 三月 03
Hello 里歐,
您可以在第一個條件成立時用變數紀錄不跌破和不漲超過的價格並搭配 trueall 來做判斷。
舉例來說:
condition1 = 飆股條件;
if condition1 then begin
value1 = low; //不跌破價格
value2 = high *1.03; //不漲超過高點3%
end;
condition2 = trueall(value1 <> 0, 3) and trueall(close > value1, 3) and trueall(high < value2, 3); //要飆股條件成立且過了3根才開始判斷是近3根是否都介於 value1 和 value2
if condition2 then begin //當條件2滿足時重置 value1 和 value2
value1 = 0;
value2 = 0;
end;
Q:
1.想請教這行的意思condition2 = trueall(value1 <> 0, 3)
2.我的腳本內容如下,感覺是因為飆股條件,是再往前判斷,導致條件2日期沒對上???
前面這段註解不確定意思。我的需求是,判斷是飆股了,再開始確認往後三根k棒的狀況。
//要飆股條件成立且過了3根才開始判斷是近3根ooxxx
===============================================
我的腳本內容如下,感覺是因為飆股條件,是再往前判斷,導致條件2日期沒對上???
condition1 = close[4]>close[9]*1.15; // 飆股定義 五日內漲15%以上
if condition1 then begin
value1 = close[4]*0.97; //不跌破價格
value2 = close[4]*1.03; //不漲超過高點3%
end;
condition2 = trueall(value1 <> 0, 3) and trueall(close > value1, 3) and trueall(high < value2, 3);
//要飆股條件成立且過了3根才開始判斷是近3根是否都介於 value1 和 value2
//想詢問這邊開始判斷是從哪裡開始往後算三根紅k,應該不是close[4]往後的三根?
if condition2 then begin //當條件2滿足時重置 value1 和 value2
value1 = 0;
value2 = 0;
end;
if condition1 and condition2 then ret =1;
====================================================================
以上述腳本 20221125,預期立端應該要篩選到,但失敗,如下:
Hello 里歐,
網站上有教學區,裡面有XS與法的基礎和應用可以閱覽。
XSHelp 上可以查詢函數功能。
1. TrueAll 是判斷期間內條件是否都有達成。
2. 小幫手會建議,寫腳本的時候不要想著達成某條件接著往後看幾根,而是應該要想成幾根前達成某條件接著的K棒又符合某種狀況。
因為XS腳本無法取到未來的資料。
要判斷三根前是否達成某個條件,最簡單的方法是:
condition1 = 某條件;
if condition1[3] then ...
condition1 = close[4]>close[9]*1.15; // 飆股定義 五日內漲15%以上
這是往前第4天的收盤價大於往前9天的收盤價 15 % 以上,須注意這並沒有包含介於4~9天中間的天數有漲15%的狀況。
另外,您的 conditon1 已經是判斷4天前的狀況,所以condition1 成立的時候會是飆股條件成立的4天後的狀況,自然就不用 trueall(value1 <> 0, 3) 這個條件。
且 value1 和 value2 是在這一天才有值 (之前都是0), 那麼 trueall(high < value2, 3) 自然不會成立。
如果您的條件不想包含今天 (也就是前一天要符合條件) 的話,小幫手會修改為:
condition1 = close>close[5]*1.15; // 飆股定義 五日內漲15%以上
if condition1 then begin
value1 = close*0.97;
value2 = close*1.03;
end;
condition2 = condition1[4] and trueall(close[1] > value1, 3) and trueall(close[1] < value2, 3); //往前4天的K棒有達成飆股條件,且接下來3天的收盤價都位於 value1 和 value2 之間。
if condition2 then ret = 1;
另外建議您將數值print出來檢查會比較容易看出問題原因。
3 評論