使用XS選股腳本撰寫日期條件式策略

  •   1K 
  • 最後發表   Jack  2018 三月 01
Jack 發文於   2018/02/23

大家好,

 

分享 如何使用選股教本撰寫類似以下所述的日期條件式策略:

  當condition1成立後再遇到condition2成立在遇到condition3成立,

  也就是這三個條件成立的日期很有可能是不同的,

  如condition1在1/2成立 , 接下來condition2在1/10成立,  再來condition3在1/12成立。

 

假設:

  condition1為K線跌破日布林上軌

  condition2為KD死亡交叉且當時K值大於80

  condition3為量均死亡交叉

 

則選股腳本大致撰寫說明為:

1. 因 XS架構為時間序列 故使用此架構,判斷各條件觸發時,各紀錄的變數歸零,否則累加 1 。

2. 呈 1. 所述即可取得相對位置,再使用 if 判斷成立時間的先後順序,即可完成,也能得知最近各訊號的日期。

3. 資料讀取筆設須注意要設充足,此範例設200筆( 在選股中心介面設置即可 )。

 

 範例選股腳本語法如下:

value1 = bollingerband(close, 20, 2.05);
if close< value1 then value100 = 0 else value100 += 1;

variable : rsv_D(0),kk_D(0),dd_D(0);
stochastic(9,3,3,rsv_D,kk_D,dd_D);
if kk_D cross under DD_D and kk_D > 80 then value101 = 0 else value101 += 1;

value2 = average(volume,5);
value3 = average(volume,20);
if value2 cross under value3 then value102 = 0 else value102 += 1;

if value100 > value101 and value101 > value102 then ret = 1;

outputfield1(date[value100],"最近A訊號日期");//K線跌破日布林上軌
outputfield2(date[value101],"最近B訊號日期");//KD死亡交叉且當時K值大於80
outputfield3(date[value102],"最近C訊號日期");//量均死亡交叉

 

以上提供給大家參考,有問題歡迎詢問。

排序方式: 標準 | 最新
shoui 發文於   2018/02/27

 您好

關於以上寫法幾個疑問

1.當第一個條件"K線跌破日布林上軌"時,value100=0,
   當第二個條件"KD死亡交叉且當時K值大於80",value101=0,
   當第三個條件"量均死亡交叉",value102=0,
以這樣的情況,"if value100 > value101 and value101 > value102 then ret = 1;"似乎是不會達成的?

也不太明白"再使用 if 判斷成立時間的先後順序,即可完成,也能得知最近各訊號的日期。"如何達成?

2.不太明白"資料讀取筆設須注意要設充足"的原因?是否可稍加說明?

3.若是用在警示條件是否可行?因為我這樣判斷是希望可以用在策略雷達

以上請教 謝謝

 

Jack 發文於   2018/03/01

shoui 兄,

1.當第一個條件"K線跌破日布林上軌"時,value100=0, 

   當第二個條件"KD死亡交叉且當時K值大於80",value101=0,

   當第三個條件"量均死亡交叉",value102=0,

以這樣的情況,"if value100 > value101 and value101 > value102 then ret = 1;"似乎是不會達成的?

請將範例的判斷式調整為 if value100 >= value101 and value101 >= value102 then ret = 1; 再試試看是否符合您的策略條件。

 

也不太明白"再使用 if 判斷成立時間的先後順序,即可完成,也能得知最近各訊號的日期。"如何達成?

我們從結果往回推,故先看

outputfield1(date[value100],"最近A訊號日期");//K線跌破日布林上軌

這是將日期列出來在選股列表上,的程式碼,主要是這個 date[value100] 只要知道最近策略觸發的K棒是哪根,就可知道日期。

再來看以下的程式碼,

if kk_D cross under DD_D and kk_D > 80 then value101 = 0 else value101 += 1;

運算出最近觸發條件的相對位置,得知與最新的K棒相對位置後,即可知道K棒是哪根,

此程式碼是,在觸發條件的時候歸零,若無觸發條件則累加,所以就能得知K棒的相對位置。

 

2.不太明白"資料讀取筆設須注意要設充足"的原因?是否可稍加說明?

請查看 資料讀取範圍與腳本執行的關係,根據此文說明,若資料讀取筆數設的不夠長,則運算出來的相關技術指標恐有問題。

 

3.若是用在警示條件是否可行?因為我這樣判斷是希望可以用在策略雷達

應該不行,還要再修改,因為選股腳本是在盤後執行,僅執行一次腳本運算,

但是警示腳本在盤中執行,若勾選逐筆洗價的選項,則依據商品每成交一次,則腳本運算一次,這樣計算出來的相對位置變數,會有問題。

 

發表回覆
Close