請問收盤價、盤前掛單

  •   53 
  • 最後發表   Williamyu  4 天前
Williamyu 發文於   2022/06/22

請問在自動交易中心的腳本

我想在盤前,取得前一天收盤價,用CloseD(0)、和CloceD(1)都不對,請問該用那個函數?

請問自動交易中心,如何在盤前下單?

 

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

Hello Williamyu,

 

自動交易中心要有交易才會運算,所以無法在盤前下單。

所以自然無法在盤前取得前一天收盤價。

如果要在盤中取得前一天收盤價的話 CloseD(1) 和 getfield("Close", "D")[1] 都可以。

網站上有教學區,裡面有XS語法的基礎和應用可以閱覽。

Williamyu 發文於   2022/06/22

我使用CloseD(1),但比對比過前一天收盤價,仍然是錯的。

XQ小幫手 發文於   2022/06/22

Hello Williamyu,

 

麻煩您告知是用在什麼商品什麼日期,並提供腳本來檢驗。

小幫手推測您可能是用在日夜盤台指期,該商品換日的時間為 13:45,或許您誤解成是在 05:00 時換日。

XQ小幫手 發文於   2022/06/23

Hello Williamyu,

 

在宣告變數時可以給初始值沒錯,但是須注意這是以腳本運算時當下的那根Bar為基礎去取資料。

而策略在啟動時,會先運算資料讀取筆數

若那一筆不是當日的話,宣告的變數就不會是執行當下的昨日。

小幫手建議您可以在要在下單前再將變數令為該值。

舉例來說:

value1 = getfield("Close","D")[1];

setposition(1, value1);

就會是以當下那根Bar昨日的收盤價去下限價單。

Williamyu 發文於   2022/06/23

請問:

那如果每天都要最新值,是不是不要排程,而是每天的早晨,例如0700以後啟動策略,就可以正確抓到前一天收盤價?

腳本如下

 

value1 = getfield("Close","D")[1];//宣告(value1)為變數,預設為前一天收盤價

Vars:BTV(getfield("Close","D")[1]);//宣告(BTV買進目標價)為變數,預設為前一天收盤價

Vars:STV(getfield("Close","D")[1]);//宣告(STV賣出目標價)為變數,預設為前一天收盤價

BTV = value1-X;

STV = value1+Y;

If Position = 0 and Filled = 0 then begin SetPosition(1,BTV);

end;

If Position = 1 and Filled = 1 then begin Setposition(0,STV);

end;

 

William

XQ小幫手 發文於   2022/06/28

Hello Williamyu,

 

GetField("Close", "D")[1] 是依據Bar的日期來對位的。

只要您運算的當根Bar日期是今天,那麼 GetField("Close", "D")[1] 就會取得昨日的收盤價。

如果您是在回測或是資料讀取筆數時運算,而運算的那根Bar的日期是其他日期的話,那麼就會是該日期的前一天。

所以在即時的狀況下,只要是運算在當日的Bar上,您當天什麼時候啟動,GetField("Close", "D")[1]都會是昨日的收盤價。

 

小幫手建議您,可以使用 print 函數來將變數印出,或許會比較容易理解。

另外網站上有教學區,裡面有XS語法的基礎和應用可以閱覽。

發表回覆
Close