如何使用XS選股腳本撰寫EMA均線多頭排列的選股條件?

  •   5.5K 
  • 最後發表   Jack  2019 十一月 12
Jack 發文於   2016/08/18

如何使用XS選股腳本撰寫EMA均線多頭排列的選股條件?

 

在XS編輯器中,已有均線多頭排列的內建選股腳本,

但此選股腳本的均線,是以簡單移動平均(SMA)製成,

 

因此,今天 Jack 要向大家介紹,以選股腳本撰寫EMA均線多頭排列,

 

Jack 直接就從內建的SMA均線多頭排列的選股腳本下去修改,

首先提供給大家,EMA均線多頭排列的程式碼範例:

input:Leng1(50),Leng2(120),Leng3(240);

variable: ema1(0), ema2(0), ema3(0);

SetInputName(1,"短均線");
SetInputName(2,"中均線");
SetInputName(3,"長均線");

settotalbar(maxlist(Leng1, Leng2, Leng3) + 480);

ema1 = ema(close, Leng1);
ema2 = ema(close, Leng2);
ema3 = ema(close, Leng3);

condition1 = close > ema1;
condition2 = ema1 > ema2;
condition3 = ema2 > ema3;

if condition1 and condition2 and condition3 then 
ret = 1;

OutputField1(ema1, 2, "短均線");
OutputField2(ema2, 2, "中均線");
OutputField3(ema3, 2, "長均線");

 

程式碼修改之處大約說明:

程式碼第9行,由於EMA會有讀取資料範圍的問題,

        因此需要修改讀取資料範圍的設定。

程式碼第11行~第13行,由於要計算EMA移動平均,

             因此要改成EMA函數語法,來計算指數移動平均。

 

Maxlist 為計算多個數值內的最大值,

使用此函數語法在程式碼第9行,

以EMA平均線來說,須再加上 40筆資料,才能讀取正確的資料範圍。

 

這是今天(12:00)跑出來的選股結果,如圖

 

以上,提供給大家參考,謝謝。

 

 

排序方式: 標準 | 最新
old mane 發文於   2019/08/18

input:Leng1(6),Leng2(12),Leng3(24),Leng4(72),Leng5(144),Leng6(288);

setbarfreq("w");

variable: ma1(0), ma2(0), ma3(0), ma4(0), ma5(0), ma6(0);

SetInputName(1,"均線1");
SetInputName(2,"均線2");
SetInputName(3,"均線3");
SetInputName(4,"均線4");
SetInputName(5,"均線5");
SetInputName(6,"均線6");

settotalbar(maxlist(Leng1, Leng2, Leng3, Leng4, Leng5, Leng6) + 480);

ma1 = average(close, Leng1);
ma2 = average(close, Leng2);
ma3 = average(close, Leng3);
ma4 = average(close, Leng4);
ma5 = average(close, Leng5);
ma6 = average(close, Leng6);

condition1 = close > ma1;
condition2 = ma1 > ma2;
condition3 = ma2 > ma3;
condition4 = ma3 > ma4;
condition5 = ma4 > ma5;
condition6 = ma5 > ma6;

if condition1 and condition2 and condition3
    and condition4 and condition5 and condition6
    then ret = 1;

OutputField1(ma1,"均線1");
OutputField2(ma2,"均線2");
OutputField3(ma3,"均線3");
OutputField4(ma4,"均線4");
OutputField5(ma5,"均線5");
OutputField6(ma6,"均線6");

Jack大大

我將原始程式三條均線改成六條均線
在周頻率尋找六條均線多頭排列
找到了44檔符合條件的個股
但是這44檔並沒有49688028 這二檔
這二檔在週線圖看都有符合條件
想請教jack 大我的問題出在那
懇請賜教
感謝

腳本如下

 

old mane 發文於   2019/08/18

腳本如上
才對

old mane 發文於   2019/08/18
old mane 發文於   2019/08/18
Jack 發文於   2019/08/19

old mane 兄,

查看你撰寫的語法,

