想請問進出場的語法問題

  •   667 
  • 最後發表   維克的投資煩惱  2022 一月 14
維克的投資煩惱 發文於   2021/12/27

我有一份多空都做的交易腳本,遇到反向訊號時會反手(我用SetPosition),前面這部分判斷要等K棒收定,但是我多空都有另外加條件當觸價時就要把手上有的部位平掉,請問有沒有辦法讓我的腳本這麼靈活呢?

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

 Hello 維克的投資煩惱,

 

就小幫手理解,您應該是同時需要使用即時的價格(逐筆洗價)和每根Bar完成時的價格(非逐筆洗價)。

您可以設定為逐筆洗價用Close取用當下的價格,然後在需要取得每根Bar收定的價格時使用Close[1],這樣就會分別取得所需的資訊。

維克的投資煩惱 發文於   2022/01/03

謝謝您的回答,但好像不完全是我要的解答,可能是我表達不夠清楚,應該說我的需求是要讓腳本達成條件後市價進場(但這條件要等K棒收定還成立才可以)然後出場條件是一旦成立不用等K棒收定就立馬市價出場,然後我的腳本是會反向操作的。

舉例來說A條件收K後成立,會市價進多單(SetPosition=1);B條件收K後成立,會市價進空單(SetPosition=-1),但是另外有加上A-跟B-條件,當A-條件達成瞬間(不用等收定),即市價出掉現有多單;當B-條件達成瞬間(不用等收定),即市價出掉現有空單。

再麻煩小幫手回覆,謝謝你。

 

蕎伊斯 發文於   2022/01/04

用時間定位間隔即可,一樣開逐筆,A條件=condition1,A-=condition21

IF 
condition1[1] then ret=1; //逐筆狀態下,前一根收K成立才觸發市價進場

IF condition21 then ret=1; //逐筆狀態下,每一筆洗價都判斷符合立即出場

維克的投資煩惱 發文於   2022/01/05

請問我改成這樣,然後設定逐筆狀態是否就符合我要的方式?

假如在30分頻率且持有多單的狀態下,如果洗價達到A-會先出場,然後30分到收K時符合A條件又再度進場(或是符合B條件空單進場)

然後另外的問題是這樣子回測的報表是否會有落差,畢竟有逐筆洗價的因素在

A條件=condition1,A-=condition21,B條件=condition2,B-=condition22

if condition1[1] then SetPosition(1, MARKET);

if condition2[1] then SetPosition(-1, MARKET);

if condition21 then SetPosition(0, MARKET);

if condition22 then SetPosition(0, MARKET);

XQ小幫手 發文於   2022/01/06

Hello 維克的投資煩惱,

 

您用 close[1] 的資訊來判斷條件是否成立,其實就相當於用close判斷條件然後取condition[1]。

所以兩者的結果最後會是相等的。

舉例來說

condition1 = close[1] > close[2];

condition1 = close > close[1];

的condition1[1]

會是相同的。

 

您寫得那樣condition1跟condition2會用已完成的Bar來判斷,而condition21跟condition22會用最新的洗價資訊作判斷。

回測的洗價和即時的逐筆洗價有差別沒錯,簡單來說的話:

1分鐘之上頻率,會以1分鐘Bar來模擬逐筆洗價。

1分鐘頻率,會以OHLC來模擬逐筆洗價。

細節您可以參考策略雷達自動交易中心的說明。

 

另外需注意,複數交易指令同時觸發時,只會執行第一個觸發的。

細節您可以參考 SetPosition 的說明。

維克的投資煩惱 發文於   2022/01/10

了解,有看過說明,只是想確認有無方式是例如設定頻率30分K洗價先觸發出場機制後待收K後符合進場條件又能下單的交易模式

維克的投資煩惱 發文於   2022/01/12

另外想請問我在設定逐筆洗價時跳出如圖訊息,因看不懂意思特此詢問,再請麻煩小幫手同樓上問題一併解答,謝謝

附加文件

XQ小幫手 發文於   2022/01/14

Hello 維克的投資煩惱,

 

1.

您上面寫的就是了。

A條件=condition1,A-=condition21,B條件=condition2,B-=condition22

if condition1[1] then SetPosition(1, MARKET);

if condition2[1] then SetPosition(-1, MARKET);

此為用收K進場的部分

 

if condition21 then SetPosition(0, MARKET);

if condition22 then SetPosition(0, MARKET);

此為用洗價出場的部分

 

2.

此部分需要麻煩您提供自動交易中心匯出檔勾選(包含)交易腳本 以及 XQ Log 來檢驗才能確定原因。

Log資料夾(預設路徑:C:\SysJust\XQLite\LOG)直接壓縮後提供即可。

您可以直接將檔案上傳,如果檔案過大的話也可以Mail至客服信箱 XQservice@XQ.com.tw且務必附上 討論文章連結網址(小幫手才能盡早處理)。

感謝。

 

發表回覆
Close