區間漲跌幅問題

  •   1K 
  • 最後發表   tdf118  2017 十一月 14
tdf118 發文於   2017/11/10

為了寫出精確的區間漲跌幅

翻到了這篇

https://xstrader.net/%E8%A8%88%E7%AE%97%E5%8D%80%E9%96%93%E6%BC%B2%E8%B7%8C%E5%B9%85%E7%9A%84%E8%87%AA%E8%A8%82%E5%87%BD%E6%95%B8/

程式碼

//區間漲跌幅語法

input:startday(20170101,"區間起始日");
input:endday(20171110,"區間結束日");
input:ratio(10,"最低漲幅");
 
value1 = rangechange(close,startday,endday);
if value1 >= ratio
then ret = 1;
 
outputfield(1,value1,1,"區間漲跌幅");

 

選股結果如圖

但目測有很多檔不精確

比如2313  實際上是漲2倍多  但選股數據只有漲41%

 

另外請教小編

該如何改寫為近20日的區間漲跌幅?

 

謝謝

附加文件

排序方式: 標準 | 最新
tdf118 發文於   2017/11/10

區間漲跌幅找到網站出處了

https://www.xq.com.tw/lesson/xspractice/%E7%94%A8xs%E5%AF%AB%E7%B1%8C%E7%A2%BC%E9%9B%86%E4%B8%AD%E5%BA%A6%E7%9A%84%E9%81%B8%E8%82%A1%E7%AD%96%E7%95%A5/

覺得不錯用就拿來改良為選取〝漲幅下限〞的股票

但選股結果總是有幾檔是不精確的(會是跌下來的下限)

程式碼

input:days(5,"天數");
input:percent(10,"漲幅下限");
 
if close[ days - 1 ] <> 0 and close > close[ days - 1 ]
  then value3 = ( close - close[ days - 1] ) / close[ days - 1 ] * 100;
 
if value3 > percent 
  then ret = 1;
 
SetOutputName1("區間漲幅");
OutputField1(value3);

選股結果如圖

比如3588最近5天是跌幅至少10% 但卻選出來了

這語法似乎還得請小編改良一下

 

謝謝

 

 

 

tdf118 發文於   2017/11/13

這兩題的程式語法都是網站範例

實驗結果是有問題

還得改寫為更精確的

請小編別漏掉喔....

 

謝謝

XQ小幫手 發文於   2017/11/14

你好:

Q1:區間漲跌幅部分是你有所誤解,跑出來數值會不精確是因為資料讀取筆數只有設10筆的關係,你的起訖區間將近快一年,小幫手建議設定220根以上,請參考說明網頁:資料讀取範圍與腳本執行的關係

另外由於0101是休市狀態,沒有K棒,所以會往前抓到20161230的值,所以起始日要設定20170103才會正確,可以參考:GetBarOffset - (系統函數)

Q2:這問題是由於當條件未過時,value3會取到上次條件達成時的數值,所以要將value3重新設定,請將腳本改成:

input:days(5,"天數");

input:percent(10,"漲幅下限");

variable:pricerange(0);

 

value3 = 0;

 

if close[ days - 1 ] <> 0 and close > close[ days - 1 ]

  then value3 = ( close - close[ days - 1] ) / close[ days - 1 ] * 100;

  

if value3 > percent  

  then ret = 1;

 

value1 = close[ days - 1 ];

SetOutputName1("區間漲幅");

OutputField1(value3); 

 

應該就會對了。

以上說明

tdf118 發文於   2017/11/14

原來是要加上value3 = 0;

真是吃驚

 

謝謝小幫手

發表回覆
Close