請問心理線語法的問題

  •   351 
  • 最後發表   隔壁老王  2021 五月 25
隔壁老王 發文於   2021/04/12

各位好,小弟目前想寫一個關於心理線選股的語法,但是都找不到相關範例,懇請眾高手幫忙,謝謝

例如:我要寫出幾個月內10日心理線為最低,請問要如何編寫?

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

Hello 隔壁老王,

 

心理線在XS裡可以用 PSY 函數來計算。

依照您的舉例的話,腳本可以是這樣:

inputs: psy_len(10, "心理線長度"), check_len(66, "檢查長度");     //主圖頻率為日,檢查長度視您想要多長的天數

variables: psy_val(0), psy_lowest(0);

 

psy_val = psy(psy_len);            //psy_val 是心理線的值

psy_lowest = lowest(psy_val, check_len);        //psy_lowest 是在檢查長度的天數裡心理線最低的值

隔壁老王 發文於   2021/04/14

謝謝小幫手,所以我要檢查所有股票的心理線是不是有2個月內新低的話是

inputs: psy_len(10, "心理線長度"), check_len(60, "檢查長度");

variables: psy_val(0), psy_lowest(0);

psy_val = psy(psy_len); 

psy_lowest = lowest(psy_val, check_len);

then ret=1;

是這樣嗎?

XQ小幫手 發文於   2021/04/15

Hello 隔壁老王,

 

您需要下條件來檢查今日的心理線是否是60個工作天最低。

所以應該是

inputs: psy_len(10, "心理線長度"), check_len(60, "檢查長度");

variables: psy_val(0), psy_lowest(0);

psy_val = psy(psy_len); 

psy_lowest = lowest(psy_val, check_len);

if psy_val = psy_lowest then ret=1;     //若今日心理線為最低則發出警示

隔壁老王 發文於   2021/04/15

謝謝小幫手,那請問  variables: psy_val(0), psy_lowest(0);  這一句是代代表什麼意思?

隔壁老王 發文於   2021/04/15

另外,我的兩個月內新低是只要當天是新低,期間不要有一樣低的,那又該如何編寫?

XQ小幫手 發文於   2021/04/15

Hello 隔壁老王,

 

variables: psy_val(0), psy_lowest(0); 這一行代表的是令兩個變數,取名為 psy_val 和 psy_lowest,並讓它們的初值為0。

兩個月新低的話可以使用 NthLowest 函數

修改後的範例會是:

inputs: psy_len(10, "心理線長度"), check_len(60, "檢查長度");

variables: psy_val(0), psy_lowest(0);

psy_val = psy(psy_len); 

psy_lowest = lowest(psy_val, check_len);

if psy_val = psy_lowest and psy_lowest < NthLowest(2, psy_val, check_len) then ret=1;  //這行會確認心理線是否為最低值且小於次低值

 

另外本網站裡有提供 XS語法 教學,您可以參考看看。

隔壁老王 發文於   2021/04/15

 好的,謝謝小幫手

隔壁老王 發文於   2021/05/06

Hello 隔壁老王,

 

您需要下條件來檢查今日的心理線是否是60個工作天最低。

所以應該是

inputs: psy_len(10, "心理線長度"), check_len(60, "檢查長度");

variables: psy_val(0), psy_lowest(0);

psy_val = psy(psy_len); 

psy_lowest = lowest(psy_val, check_len);

if psy_val = psy_lowest then ret=1;     //若今日心理線為最低則發出警示

 

請問小幫手,假如60天內有某幾天一樣低的時候,是否還能搜尋出符合語法條件的標的?? 例如五天前心理線為最低,今天搜尋也是最低,這樣一樣篩選得出來嗎?另外,

篩選出的標的都是心理線數值為0才會選得出來,這樣會失去很多非0值的標的,想請問有什麼地方可以修改?

XQ小幫手 發文於   2021/05/06

Hello 隔壁老王,

 

如果有2個相同的最低值的話,NthLowest(2, psy_val, check_len)會找到另一個相同的最低值。

小幫手建議您可以從以下兩種選擇適合您的

if psy_val = psy_lowest and psy_lowest < NthLowest(2, psy_val, check_len) then ret=1; //如果有兩個相同的最低值(其中一個為今天)的話不會篩選出來

if psy_val = psy_lowest then ret=1;  //如果有兩個相同的最低值的話會篩選出來

 

另外,篩選出來的標的並不是心理線的數值為0,而是依照您的條件:幾個月內心理線為最低值的商品。

隔壁老王 發文於   2021/05/06

謝謝小幫手

顯示更多回應 發表回覆
Close