想請教position回補的問題

  •   175 
  • 最後發表   SHANG  2022 十一月 14
SHANG 發文於   2022/11/09

想請教小編 我嘗試寫一段1.12分~18分

先觸發我的第一條掛內盤第1檔,

但目前遇到瓶頸,如果掛完單瞬間又拉超過我停損位(1.5%)時,

變成會先觸發第三條停損條件而不會觸發第二條,

我該怎麼讓它第一條沒有成交的部位刪單,

寫了第二條原本預期的環境,因為第一條先觸發回補變成position=0 filed= -1,想法是position <> filed

但我目前測試以模擬單改成觸發環境(改手上成本直接讓它超過1.5%),

試了一些想法似乎都不會觸發第二條,會先觸發第三條,

這樣就變成position = filled,我該怎麼解決這個問題呢,

如果寫成position=0 是不是也不太對?

我18分後有另外寫直接市價回補 也是以position<>filed為條件

但就會先刪掉第一條再市價買進(如果順順沒觸發停損位的話)

目前不知道為什麼第二條都不會觸發

 

(原本是用最笨的方法,時間一到直接market,這樣只要寫一行,但長期都會賠一檔,

所以來嘗試以掛單的方式,資質愚鈍有點碰壁,再請教各位指點了 謝謝) 

再此附上腳本 

不好意思上來請教一下 謝謝

if currentTime > 131210 and currentTime < 131800  then begin

1.if (position = filled and close <= FilledAvgPrice*1.015 and filled <= -1)

  or (position = filled and price_change < 7.7 and close <= FilledAvgPrice*1.015 and filled <= -1)

  then SetPosition(0,Value98);

2.if (position <> filled and close > FilledAvgPrice*1.015) 

  or (position <> filled and price_change > 7.7)  then setposition(filled);  

3.if (filled <= -1) and (close >= FilledAvgPrice*1.015 or price_change >= 7.7 or close < FilledAvgPrice*0.925 or    price_change <= -8.5) then SetPosition(0,market);

end;

Value98=內盤第一檔

price_change = 漲跌幅

 

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

 Hello SHANG,

 

小幫手建議您使用 print 函數將相關數值印出,會比較容易找出問題原因。

由於您第二條在前,所以若第二條條件符合的話,交易函數只會執行第一個觸發的,第三條就算符合交易指令也不會執行。

您會發生執行第三條的情況,小幫手認為只有第一二條的條件不符合才會如此。

也可以將3個條件改為 if ... else if ...... else if ...; 的方式,這樣3個條件中只要前面的條件符合,後面的就不會執行。

另外您的條件其實可以簡化,舉例來說條件1可以寫為:

if position = filled and filled <= -1 and (close <= FilledAvgPrice*1.015 or price_change < 7.7)

 

如果還是有問題的話,麻煩您提供 自動交易中心匯出檔勾選(包含)交易腳本 以及 XQ Log 讓小幫手確認。

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

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

感謝。

 

SHANG 發文於   2022/11/11

我突然想到請問小幫手,是不是因為我用手動的方式調整部位,變成他讀不到原本的position?

流程

1.12分觸發掛單

我這時手動改成本變成超過1.5%這個動作

是不是因為這個動作導致讀不到原本POSITION 而不會刪單?

才會變成一洗價就馬上計算到成本超過1.5% 直接觸發第三檔?

因為我又測試了好多想法,怎麼算都應該是對的

目前已經測試

position <> filed

position >0 and filed = 0 (如果流程有讀到 這條應該是一定會觸發 放完position=-1 filed=-1 掛單變成 position=0 filed=-1 如果有計算到原本的position 那他直接觸發第三條 應該會變成 position=1 filed = 0)

但今天測試一樣不行 所以目前想法應該是這樣?

調整成本這個動作 導致原本的掛單position讀不到 所以變成0這樣?

這樣好像才說得通 

如果是我想得這樣的話  那我原本寫的條件應該是對的?

因為這條件很難去測試 畢竟到尾盤手上單又瞬間反拉到停損機會真的很少 

所以請教小幫手 是不是我想得這樣 謝謝

 

SHANG 發文於   2022/11/11

目前想到測試方法應該可以把停損降低 可能比較容易點到 但應該也要測試很多天才可以剛好觸發 看整個流程是不是對的

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

Hello SHANG,

 

如果您是在委託完後才用手動的方式調整部位的話,那麼 position 和 filled 就會是調整後的數值,故 position <> filled 不符合沒錯。

您可以實際使用 print 來將 position 和 filled 印出確認。

發表回覆
Close