交易條件有符合但無執行

  •   398 
  • 最後發表   XQYi  2025 二月 18
XQYi 發文於   2025/02/03

交易條件有符合但無執行如圖

觸發條件成立後委單賣出,並Print

執行結果:有Print 但無交易 ?

 

//庫平均

if Filled > 0 //目前有庫存

and ord1=False //尚未下單

and GetField("收盤價", "Tick") > FilledAvgPrice*B1A //賣帳號內均價

then 

begin

Setposition(Position-1,market,label:="庫獲利後賣出");

if Filled < Filled[1] then Sod1=GetField("收盤價", "Tick");//紀錄賣出的價位

if Filled < Filled[1] then ord1=True; //已下單賣出

Print("庫利","日期",currentDate,"FIlled",NumToStr(FIlled,1),"平均價",FilledAvgPrice,

"Sod1",NumToStr(Sod1,1),"Ord1",Ord1);

end;

 

排序方式: 標準 | 最新
XQ小幫手 發文於   2025/02/04

Hi xqyi

Q:交易條件有符合但無執行如圖,觸發條件成立後委單賣出,並Print,執行結果:有Print 但無交易 ?

A:

從您提供的執行紀錄來看,是由於安控設定的關係(原因:單一商品最大部位超過1 以下指令不予執行...)

所以程式才無下單交易,請您確認一下自動交易策略的安控設定,謝謝。

附加文件

XQYi 發文於   2025/02/04

安控設定是最大一張、進場最大次數1次。

我知道 買進是因為安控設定問題,但問的是委賣喔

如程式碼委賣條件,有符合但無執行

XQ小幫手 發文於   2025/02/05

Hi xqyi,

感謝您提供的資訊,

小幫手猜測您應該是在 2025 / 02 / 03 的 09點 04分 那根 1 分鐘K棒,以 80.9 元,委託賣出 僑威(3078) 這檔股票商品,

若是的話,小幫手查看此檔商品在 2025 / 02 / 03 的 09點 04分 那根 1 分鐘K棒,成交是 80.4 元,

由於您委託賣出的價格是 80.9 元,而成交是 80.4 元,所以小幫手猜測應該是有委託賣出成功,但是價格未到,所以無成交。

當然,以上都是小幫手的猜測,若要釐清問題的原因,懇請您提供以下 2 點資訊,

並Mail到客服信箱:XQservice@XQ.com.tw,貼上此討論串連結,並請小幫手收,謝謝:

1. 自動交易策略匯出檔案,匯出時請記得勾選包含選股策略與包含引用函數。

2. Log資料夾(路徑:C:\SysJust\7.15.03_250204\Log)壓縮檔案。

附加文件

XQYi 發文於   2025/02/05

 

Var: IntraBarPersist ord1(False),IntraBarPersist Sord1(B1P*1.03);

Sod1=B1P*1.03;

原程式碼之前有上面這一段

使用的是日K逐筆,買進價77.9,獲利出場*1.03=80.237

Tick價格來到80.9,觸發有執行Print指令,但卻無委賣執行SetPosition(Position-1,)這個指令

XQ小幫手 發文於   2025/02/12

Hi xqyi,

您好,為了避免釐清產生誤會,請您提供以下 2 點資訊,

並 Mail 到客服信箱:XQservice@XQ.com.tw,貼上此討論串連結,請小幫手收,謝謝:

1. 自動交易策略匯出檔案,匯出時請記得勾選包含選股策略與包含引用函數。

2. Log資料夾(路徑:C:\SysJust\7.15.03_250204\Log)壓縮檔案。

 

不好意思,小幫手能力有限QQ,無法單從您提供片面的程式碼臆測出您問題的原因為何,

故懇請您提供上述兩點資訊,小幫手才能較準確的去釐清原因,感謝您的諒解與配合。

XQYi 發文於   2025/02/12

已mail

XQ小幫手 發文於   2025/02/13

Hi xqyi,

感謝您提供相關資訊,

查看您的自動交易策略,因為在 09:04:14.962 因為 第 32 行 if FilledAtBroker <=2 判斷成立,所以先執行了第 43 行的 SetPosition(position+1 ... 買進交易語法,導致目標部位超出 09:04:14.962 的安控設定。

 

而第 83 行因為第 32 行目標部位超出空設定,所以 Setposition(Position-1... 的交易語法尚未執行,因為要先等第 43 行的 SetPosition(position+1... 執行成功才會執行第 86 行的 Setposition(Position-1... 

所以只有列印第 86 行的文字訊息,沒有執行第 86 行的 Setposition(Position-1... 庫利賣出的交易語法。

 

以上說明,謝謝。

附加文件

XQYi 發文於   2025/02/13

那我該如何修正?

XQ小幫手 發文於   2025/02/18

Hi xqyi,

您好,小幫手建議您的第 31 行 與 32 行改為

...
if position <= position[1] then B1Pod=False else B1Pod=true;

if FilledAtBroker < 1 //控制庫存數量
...

加上 position <= position[1] 若判斷為否,則 B1Pod=true;,

以及調整 if FilledAtBroker < 1  //控制庫存數量,將庫存控制的數量,調整與交易安控最大部分限制:1,相同,

透過上述修改,希望能避免「單一商品最大部位超過1」的安控限制發生,

以上是小幫手的想法,提供給您參考,建議您若要採用,記得先搭配模擬交易帳號試過,並符合您的預期後,再實際試試看,謝謝。

附加文件

發表回覆
Close