自動交易中心 台指期日盤接夜盤時會錯誤

  •   450 
  • 最後發表   顆顆  2021 七月 12
顆顆 發文於   2021/06/25

請問一下~

1.我的交易策略是做全日盤小台 FIMTXN*1, 以10分K頻率去自動交易

但在夜盤15:00開盤時, 都會出現10分鐘頻率取得異常K線資料

請問是我的設定哪邊有問題, 哪邊可以進行調整?

2.我的語法編寫, 時間分兩段是因為曾經發生13:35出訊號, 13:45要下單時已過交易時間, 導致發生錯誤而中斷自動交易,但我又不想逐筆洗價, 因為我想等該K棒確定訊號翻轉才執行交易, 請問語法部分時間分兩段有辦法避免上述問題嗎? 這兩段重複的能怎麼併在一起會比較簡潔?

// MACD 黃金交叉 (dif向上穿越macd)
//
input: FastLength(12), SlowLength(26), MACDLength(9);
variable: difValue(0), macdValue(0), oscValue(0);

SetTotalBar(200);

SetInputName(1, "DIF短期期數");
SetInputName(2, "DIF長期期數");
SetInputName(3, "MACD期數");

MACD(weightedclose(), FastLength, SlowLength, MACDLength, difValue, macdValue, oscValue);

var: 
    long_condition(false),          { 是否做多 }
    late_long_condition(false),     { 是否延遲做多 }
    exit_long_condition(false),     { 是否多單出場 }
    short_condition(false),         { 是否做空 }
    late_short_condition(false),    { 是否延遲做空 }
    exit_short_condition(false);    { 是否空單出場 }

long_condition = difValue Crosses Above macdValue and close>ema(close,20);
late_long_condition = difValue > macdValue and close cross Above ema(close,20);
exit_long_condition = difValue Crosses below macdValue;
short_condition = difValue Crosses below macdValue and close<ema(close,20);
late_short_condition = difValue < macdValue and close cross Below ema(close,20);
exit_short_condition = difValue Crosses above macdValue;

if Time>084500 and time<134400
then
begin
  if Position <> 1 and long_condition then begin
    { 如果符合做多情境(long_condition), 則把部位變成1 (可能是0->1 or -1->1) }
    SetPosition(1);
  end else if position <> 1 and late_long_condition then begin
    setposition(1); 
    { 如果符合延遲做多情境(late_long_condition), 則把部位變成1 (可能是0->1 or -1->1) }

  end else if Position <> -1 and short_condition then begin
    { 如果符合做空情境(short_condition), 則把部位變成-1 (可能是0->-1 or 1->1) }
    SetPosition(-1);

  end else if position <> -1 and late_short_condition then begin
    setposition(-1);
    { 如果符合延遲做空情境(late_short_condition), 則把部位變成-1 (可能是0->-1 or 1->1) }

  end else if Position = 1 and exit_long_condition then begin
    { 如果已經做多, 且發生多方出場情形時(exit_long_condition), 則把部位變成0 }
    SetPosition(0);

  end else if Position = -1 and exit_short_condition then begin
    { 如果已經做空, 且發生空方出場情形時(exit_short_condition), 則把部位變成0 }
    SetPosition(0);
  end;
end;

if Time>150000 or Time<045900
then
begin
  if Position <> 1 and long_condition then begin
    { 如果符合做多情境(long_condition), 則把部位變成1 (可能是0->1 or -1->1) }
    SetPosition(1);
  end else if position <> 1 and late_long_condition then begin
    setposition(1); 
    { 如果符合延遲做多情境(late_long_condition), 則把部位變成1 (可能是0->1 or -1->1) }

  end else if Position <> -1 and short_condition then begin
    { 如果符合做空情境(short_condition), 則把部位變成-1 (可能是0->-1 or 1->1) }
    SetPosition(-1);

  end else if position <> -1 and late_short_condition then begin
    setposition(-1);
    { 如果符合延遲做空情境(late_short_condition), 則把部位變成-1 (可能是0->-1 or 1->1) }

  end else if Position = 1 and exit_long_condition then begin
    { 如果已經做多, 且發生多方出場情形時(exit_long_condition), 則把部位變成0 }
    SetPosition(0);

  end else if Position = -1 and exit_short_condition then begin
    { 如果已經做空, 且發生空方出場情形時(exit_short_condition), 則把部位變成0 }
    SetPosition(0);
  end;
end;

附加文件

排序方式: 標準 | 最新
XQ小幫手 發文於   2021/06/28

Hello 顆顆,

 

您可以將時間部分的限制用 or 整合起來。

修改成 日盤 or 夜盤 即可。

if (Time>084500 and time<134400) or (Time>150000 or Time<045900) then begin

 

關於您說的 取得異常K線資料 問題,小幫手這邊會測試看是否發生相同情形。

如果可以的話麻煩您提供 交易中心匯出檔包含腳本,以及 XQ Log 來檢驗會更快。

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

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

感謝。

顆顆 發文於   2021/06/28

已寄出我的資料  麻煩了

在6/25 15:00的時候出現 取得異常K線資料

XQ小幫手 發文於   2021/06/30

Hello 顆顆,

 

取得異常K線資料 此問題經詢問相關人員後得知將於之後的版本修復。

感謝。

XQ小幫手 發文於   2021/07/12

Hello 顆顆,

 

此問題已在最新版本中修正完畢。

建議您可以備份後升級到 3.05.06/7.05.06 版本。

感謝。

發表回覆
Close