input:Leng1(6),Leng2(12),Leng3(24),Leng4(72),Leng5(144),Leng6(288);

最長的均線需要 288 期的資料,

故 4968、8028 這兩檔商品的週頻率沒有足夠的資料筆數,所以無法被篩選出來, 

 

另外,如果是運算簡單移動平均線(SMA)則可以把SettotalBar那行註解掉,用預設10筆去運算即可,

以上供參考,謝謝。

old mane 發文於   2019/08/19

jacK 大
8028 週率沒有足足夠的資料筆數我可以理解
但4968可以在週頻率看到sma288 為66.84
(沒有足夠的資料筆數)小弟這一點不懂
懇請jacK 大賜教
感謝你

 



Jack 發文於   2019/08/20

old mane 兄,

4968 的技術分析圖有包含「興櫃」股價資訊,

但是XS選股中心沒有包含興櫃股價資訊,

故 4968 扣除興櫃資訊(也就是初次上市櫃在 2015/11/13 開始至今的週資料)

是不足 288 週的期數,所以你的選股腳本策略是篩選不到 4968 這檔商品的,

以上說明,供參。

old mane 發文於   2019/08/21

了解
感謝Jack大的解惑

另外請教一個 print 問題
語法如下

print(file("D:\XS print\aa.log"), 

          "日期",formatdate("yyyy/MM/dd",Date),

          "時間",formattime("hh:mm:ss",time),

          stra,numtostr(bprice,2),

          SymbolName,Symbol,

          "進場符號 1")

          ;

列印出來的部份結果如下

日期 2019/08/15 時間 10:20:00 多單進場 27.65 今國光 6209.TW 進場符號 1 

日期 2019/08/15 時間 10:20:00 多單進場 41.60 金居 8358.TW 進場符號 1 

日期 2019/08/15 時間 10:35:00 多單進場 7.62 聯合再生 3576.TW 進場符號 1 

日期 2019/08/21 時間 11:05:00 多單進場 69.80 南亞科 2408.TW 進場符號 1 

日期 2019/08/15 時間 10:20:00 多單進場 46.60 技嘉 2376.TW 進場符號 1 

日期 2019/08/15 時間 10:35:00 多單進場 78.40 中美晶 5483.TW 進場符號 1 

日期 2019/08/15 時間 10:40:00 多單進場 73.30 奇力新 2456.TW 進場符號 1 

日期 2019/08/19 時間 10:45:00 多單進場 115.50 碩禾 3691.TW 進場符號 1 

日期 2019/08/15 時間 10:50:00 多單進場 87.50 直得 1597.TW 進場符號 1 

日期 2019/08/21 時間 10:10:00 多單進場 88.40 喬山 1736.TW 進場符號 1 

日期 2019/08/15 時間 10:20:00 多單進場 12.10 統一實 9907.TW 進場符號 1 

日期 2019/08/15 時間 11:00:00 多單進場 13.45 榮成 1909.TW 進場符號 1 

日期 2019/08/16 時間 10:05:00 多單進場 15.55 農林 2913.TW 進場符號 1 

日期 2019/08/15 時間 01:15:00 多單進場 17.70 三商 2905.TW 進場符號 1 

日期 2019/08/16 時間 09:15:00 多單進場 39.70 正新 2105.TW 進場符號 1

我要請問的是
我只想列印當天的資料(2019/08/21)
其他不要列印如2019/08/19,2019/08/15等等
請問語法怎麼下

在次感謝 jack大的回覆
感謝你

 

榛果 發文於   2019/11/03

 請問如果jack 大,我只想要寫在ema 40 之上的條件就好了,該怎麼寫呢 ? 我寫的跑出來的資料都不大對

 

XQ小幫手 發文於   2019/11/12

Hi 榛果

請問您有得到需要的結果嗎?

小幫手預設您只是要判斷短.中.長EMA都>40之上的話

請參考以下範例,您可以匯入看看是否符合您的需求,謝謝。

或者您可以提供您所撰寫的檔案,小幫手再協助您,謝謝。

 

附加文件

發表回覆
Close