加權指數月線RSI觸發訊號

  •   154 
  • 最後發表   MakeMoneyFromStock  2023 四月 11
MakeMoneyFromStock 發文於   2022/11/29

XQ小幫手您好,

有個警示概念邏輯很簡單,我想在盤中用30分K的頻率去監控加權指數的月線RSI,如果小於門檻值就發出警示,XS如下:

Input: rsi_len(3, "月RSI");

Input: threshold(10, "月RSI-門檻值");

Var: rsi_value(0);

 

//rsi_value = xf_RSI("M",GetField("Close","M"),rsi_len);

rsi_value = xf_RSI("M", Close, rsi_len);

 

If rsi_value < threshold Then

Begin

Ret = 1;

Print("訊號時間: "+datetoString(Date)+" "+timetoString(CurrentTime));

Print("觸發價位: "+NumToStr(Close, 2));

Print("3月RSI值: "+NumToStr(rsi_value, 2));

End;


Q1. 請問以下兩種寫法有何不同?

rsi_value = xf_RSI("M",GetField("Close","M"),rsi_len);

rsi_value = xf_RSI("M", Close, rsi_len);

 

Q2. 實際執行起來,例如跑幾天前開始的回測,print數值都有些奇怪(RSI都是0),想了解是否XS有誤或是屬性設定上的錯誤?

指定頻率:30分鐘

觸發設定:啟動後只觸發一次+逐筆洗價

資料讀取:2022/11/25

執行商品:加權指數TSE


 

執行結果:

訊號時間: 2022/11/25 05:44:53 

觸發價位: 14774.88 

3月RSI值: 78.55 

訊號時間: 2022/11/28 05:44:53 

觸發價位: 14612.57 

3月RSI值: 6.73 

訊號時間: 2022/11/28 05:44:53 

觸發價位: 14563.97 

3月RSI值: 0.96 

訊號時間: 2022/11/28 05:44:53 

觸發價位: 14596.62 

3月RSI值: 0.00 

訊號時間: 2022/11/28 05:44:53 

觸發價位: 14619.73 

3月RSI值: 0.00 

訊號時間: 2022/11/28 05:44:53 

觸發價位: 14605.13 

3月RSI值: 0.00 

訊號時間: 2022/11/28 05:44:53 

觸發價位: 14608.18 

3月RSI值: 0.00 

訊號時間: 2022/11/28 05:44:53 

觸發價位: 14619.92 

3月RSI值: 0.00 

訊號時間: 2022/11/28 05:44:53 

觸發價位: 14609.43 

3月RSI值: 0.00 

訊號時間: 2022/11/28 05:44:53 

觸發價位: 14556.87 

3月RSI值: 0.00 

訊號時間: 2022/11/29 05:44:53 

觸發價位: 14525.45 

3月RSI值: 0.00 

訊號時間: 2022/11/29 05:44:53 

觸發價位: 14600.64 

3月RSI值: 0.00 

訊號時間: 2022/11/29 05:44:53 

觸發價位: 14580.20 

3月RSI值: 0.00 

訊號時間: 2022/11/29 05:44:53 

觸發價位: 14582.32 

3月RSI值: 0.00 

訊號時間: 2022/11/29 05:44:53 

觸發價位: 14645.76 

3月RSI值: 0.00 

訊號時間: 2022/11/29 05:44:53 

觸發價位: 14660.41 

3月RSI值: 0.00 

訊號時間: 2022/11/29 05:44:53 

觸發價位: 14676.48 

3月RSI值: 0.00 

訊號時間: 2022/11/29 05:44:53 

觸發價位: 14674.29 

3月RSI值: 0.00 

訊號時間: 2022/11/29 05:44:53 

觸發價位: 14709.64 

3月RSI值: 0.00 


感謝小幫手

排序方式: 標準 | 最新
XQ小幫手 發文於   2022/11/30

Hello MakeMoneyFromStock,

 

1.您可以在內建函數腳本中觀看 xf_RSI 函數是如何運算的。

rsi_value = xf_RSI("M", Close, rsi_len); 會取用錯誤的數值 (執行頻率的收盤價) 計算。

 

2.RSI是種需要前期值的函數,如果是相同頻率的話大約需要 期數 * 9 的長度。

而您是使用月,那麼就需要 (期數 * 9) * 9 * 22  筆資料讀取筆數才能夠算出正確的數值。(台股的話)

但設這麼長應該會比較耗效能,XQ也沒辦法設這麼長的資料讀取筆數。

小幫手會建議您使用較大的頻率 (ex 日) 去運算會比較好,或是在選股中執行。

需注意 xf 和 xfmin 函數無法用在期貨上。

MakeMoneyFromStock 發文於   2023/04/01

謝謝小幫手,再請教一個觀念

即使設不同頻率,但是都有勾選逐筆洗價,到底是什麼差別?

例如有策略a設日線頻率,策略b設30分鐘頻率,

兩個都開逐筆洗價,到底影響的是什麼呢?

我的理解是運行時,程式中的O,C,H,L,之類的應該逐筆時是一樣的數值再運算?

可有個簡單範例介紹說明差別呢?

在交易,警示,選股也各是什麼差別呢?

感謝您

XQ小幫手 發文於   2023/04/11

Hello MakeMoneyFromStock,

 

您設定的頻率決定取得的資料K棒是什麼頻率的資料,是否有開逐筆洗價決定腳本是否會在洗價時運算還是K棒結束才運算。

依照您的例子,兩者都開逐筆洗價的話,A策略的OHLC會是日K的OHLC,B策略的OHLC會是30分鐘K的OHLC,但兩者都會在商品洗價時運算。

如果沒有開啟逐筆洗價的話,那麼要在策略使用頻率的K棒結束時策略才會運算。

 

交易和警示腳本的逐筆洗價會是相同的運作模式,但需注意交易腳本使用日頻率時會強制逐筆洗價。

選股腳本則沒有逐筆洗價選項。

您可以在腳本中加上print函數實際運作在逐筆和非逐筆的策略上,就會很容易理解差別。

 

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

發表回覆
Close