請問有沒有指令或方法可以關閉或不執行自動交易策略的方法?

  •   451 
  • 最後發表   Johnny0495  2022 九月 27
Johnny0495 發文於   2022/09/06

"RaiseRunTimeError"只能中斷單一個股,無法停止程式繼續交易。

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

Hello Johnny0495,

 

只要所有同策略中所有個股都執行到 RaiseRunTimeError,那麼全部的商品就都會中斷。

舉例來說:

if currenttime >= 123000 then RaiseRunTimeError("超過12點半");

這樣的話所有的商品在12點半以後運算的話都會被中斷。

另外,您也可以在自動交易設定排程,這樣就會在時間到後開啟/關閉交易策略。

Johnny0495 發文於   2022/09/14

您這是以時間為條件的中斷,是否有符合condition條件時或損益時,可以中斷程式停止交易?

XQ小幫手 發文於   2022/09/21

Hello Johnny0495,

 

您只需要讓滿足條件後執行 raiseruntimeerror 就可以了。

舉例來說:

if condition1 then RaiseRunTimeError("條件1符合,中斷執行");

或是

if (filledavgprice + 10) <= close then RaiseRunTimeError("進場後上漲超過10元,中斷執行");  //只能用在交易腳本

 

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

Johnny0495 發文於   2022/09/21

試過了只會停止該個股交易但並不會停止其他個股交易。

先前回覆"只要所有同策略中所有個股都執行到 RaiseRunTimeError,那麼全部的商品就都會中斷。"===>條件觸發時仍會交易,被中斷的只有該個股。

XQ小幫手 發文於   2022/09/27

Hello Johnny0495,

 

先前回覆"只要所有同策略中所有個股都執行到 RaiseRunTimeError,那麼全部的商品就都會中斷。"===>條件觸發時仍會交易,被中斷的只有該個股。

 

==>前提是有執行到。

如果您的寫法是 if condition1 then RaiseRunTimeError("條件1符合,中斷執行");

那麼condition1沒有符合的話,RaiseRunTimeError自然不會執行。

另外,A商品符合條件,不代表B商品符合條件。

所以A觸發被 RaiseRunTimeError 中止,但B還會繼續執行。

 

如果要全部商品都被中止的話,那麼就需要全部的商品都符合條件。

一種就是像上面小幫手舉例,用時間來當作條件。

另外也可以考慮使用 GetSymbolField 來抓取相同商品資料當作條件。(ex. 用大盤價格當作條件)

需注意目前XS腳本運作的邏輯是有洗價腳本才會運算,所以可能會發生因為該商品都沒有交易洗價,腳本沒運算所以導致沒被中止的狀況。

發表回覆
Close