如何用XS做一個盤中偵測股票收盤價觸布林軌道上軌的警示腳本?

  •   2.5K 
  • 最後發表   Jack  2023 二月 14
Jack 發文於   2016/08/04

如何用XS做一個盤中偵測股票收盤價觸布林軌道上軌的警示腳本?

 

請在XS編輯器中,新增一個警示腳本,

並將以下範例程式碼貼至該腳本中

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

settotalbar(Length + 3);

SetInputName(1, "期數");
SetInputName(2, "通道上緣");

Ret = close >= bollingerband(Close, Length, UpperBand);

 

程式碼邏輯大致說明,

當 收盤價 大於或等於布林通道上軌時,

通知使用者該股票商品的收盤價,已觸布林通道上軌,

 

程式碼語法說明

程式碼第 1 行,Input 是用來宣告腳本參數的名稱以及資料類型,

程式碼第 3 行,SetTotalBar 是指定腳本執行時的資料讀取範圍,

程式碼第 5 行,SetInputName 是設定輸入參數(Input)的顯示名稱,

 

程式碼第 8 行:

Ret 是一個系統的內建變數,他的數值會決定警示腳本以及選股腳本執行結果,

BollingerBand 是計算包寧傑通道線,回傳數值=BollingerBand(數列,期數,標準差倍數),

因此整段程式碼為,當 收盤價 >= 布林通道上軌時,通知使用者哪些股票商品觸及布林通道上軌,

 

以上程式碼說明,可以點選超連結,觀看更詳細的說明,以及範例說明,

 

最後,將此警示腳本加入策略雷達,

並將此策略內容設定完成後,

就可在盤中執行該策略,

使 收盤價觸及布林通道上軌 的股票商品,

通知給使用者,

 

 

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

 

 

 

 

 

  • 按讚來自於
  • Yin-yi Zhang
  • kingsman02
排序方式: 標準 | 最新
Jack 發文於   2016/08/05

加入一個均線EMA50大於EMA120大於EMA240的原則下,然後再觸上軌做偵測

 

先附上程式碼範例:

Input: 
    Length(20), 
    UpperBand(2), 
    ShortLength(50),
    MiddleLength(120),
    LongLength(240);

SetInputName(1, "期數");
SetInputName(2, "通道上緣");
SetInputName(3, "EMA短期");
SetInputName(4, "EMA中期");
SetInputName(5, "EMA長期");

settotalbar(Length + 3);
setbarback(maxlist(ShortLength,MiddleLength,LongLength));

if  EMA(close, 50) > EMA(close, 120)
and EMA(close, 120)> EMA(close, 240) then
    Ret = close >= bollingerband(Close, Length, UpperBand);

 

程式碼邏輯大致說明:

Jack 使用 if/Then 控制流程語法,

若 EMA50 > EMA120

且 EMA120 > EMA240 ,則再 判斷現價有無觸及布林通道上軌。

 

程式碼說明:

程式碼第 15 行

Setbarback 是指定腳本執行時的最大引用筆數

maxlist 是計算多個數值內的最大值

 

程式碼第 17 行 

If\Then 是判斷某個條件成立時該執行那個動作,

EMA 是計算序列資料的XQ指數移動平均。

 

如果以上語法需要詳細說明,請至超連結網頁,

均有較完整的詳細說明與範例說明,謝謝。

 

 

 

 

 

  • 按讚來自於
  • Yin-yi Zhang
  • kingsman02
kevin0428 發文於   2019/01/19

請問如果是反著做  改成觸下軌 

是要如何改""Ret = close >= bollingerband(Close, Length, UpperBand);""這段

因我有試著改 但跑出來的結果都不太對

謝謝

Jack 發文於   2019/01/21

kevin0428 兄,

請問如果是反著做  改成觸下軌 

是要如何改""Ret = close >= bollingerband(Close, Length, UpperBand);""這段

乘以 -1  就代表下軌的數值,在 BollingerBand 有相關說明:輸入正值時為計算上通道,輸入負值時為計算下通道,

例如以下程式碼範例,我這裡有使用 Print 去檢驗數值應該是對的,先供你參考,你再試試看:

Ret = close <= bollingerband(Close, Length, -1 * UpperBand);

 

  • 按讚來自於
  • magichouse
kevin0428 發文於   2019/01/21

感謝!

  • 按讚來自於
  • jacklee
jam0209 發文於   2023/02/02

請問如果是觸碰中軌的話要如何改,謝謝

XQ小幫手 發文於   2023/02/06

Hello jam0209,

 

布林中軌其實就是平均線。

所以您只要改用 average 函數計算後判斷價格是否穿越中線即可。

舉例來說:

input: length(20);

value1 = average(close, length);

 

condition1 = close cross over value1; //收盤價向上穿越平均線

condition2 = close cross under value1; //收盤價向下穿越平均線

 

if condition1 or condition2 then ret = 1;

 

網站上有教學區,裡面有XS語法的基礎和應用可以閱覽。

jam0209 發文於   2023/02/12

您好請問小編如果想加入kt權數以及低檔區=20和日ma期數要如何寫

input: length(20);

value1 = average(close, length);

 

condition1 = close cross over value1; //收盤價向上穿越平均線

condition2 = close cross under value1; //收盤價向下穿越平均線

 

if condition1 or condition2 then ret = 1;

 

XQ小幫手 發文於   2023/02/14

Hello jam0209,

 

KD的計算您可以參考 Stochastic 函數,內建的選股和指標腳本中也有許多KD相關的腳本可以閱覽。

length 參數控制的就是 MA 的期數,可以參考 average 函數的說明。

網站上有教學區,裡面有XS語法的基礎和應用可以閱覽。

發表回覆
Close