希望XS能新增刪單功能

  •   229 
  • 最後發表   GammaCEO  14 小時前
GammaCEO 發文於   2020/08/14

小幫手您好

用XS交易實戰中,盤中掛單未成交而價格已達停利出場條件後反轉被倒貨的事常常發生,為了避免被倒貨,通常使用者會在看到出場策略警示後刪除未成交委託單,但這樣也是很累人的事,要一直盯著電腦檢視未成交的委託標的,所以誠心希望XS雷達下單功能能增加刪單功能;

意思是可以在出場或平倉的下單模組內新增一個刪除反向委託單的選項,只要達到出場條件的商品除了送出對應委託單外,也順便刪除未成交的委託單,這樣就算價格反轉也不會被倒貨或軋空,保障策略安全,而且也不必一直盯著螢幕看,真正做到完全自動程式交易的境界。

以上小小建議,希望能轉達,謝謝。

排序方式: 標準 | 最新
XQ小幫手 發文於   2020/08/17

GammaCEO大 您好

小幫手舉個例子給您聽看看,

看我對您的要求理解有沒錯誤,方便我之後在會議提案看看

------------

假設今天10:00 2330 盤中達430 觸發買進策略A的標準進場,

但是一路上漲,沒成交所以委託單一直在,

而出場策略B,預計在435 停利出場,

當2330 盤中一路漲到436 已超過停利標準,

這時候就自動把430掛的委託單砍掉,

------

以上情境是您想要的功能嗎??  感謝

GammaCEO 發文於   2020/08/17

非常感謝小幫手

您的邏輯沒錯,大致上是這樣,但砍單的目的主要是避免因行情反轉後才成交

導致沒有出場策略保護,因為出場策略早被觸發掉。

在來就是開高震盪後再走低的個股,有8成是回不去的....

如果沒在量大時成交,價跌量縮後接到通常都不太妙,若XS能適時砍單就能避免不幸的情況發生了。

 

 

 

XQ小幫手 發文於   2020/08/17

GammaCEO大 您好

小幫手有幫您提案了,

目前策略雷達暫不會推行這樣的功能,

但是有個好消息是我們過一陣子推出的自動交易更新版本,

應該就能符合您的需求,

謝謝您的提議。

  • 按讚來自於
  • SEJU0313
Dojohn 發文於   2021/10/04

請問小幫手,現在的自動交易版本 腳本要怎麼寫才能實現這樣的需求

XQ小幫手 發文於   2021/10/08

Hello Dojohn,

 

如果您要刪單的話,只要讓position等於filled即可。

使用 SetPosiiton(filled, market) 會把未成交之委託取消。

龍槍 發文於   2021/10/08

Hi 小幫手, 

謝謝你的回答,想藉此篇問。

還是有點不太理解,為甚麼position 等於 filled 可以做到這個功能

假設我/10/7買進了2330 3張 position = 3, filled = 3

10/8 我分三單不同價錢掛單賣1張 想請問掛上去後的position 和 filled 都還是等於3嗎?

另外 假設我3單裡面有一單成交,此時position 是等於2 嗎? 那filled又會怎麼變化? 因為賣出成交了 filled 會等於4還是等於3還是等於2?

另外我實際操作

var: takeprofit(0);

takeprofit = filledAvgPrice*1.03;

if close / filledAvgPrice < 1.03 then begin if position > 0 and Filled > 0 and close > filledAvgPrice*1.01 then begin Setposition(position-1, takeprofit); return; end else if position > 0 and Filled > 0 and close <= filledAvgPrice*1.01 then begin Setposition(position*1/3, market); return; end;

10/8 3712 有9張庫存 成本均價37.356 9:02分啟動腳本

9:04:22開始 進到 

if position > 0 and Filled > 0 and close > filledAvgPrice*1.01 then 
    begin 
             Setposition(position-1, takeprofit);
         return;
    end

連續執行的掛單刪單的動作 如附圖

但9:08價錢下跌至 37.45 策略符合第二個else if 

    else if position > 0 and Filled > 0 and close <= filledAvgPrice*1.01 then
    begin 
        Setposition(position*1/3, market);
        return;

但掛單並沒有改變 持續維持 一單限價賣出9張現股

如果我希望他在9:08分的時候下跌至37.45執行上面的邏輯,刪掉目前9張的委託單,改成現價賣出1/3 我這樣的語法要怎麼改?

謝謝小幫手

 

附加文件

XQ小幫手 發文於   2021/10/14

Hello 龍槍,

 

首先您需要理解 position 與 filled 的關係,您可以這樣理解:

position 是腳本運算後得出您應有的口數。

filled 是您目前策略內實際有的口數。

所以就您的例子,如果您 10/7 有3個部位跟庫存,而在 10/8 掛了一筆3張的賣單(不論價格)上去的話,只要還未成交,filled就還是會維持為3(您的庫存沒有變化)。

但是position會是0(因為您下了3張賣單)。

所以這時如果您下 setposition(filled, market) 的話,系統會去確認要作甚麼動作才會讓position = filled。

而你的庫存目前為3,部位為0,有一筆3張賣單,所以只要把賣單清掉您的部位就會回到3。

 

由於您在 if position > 0 and Filled > 0 and close > filledAvgPrice*1.01 沒有其他限制,所以會導致連續執行掛單刪單的動作。

小幫手認為是因為您前半段的 Setposition(position-1, takeprofit); 已經將部位調整成0了。(可以看到最後掛到限價賣出9張)

所以後半段因為position = 0 所以不會執行。

如果您要先刪掉之前的委託單改為下1/3部位的市價單的話,小幫手會建議將後半段修改為:

else if Position >= 0 and Filled > 0 and close <= filledAvgPrice*1.01 then begin 

    if position <> filled then setposition(filled, market) //如果position與filled不相同的話,第一次執行先將其調整成相同(刪單)

    else setposition(position * 1/3, market);  //如果position 與 filled 相同的話賣出1/3部位

    end;

 

如果還是有問題的話,需要麻煩您提供 自動交易中心匯出檔勾選(包含)交易腳本、問題發生的日期時間商品 以及 XQ Log 來檢驗。

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

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

感謝。

 

 

  • 按讚來自於
  • UIJU0226
kChris 發文於   2021/10/21

請問這個刪單的情境適用於證券和期貨嗎?

或是只適用期貨?

謝謝!

XQ小幫手 發文於   2021/10/25

Hello kChris,

 

這功能並沒有限制商品。

所以證券跟期貨都可以使用。

supersu 發文於   2021/12/03

Hello Dojohn,

 

如果您要刪單的話,只要讓position等於filled即可。

使用 SetPosiiton(filled, market) 會把未成交之委託取消。

昨天下

SetPosiiton(filled)
直接賠1500新台幣(幸好不是把我整個帳戶虧光)

在真正實盤上時間差會亂新倉減倉

發表回覆
Close