XQ自動交易,同一程式碼不同結果?

  •   231 
  • 最後發表   XQYi  2023 十一月 01
XQYi 發文於   2023/10/25

XQ自動交易,同一程式碼不同結果,如附圖

1. ATR刪=>模擬帳號中,原來的委託莫名刪單?

    ATR賣=>模擬帳號中有賣出委託,實際帳號中無賣出委託?

   自動交易中如何避免現股先賣的當沖方式?

2.策略執行中,如果手動下單,自動交易會不會重複下單?

3.每日進場金額上限指的是買進金額或者是買賣金額的合計? (我的現況似乎是把賣出的金額也算在內)

4.每日最多進場次數,指的是買進次數,或買賣(當沖)一回算一次?(我的現況似乎是買算一次、賣也算一次)

5.為什麼交易中心的買進價落在成交價,而非指標的顯示的買入價?

 input: Length(14,"天數");

 

value1 = Average(TrueRange, Length);

value2=open-low;

value3=high-open;

value4=high-low+0.0001;

value5=value2/value4;

value6=1-value5;

value7=open-(value1*value5)/2;

value8=open+(value1*value6)/2;

condition1=high >= value8-0.0001 ;

condition2= low <= value7 ;

 

if condition1 then setposition(-1,value8);

if condition2  then setposition(1,value7);

附加文件

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

Hello xqyi,

 

網站上有教學區,裡面有XS語法的基礎和應用,建議您先閱覽該區文章。

 

1.小幫手這邊沒有您策略的相關設定和Log,所以沒辦法確認。

可以使用 print 函數將相關數值印出檢查,會比較容易確認問題原因。

如果要進一步查詢的話請提供 自動交易策略匯出檔勾選(包含)交易腳本 以及 XQ Log 來檢驗。

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

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

 

建議您參考 自動交易語法介紹 裡面的說明,在進出場條件中加上 position 和 filled 來控管。

不然很容易發生下單後刪單改單的情況。

 

若不希望先賣的話,那麼就用部位限制,例如只有在 position > 0 and filled > 0 的情況下才能賣出放空。

 

2.會,每個策略啟動後的部位庫存都是獨立的。

手動下單或其他策略的交易是不會影響該策略部位庫存。

 

3.只有包含進場金額,出場金額不會包含。

但目前有一個錯誤是會加總所有策略的進場金額,而不是單一策略,目前相關人員正在處理。

 

4.只有進場次數。

 

關於3和4,可以參考 自動交易策略參數總覽 的詳細說明。

 

5.您下的是限價單,價格會成交在委託價或更優的價格。

建議您將其 print 出來確認委託價為何,以及當下的成交價,或許會比較容易理解。

 

另外小幫手補充,小幫手回覆時都是由討論區的後面往前面回覆。(會依據用戶發問帳號是否有訂閱調整順序)

由於近來問題量不少,麻煩您發問後多等待一陣子。

這次是因為客服部門同仁反應,所以先幫您處理一個問題。

XQYi 發文於   2023/10/27

hi 小幫手

你說的對我程式門外漢新手而言,雖是白話還是難以完全理解,相對的,若你能理解我的需求,是否請直接修改我的程式碼

這樣或許比較快速解決問題! 

自動交易中如何避免現股先賣的當沖方式?=>指的是手中無股票以現金股先行賣出的方式,避免產生借卷情況

 

XQ小幫手 發文於   2023/11/01

Hello xqyi,

 

小幫手並沒有提供撰寫腳本的服務。

如果每個用戶都以不熟程式的因素要求幫忙修改/撰寫腳本的話,那麼人力怎麼加都不足夠。

 

您的問題,如同小幫手上面所說,可以加上 position 和 filled 來控管進出場。

舉例來說:

if condition1 and position > 0 and filled > 0 then setposition(-1,value8);  //只有在部位和庫存大於0的情況下才能做空 (避免空手做多)

if condition2 and position <= 0 and filled <= 0 then setposition(1,value7);    //當部位和庫存小於等於0的情況下才能做多

 

這樣只有在同時符合條件和部位庫存的狀況下,策略才會下委託。

而委託沒成交的話就不會下其它的委託。

 

發表回覆
Close