警示腳本 盤末開布林股票

  •   210 
  • 最後發表   仕潁  2024 三月 08
仕潁 發文於   2024/03/06

小幫手你好,我寫了一個策略,要抓出午盤以後有開布林的股票 請問這樣有錯嗎

條件1: 股價大於布林上軌(日頻率的布林上軌)

條件2: 預估量爆量(比前日量或五日均量 多1.68倍)

條件3: 月線斜率大於0(月線是上揚的)

執行頻率:5min ,執行時間區段1200-1230

 

Input: Length(20), UpperBand(2);

settotalbar(3000);

// 高於上軌

SetInputName(1, "期數");

SetInputName(2, "通道上緣");

condition1 =  close >= bollingerband(GetField("Close","D"), Length, UpperBand);

 

//爆量

value1 = GetField("EstimateVolume");

value2 = Average(GetField("Volume", "D")[1], 5); //五日均量

value3 = (GetField("Volume", "D")[1] );//前日量

condition2 = ((value1 > value2 * 1.68 ) OR  (value1 > value3 * 1.68)) ;

 

//月線斜率

value4 = average(GetField("收盤價","D"),20);

condition3 =  LinearRegSlope(value4,20) > 0; //計算收盤價20期的線性迴歸線斜率

Begin

if condition1 and condition2 and condition3 

then ret=1;

end;

 

排序方式: 標準 | 最新
XS小編 發文於   2024/03/08

 Hello 仕潁,

 

小編建議您先閱覽網站上的教學區教學影片,裡面有XS語法的基礎和應用可以閱覽。

 

須注意變數的執行頻率是跟著執行頻率,故

value4 = average(GetField("收盤價","D"),20);

condition3 =  LinearRegSlope(value4,20) > 0; //計算收盤價20期的線性迴歸線斜率

這計算出的會是 近20期 (5分鐘頻率) 的 20日平均價格 的斜率。

由於 LinearRegSlope 沒有跨頻率的函數,故您需要自行撰寫計算,或是單純判斷當日與20日前的均價大小。

舉例來說:

value4 = average(GetField("收盤價","D"),20);

value5 = average(GetField("收盤價","D")[20],20);

condition3 =  value4 > value5;

 

另外這種寫法是錯誤的,可參考 begin 的說明

Begin

if condition1 and condition2 and condition3 

then ret=1;

end;

 

應該撰寫為 if condition1 and condition2 and condition3 then ret=1;

 

且您的腳本並不需要設定這麼長的資料讀取筆數

由於基本上沒有使用到前期值,所以資料讀取筆數使用預設的200筆就足夠。

不過資料引用筆數會需要設長一些,若您有用小編上面的寫法取20日前的收盤價的話,那麼可以使用 setbackbar(21, "D"); 來取得足夠的資料長度。

仕潁 發文於   2024/03/08

好的 感謝解答!

發表回覆
Close