MultiCharts | PowerLanguage語法教學 | CH11:持倉資訊

持倉資訊

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;

上面的程式碼將產生類似下面的輸出:

常用的持倉函數說明

倉位狀態

APIMarketPosition(PosBack)
說明– 返回指定持倉的狀態。
– 只能在訊號腳本中使用。
– 在指標中應使用 i_MarketPosition
– 如果要獲取持倉的大小,要使用 CurrentContracts 或其相應的 CurrentShares
PosBack0 或未指定:表示當前持倉。
1:表示上一次平倉的持倉。
2:表示再上一次平倉的持倉,依此類推。
返回值1:表示是多頭持倉。
-1:表示是空頭持倉。
0:表示當前無持倉。
APICurrentContracts
說明– 返回當前持倉的合約數量,為一絕對值,沒有正負號(即,多頭為正,空頭為負)。
– 如果想要獲取帶有正負號的持倉數量,將 CurrentContractsMarketPosition 函數的值相乘。
– 只能在訊號腳本中使用。
– 在指標中應使用 i_CurrentContracts
返回值返回當前持倉的合約數量。
ExampleMarketPosition(0) * CurrentContracts
返回-9,如果策略持有 9 個空頭合約。
返回4,如果策略持有 4 個多頭合約。

進場價格

APIEntryPrice(PosBack)
說明– 返回指定持倉的進入(開倉)的價格。
– 只能在信號腳本中使用。
PosBack0 或未指定:表示當前持倉。
1:表示上一次平倉的持倉。
2:表示再上一次平倉的持倉,依此類推。
返回值返回指定持倉的初始進入(開倉)的價格。
APIPosTradeEntryPrice(PosAgo, TradeNumber)
說明– 返回指定交易的入場價格。
– 只能在訊號腳本中使用。
PosAgo0 或未指定:表示當前持倉。
1:表示上一次平倉的持倉。
2:表示再上一次平倉的持倉,依此類推。
TradeNumber持倉的第TradeNumber筆交易,0為第一筆(開倉),依此類推。
返回值返回指定交易的入場價格。
Example返回當前持倉,第二次交易的入場價格。
PosTradeEntryPrice(0, 1);

出場價格

APIExitPrice(PosBack)
說明– 返回從指定持倉完全退出(平倉)的價格。
– 只能在訊號腳本中使用。
PosBack1:表示上一個平倉的持倉。
2:表示再上一個平倉的持倉,依此類推。
返回值返回從指定持倉完全退出(平倉)的價格。
APIPosTradeExitPrice(PosAgo, TradeNumber)
說明– 返回指定交易的入場價格。
– 只能在訊號腳本中使用。
PosAgo0 或未指定:表示當前持倉。
1:表示上一次平倉的持倉。
2:表示再上一次平倉的持倉,依此類推。
TradeNumber持倉的第TradeNumber筆交易,0為第一筆(開倉),依此類推。
返回值返回指定交易的出場價格
Example返回當前持倉,第二次交易的出場價格。
PosTradeExitPrice(0, 1);

未實現和已實現獲利

APIOpenPositionProfit
說明– 返回當前持倉的未實現利潤或虧損。
– 只能在訊號腳本中使用。
返回值返回當前持倉的未實現利潤或虧損。
APIPositionProfit(PosBack)
說明– 返回指定持倉的已實現盈虧。
– 如果持倉只有部分實現,返回已實現的部分盈虧。
– 只能在訊號腳本中使用。
PosBack0 或未指定:表示當前持倉。
1:表示上一次平倉的持倉。
2:表示再上一次平倉的持倉,依此類推。
返回值返回指定持倉的已實現盈虧。
Example– 獲取最近一個已經平倉的持倉產生的盈虧,如果這個持倉虧損了$5,則返回 -5
Value1 = 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

發佈留言