持倉資訊
PowerLanguage 提供了一些內建函數,幫助獲取倉位狀態、進場價格、出場價格、未實現和已實現獲利等等。
利用持倉資訊開啟或關閉持倉
持倉資訊和均線(SMA)的交叉開倉或平倉。
Inputs: fastLength(10), slowLength(20);
Vars: fastSMA(0), slowSMA(0);
fastSMA = Average(Close, fastLength);
slowSMA = Average(Close, slowLength);
// 開倉條件
If MarketPosition = 0 and fastSMA crosses above slowSMA then
Buy ("Long Entry") next bar at market;
// 平倉條件
If MarketPosition = 1 and fastSMA crosses below slowSMA then
Sell ("Exit Long") next bar at market;
持倉資訊和獲利的盈虧平倉。
// 如果持倉盈利超過 500 點,則平倉
If MarketPosition = 1 and (Close - EntryPrice) * BigPointValue > 500 then
Sell ("Profit Exit") next bar at market;
// 如果持倉虧損超過 300 點,則平倉
If MarketPosition = 1 and (EntryPrice - Close) * BigPointValue > 300 then
Sell ("Stop Loss") next bar at market;
顯示持倉資訊在圖表上
下面程式碼使用文字繪製,在圖表上產生上一次平倉的持倉資訊(獲利、入場價格、出場價格)。
vars:MP(0);
MP=marketposition*currentcontracts;
if MP=0 and MP[1]<>0 then begin
value1=TEXT_New(D, T, H,"");
text_SetString(value1,"+$"+Numtostr(positionprofit(1),3) + NewLine
+"EntryPrice: " + Numtostr(EntryPrice(1), 3) + NewLine
+"ExitPrice: " + Numtostr(ExitPrice(1), 3) + NewLine
+"PositionProfit: " + Numtostr(PositionProfit(1), 3) + NewLine
+"OpenPositionProfit: " + Numtostr(OpenPositionProfit, 3)
);
text_setstyle(value1,2,1);
text_Setcolor(value1,rgb(232,232,0));
text_setfontname(value1,"Showcard Gothic");
text_setsize(value1,14);
text_Setattribute(value1,1,true);
Text_SetBorder(value1, true);
text_setlocation(value1,date,time,high+200);
end;
上面的程式碼將產生類似下面的輸出:

常用的持倉函數說明
倉位狀態
API | MarketPosition(PosBack) |
說明 | – 返回指定持倉的狀態。 – 只能在訊號腳本中使用。 – 在指標中應使用 i_MarketPosition 。– 如果要獲取持倉的大小,要使用 CurrentContracts 或其相應的 CurrentShares 。 |
PosBack | 0 或未指定:表示當前持倉。1 :表示上一次平倉的持倉。2 :表示再上一次平倉的持倉,依此類推。 |
返回值 | 1 :表示是多頭持倉。-1 :表示是空頭持倉。0 :表示當前無持倉。 |
API | CurrentContracts |
說明 | – 返回當前持倉的合約數量,為一絕對值,沒有正負號(即,多頭為正,空頭為負)。 – 如果想要獲取帶有正負號的持倉數量,將 CurrentContracts 與 MarketPosition 函數的值相乘。– 只能在訊號腳本中使用。 – 在指標中應使用 i_ 。 |
返回值 | 返回當前持倉的合約數量。 |
Example | MarketPosition(0) * CurrentContracts 返回 -9 ,如果策略持有 9 個空頭合約。返回 4 ,如果策略持有 4 個多頭合約。 |
進場價格
API |
|
說明 | – 返回指定持倉的進入(開倉)的價格。 – 只能在信號腳本中使用。 |
PosBack | 0 或未指定:表示當前持倉。1 :表示上一次平倉的持倉。2 :表示再上一次平倉的持倉,依此類推。 |
返回值 | 返回指定持倉的初始進入(開倉)的價格。 |
API |
|
說明 | – 返回指定交易的入場價格。 – 只能在訊號腳本中使用。 |
| 0 或未指定:表示當前持倉。1 :表示上一次平倉的持倉。2 :表示再上一次平倉的持倉,依此類推。 |
TradeNumber | 持倉的第TradeNumber 筆交易,0 為第一筆(開倉),依此類推。 |
返回值 | 返回指定交易的入場價格。 |
Example | 返回當前持倉,第二次交易的入場價格。PosTradeEntryPrice(0, 1); |
出場價格
API |
|
說明 | – 返回從指定持倉完全退出(平倉)的價格。 – 只能在訊號腳本中使用。 |
PosBack | 1 :表示上一個平倉的持倉。2 :表示再上一個平倉的持倉,依此類推。 |
返回值 | 返回從指定持倉完全退出(平倉)的價格。 |
API |
|
說明 | – 返回指定交易的入場價格。 – 只能在訊號腳本中使用。 |
| 0 或未指定:表示當前持倉。1 :表示上一次平倉的持倉。2 :表示再上一次平倉的持倉,依此類推。 |
TradeNumber | 持倉的第TradeNumber 筆交易,0 為第一筆(開倉),依此類推。 |
返回值 | 返回指定交易的出場價格 |
Example | 返回當前持倉,第二次交易的出場價格。PosTradeExitPrice(0, 1); |
未實現和已實現獲利
API |
|
說明 | – 返回當前持倉的未實現利潤或虧損。 – 只能在訊號腳本中使用。 |
返回值 | 返回當前持倉的未實現利潤或虧損。 |
API |
|
說明 | – 返回指定持倉的已實現盈虧。 – 如果持倉只有部分實現,返回已實現的部分盈虧。 – 只能在訊號腳本中使用。 |
| 0 或未指定:表示當前持倉。1 :表示上一次平倉的持倉。2 :表示再上一次平倉的持倉,依此類推。 |
返回值 | 返回指定持倉的已實現盈虧。 |
Example | – 獲取最近一個已經平倉的持倉產生的盈虧,如果這個持倉虧損了$5,則返回 -5Value1 = PositionProfit(1); – 如果持倉還在開放中且沒有部分平倉,則返回 0 Value2 = PositionProfit(0); – 如果持倉部分平倉並實現了$5的利潤,則返回 5 Value3 = PositionProfit(0); – 如果沒有開倉,則返回 0 Value4 = PositionProfit(0); |
Reference
https://www.multicharts.com/trading-software/index.php?title=Category:Strategy_Position
https://www.multicharts.com/trading-software/index.php?title=Category:Strategy_Position_Trades