加值服務 | 相關文章

MultiCharts 圖表顯示策略部位與進場資訊

2021/08/26 - MultiCharts,TOUCHANCE,圖表顯示,部位資訊,進場資訊


使用程式交易大多都不會在電腦前面盯盤,但還是會需要不定時確認目前的程式運行的狀況,而當策略

比較多的情況下,逐步檢查目前的策略狀況又蠻花時間的,如果能夠在圖表上呈現相關的資訊,更可以

一目了然的得到資訊,可以節省不少的時間。

這時,我們可以利用 Powerlanguage 去編寫輸出文字,達到這樣的效果。

 

變數

首先我們建立一個指標

 

依照我們要取得的資訊建立變數

 

由上至下使用的變數分別為

  • i_MarketPosition*i_currentcontracts:部位 ( 部位多空*口數 )
  • i_AvgEntryPrice:進場均價
  • i_OpenEquity-i_ClosedEquity:未實現損益 ( 浮動損益-已實現損益 )
  • i_ClosedEquity:已實現損益

*Numtostr 指令是將數值轉換成字串,參數 0 為小數點位數。

 

字串輸出

 

這裡我們會用到 Text_delete、Text_New、Text_SetString 三個函數

語法 參數 説明
Text_Delete(ObjectID) ObjectID - 物件名稱 刪除字串
Text_New (BarDate, BarTime, PriceValue, "Text") BarDate - 指定的日期
BarTime - 指定的時間
PriceValue - 指定的價格位置
Text - 要顯示的字串 ( 不顯示輸入"" )
建立字串
Text_SetString(ObjectID, "Text") ObjectID - 物件名稱
Text - 要顯示的字串 ( 不顯示輸入"" )
字串顯示內容

*NewLine 可以讓字串換行,比較整齊。

到這裡基本上就可以將資訊完整呈現在畫面上了,剩下就是顯示的微調,讓畫面呈現更整齊。

 

字串顯示調整

語法 參數 説明
Text_SetStyle (ObjectID, HorizPl, VertPl) ObjectID - 物件名稱
HorizPl - 文字水平位置:
0 - 右側
1 - 左側
2 - 中間
VertPl - 文字垂直位置:
0 - 低於價格值
1 - 高於價格值
2 - 價格值中間
文字物件在 bar 的相對位置
Text_SetColor(ObjectID, TextColor) ObjectID - 物件名稱
TextColor - 文字顏色
文字顏色
Text_SetSize(ObjectID, FontSize) ObjectID - 物件名稱
FontSize - 字體大小
字體大小
Text_SetFontName(ObjectID, "FontName") ObjectID - 物件名稱
FontName - 字體名稱
例如:Arial
字體名稱
Text_SetAttribute(ObjectID, Attribute, LogicalExpression) ObjectID - 物件名稱
Attribute - 文字型態
0 - 邊框
1 - 粗體
2 - 斜體
3 - 刪除線
4 - 底線
文字型態
Text_SetLocation (ObjectID, BarDate, BarTime, PriceValue) ObjectID - 物件名稱
BarDate - 指定的日期
BarTime - 指定的時間
PriceValue - 指定的價格位置
文字物件顯示位置
Text_SetBorder(ObjectID, LogicalExpression) ObjectID - 物件名稱
LogicalExpression - True = 開啟, False = 關閉
顯示外框

 

設定完成後即可看到更清楚整齊的資訊在圖表上。

 

另外一個進階的方式,可以使用中文讓資訊呈現更直覺,可以參考 TOUCHANCE - MultiCharts 如何在圖表的訊號與指標顯示中文 這篇文章。

程式碼


vars:
_Market_positions(""),
_Entry_price(""),
_Open_equity(""),
_Closed_equity("");

_Market_positions = NumToStr(i_MarketPosition*i_currentcontracts,0);
_Entry_price = Numtostr(i_AvgEntryPrice,0);
_Open_equity = Numtostr((i_OpenEquity-i_ClosedEquity),0);
_Closed_equity = Numtostr(i_ClosedEquity,0);

Text_delete(value1);  
value1=Text_New(D, T, H,"");
Text_SetString(value1,"Market_positions" + " : " + _Market_positions
               + NewLine + "Entry_price" + " : " + _Entry_price
               + NewLine + "Open_equity" + " : " + _Open_Equity
               + NewLine + "Closed_equity" + " : " + _Closed_equity);
               
Text_SetStyle(value1, 0, 0);
Text_SetColor(value1, white);
Text_SetSize(value1, 11);
Text_SetFontName(value1, "Arial Black");
Text_Setattribute(value1,0,true);
Text_Setlocation(value1,D,T,GetAppInfo(aihighestDispValue));
Text_SetBorder(value1,true);

本篇文章程式碼內容參考:

永政的投機生活: 顯示策略名稱部位方向與進出場價 (yctseng.net)