我有一份多空都做的交易腳本,遇到反向訊號時會反手(我用SetPosition),前面這部分判斷要等K棒收定,但是我多空都有另外加條件當觸價時就要把手上有的部位平掉,請問有沒有辦法讓我的腳本這麼靈活呢?
想請問進出場的語法問題
- 667
- 最後發表 維克的投資煩惱 2022 一月 14
Hello 維克的投資煩惱,
就小幫手理解,您應該是同時需要使用即時的價格(逐筆洗價)和每根Bar完成時的價格(非逐筆洗價)。
您可以設定為逐筆洗價用Close取用當下的價格,然後在需要取得每根Bar收定的價格時使用Close[1],這樣就會分別取得所需的資訊。
謝謝您的回答,但好像不完全是我要的解答,可能是我表達不夠清楚,應該說我的需求是要讓腳本達成條件後市價進場(但這條件要等K棒收定還成立才可以)然後出場條件是一旦成立不用等K棒收定就立馬市價出場,然後我的腳本是會反向操作的。
舉例來說A條件收K後成立,會市價進多單(SetPosition=1);B條件收K後成立,會市價進空單(SetPosition=-1),但是另外有加上A-跟B-條件,當A-條件達成瞬間(不用等收定),即市價出掉現有多單;當B-條件達成瞬間(不用等收定),即市價出掉現有空單。
再麻煩小幫手回覆,謝謝你。
用時間定位間隔即可,一樣開逐筆,A條件=condition1,A-=condition21
IF condition1[1] then ret=1; //逐筆狀態下,前一根收K成立才觸發市價進場
IF condition21 then ret=1; //逐筆狀態下,每一筆洗價都判斷符合立即出場
請問我改成這樣,然後設定逐筆狀態是否就符合我要的方式?
假如在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);
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 的說明。
了解,有看過說明,只是想確認有無方式是例如設定頻率30分K洗價先觸發出場機制後待收K後符合進場條件又能下單的交易模式
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且務必附上 討論文章連結網址(小幫手才能盡早處理)。
感謝。
8 評論