FilledAvgPrice回傳目前商品的未平倉成本。如果目前Filled數值是0的話,則FilledAvgPrice回傳0,否則FilledAvgPrice回傳的是一個大於等於0的數值,與Filled的方向無關。
範例
if Filled > 0 then begin
if Close >= FilledAvgPrice * 1.02 then SetPosition(0);
if Close <= FilledAvgPrice * 0.98 then SetPosition(0);
end;
腳本執行過程內,系統會紀錄每一筆成交紀錄,依照成交時間排序,然後依照這些成交紀錄的成交價格/數量,採用先進先出的方式計算商品的未平倉成本。
範例#1
假設以下三筆成交記錄, 依照時間順序:
在第1筆成交時,Filled = 1,FilledAvgPrice = 100。
在第2筆成交時,Filled = 2,FilledAvgPrice = (100 + 102) / 2 = 101。
在第3筆成交時,Filled = 1,依照先進先出的沖銷順序, 第3筆賣出1張的成交會沖銷掉第1筆買進1張成交,所以未平倉數量剩下第2筆的買進1張, FilledAvgPrice = 102。
請注意:上面這個計算方式跟把所有成本加總後來除是不一樣的((100 + 102 - 101) / 1 = 101):全部加總後的平均數值會涵蓋已實現損益。
範例#2
在第1筆成交時,Filled = 2,FilledAvgPrice = 100。
在第2筆成交時,Filled = 4,FilledAvgPrice = (100 * 2 + 101 * 2) / 4 = 100.5。
在第3筆成交時,Filled = 6,FilledAvgPrice = (100 * 2 + 101 * 2 + 102 * 2) / 6 = 101。
在第4筆成交時,Filled = 3,依照先進先出的沖銷原則,第4筆的賣出3張分別沖掉了第1筆的買進2張,以及第2筆的買進1張,所以剩餘的買進成交是第2筆買進1張,101元,以及第3筆的買進2張,102元,FilledAvgPrice = (101*1 + 102 * 2) / 3 = 101.66666。
如果策略在設定時指定要採用交易帳號的庫存部位的話,此時系統就會依照策略的設定修改未平倉成本,之後收到成交之後再依照先進先出的方式調整數值。
範例#3
在策略指定策略部位時,Filled = 2,FilledAvgPrice = 100。
第1筆成交時,Filled = 3,FilledAvgPrice = (100 * 2 + 102 * 1) / 3 = 100.66666。
第2筆成交時,Filled = 2,依照先進先出的沖銷方式,這一筆賣出1張會沖銷掉策略指定部位其中1張,所以剩餘的數量是策略指定部位的1張,100元,跟第1筆成交1張的102元,FilledAvgPrice = (100 * 1 + 102 * 1) / 2 = 101。
請注意:未平倉成本不包含交易成本,所以使用者如果要估算未平倉損益時,可以在腳本內利用[FFilledRecordCount等函數取得每一筆成交紀錄,然後再自行計算。