取得成交價

  •   86 
  • 最後發表   winton  2024 三月 12
winton 發文於   2024/02/22

請問取得上一筆成交價格怎麼寫?(不論買賣方)   是"FilledRecordPrice(FilledRecordCount)" 嗎?

排序方式: 標準 | 最新
XS小編 發文於   2024/02/22

 Hello winton,

 

FilledRecordCount 會是策略執行到洗價當下的成交紀錄筆數。

所以 FilledRecordPrice(FilledRecordCount) 回傳的會是最近一筆交易的價格。

 

若是要最近一筆的前一筆的話則會是 FilledRecordPrice(FilledRecordCount - 1)。

為了避免沒有資料導致錯誤,在取用價格前先檢查是否有足夠的筆數,舉例來說:

if FilledRecordCount > 1 then value1 = FilledRecordPrice(FilledRecordCount - 1);

winton 發文於   2024/02/23

請問這裡的"成交紀錄筆數"是指 留倉部位的成交紀錄筆數嗎? 

如果不是.那麼怎麼寫 留倉部位的成交紀錄筆數?  ---因為想利用留倉部位的成交紀錄作依據

謝謝!

 

****以下回測跑不出交易結果. (****但是如果把c<FilledRecordPrice(1) 改成FilledAvgPrice就沒問題): 但是實際上我要寫留倉部位的"第一筆"成交價格(雖然這題的留倉部位剛好是一筆)

var:tobuy(true),tosell(true),bystop(true),selstop(true),t2buy(true),t2sell(true);

tobuy=condition211   ;

tosell=condition212 ;

var:addbuy(true),addsel(true),addbuy1(true),addsel1(true),addbuy2(true),addsel2(true),addbuy3(true),addsel3(true),naddbuy(true),naddsel(true);

addbuy=c<FilledRecordPrice(1);  ///留倉部位的第一筆成交價格

addsel=c>FilledRecordPrice(1);

 

if filled >=0 and filled<1 and tobuy then

SetPosition(position+1, MARKET) else if filled>=1 and filled<2 and tobuy and addbuy then

SetPosition(position+1, MARKET) else if filled>0 and tosell then

 

    SetPosition(-1, MARKET);

 

 

XS小編 發文於   2024/02/27

Hello winton,

 

跟是否留倉沒有關係,是您策略啟動 (回測開始) 以來的所有交易紀錄。

舉例來說,09:30 買進2張,09:45 賣出一張,10:27 買進3張。

那麼 FilledRecordCount 就會是3,分別代表這三筆交易 (3 會是 10:27 最新的那一筆)。

 

小編不知道您的腳本是如何撰寫的,若有著多種分別進場的條件邏輯,那麼哪次進場才會是想要的。

只需要進場的那一次的話,只要判斷當庫存由0改變時的 FilledRecordPrice(FilledRecordCount) 就可以知道最近一次進場的價格。

建議您可以參考交易函數的說明。

 

舉例來說:

var: intrabarpersist _prevFilled(0), intrabarpersist _firstEntryPrice(0);

 

if filled <> 0 and _prevFilled = 0 then _firstEntryPrice = FilledRecordPrice(FilledRecordCount);

_prevFilled = filled;

 

這樣腳本就會判斷和上次洗價間庫存是否有從0改變 (進場),若有的話就用變數保存該次交易的價格。

winton 發文於   2024/03/01

感謝!  FilledRecordPrice(FilledRecordCount) 就可以知道最近一次進場的價格(自動交易策略). 想在"指標"的k線圖知道上一筆買/賣進訊號出現的價格.請問怎麼寫?

XS小編 發文於   2024/03/05

Hello winton,

 

指標腳本沒有交易函數,只能夠另外使用變數存取。

舉例來說,要保存上次條件成立與這次條件成立的收盤價:

var: _price(0), _price1(0);

 

condition1 = ...觸發條件...;

 

if condition1 then begin

    _price1 = _price;

    _price = close;

    end;

 

這樣 _price 就會是這次符合條件的收盤價,_price1 則是上次符合條件的收盤價。

winton 發文於   2024/03/08

可是上一筆買賣訊號的價格是在"觸發條件"裡怎麼辦?舉例:condition1是c=Lc9 and c<>Lc5, 想在condition1的價格下方破線那根bar 做攤平買進怎麼寫呢? 

 

XS小編 發文於   2024/03/12

Hello winton,

 

由於腳本一開始運算時並不會有交易,故需要想清楚剛開始運作時,condition1裡面會取得什麼數值,可以將其設為變數的預設值。

且小編不清楚您所謂的攤平買進,要依據哪幾個價格,是最近的成交價還是再前一次的成交價?

麻煩您詳細描述下情境小編才有辦法給意見。

 

發表回覆
Close