2013年4月14日 星期日

MultiCharts程式篇:EntryPrice和EntriesToday使用在加碼上的問題與解決方式

 

MultiCharts程式篇:EntryPrice和EntriesToday使用在加碼上的問題與解決方式

 

 

1-傳回指定部位第一筆進場的價格




  • EntryPrice永遠是第一筆


一開始看到"傳回指定部位第一筆進場的價格"還不太懂是什麼意思,一直用TradeStation的想法來思考,直到用了加碼時才發現怪怪的,用下圖為例,以TradeStation來說2013/04/12的11:30有6口單,進場價依序為(1)7825 (2)7821 ....,則 EntryPrice(0) = 7821,EntryPrice(1) = 7825以此類推,但MultiCharts裡卻不是這樣,EntryPrice(0) = 7825,EntryPrice(1) (編號3) = 7762












我研究了一下,原來所謂的"第一筆"代表每次空手(部位為零)後再持有部位時的第一筆進場價,以上圖為例,在2013/04/12 11:30,當下部位有6口,所以第一筆成本價為 EntryPrice(0) = 7825沒問題,至於上一次符合每次空手(部位為零)後再持有部位時的第一筆進場價在哪,就在編號3訊號出現時,所以在2013/04/12 11:30的 EntryPrice(1) 就是7762,如下圖。












所以相關關鍵字如:EntryDate,EntryTime,EntryPrice,EntryName,ExitDate,ExitTime,ExitPrice,ExitName,使用上的觀念都是如此。


這個問題的解決方式如下:

1.只下一口單不要加碼才會正確
2.自己寫程式控制
3.使用PosTradeEntryPrice(PosAgo,TradeNumber) 取代 EntryPrice


大家可以參考國外MultiCharts網站,有個關鍵字叫:

PosTradeEntryPrice(PosAgo,TradeNumber)

PosAgo:0是未平倉,1是上一次平倉,以此類推
TradeNumber:交易次數,就是這次交易的第幾次交易

舉例來說,PosTradeEntryPrice(0,0)就是目前部位的第一口進場價,PosTradeEntryPrice(0,1)就是目前部位的第二口單進場價,以此類推,以下圖為例:













程式碼:


print("date = " , date, " time = ", time, " PosTradeEntryName(0,0)= ", PosTradeEntryName(0,0), " (0,1)= ", PosTradeEntryName(0,1), " (0,2)= ", PosTradeEntryName(0,2), " (0,3)= ", PosTradeEntryName(0,3), " (0,4)= ", PosTradeEntryName(0,4), " (0,5)= ", PosTradeEntryName(0,5) );

print("date = " , date, " time = ", time, " PosTradeEntryPrice(0,0)= ", PosTradeEntryPrice(0,0), " (0,1) = ", PosTradeEntryPrice(0,1), " (0,2) = ", PosTradeEntryPrice(0,2), " (0,3) = ", PosTradeEntryPrice(0,3), " (0,4) = ", PosTradeEntryPrice(0,4), " (0,5) = ", PosTradeEntryPrice(0,5) );



輸出值:


date = 1130412.00 time = 1130.00 PosTradeEntryName(0,0)= SampleX_1 (0,1)= SampleX_2 (0,2)= SampleX_3 (0,3)= SampleX_1 (0,4)= SampleX_2 (0,5)= SampleX_3
date = 1130412.00 time = 1130.00 PosTradeEntryPrice(0,0)= 7825.00 (0,1) = 7821.00 (0,2) = 7816.00 (0,3) = 7824.00 (0,4) = 7814.00 (0,5) = 7802.00





  • EntriesToday永遠是第一筆

這個Function的功用是取得當天的交易次數,但經過測試後顯然跟我們所認知的不太一樣,直接去看程式碼會發現兩個問題:

1.程式是用EntryDate(n)計算交易次數:只要加碼交易次數就會算錯 (如上所述)
2.迴圈只跑10次:1天的交易次數最多計到10次


這個問題的解決方式如下:

1.只下一口單不要加碼交易次數才會正確
2.自己寫程式控制交易次數



此版本為MultiChart 7.4.20.400。

P.S:本資料僅供參考,使用者依本資料交易發生交易損失需自行負責,本人對資料內容錯誤或更新延誤不負任何責任。

0 意見:

張貼留言