
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);