2016年1月7日 星期四

函數(_DailyProfit):取得過去第N日的當日損益

MultiCharts 內建函數中已經有當日賺賠的次數,也有當日已經進場、出場的次數,還沒看到取得某日損益變化的函數。而對我來說,我很關心每天的權益值變化... 這很重要。

所以,我們自己做個函數來取得以日為單位的損益數值。
函數名稱:_DailyProfit,參數 為 daysAgo。參數輸入 0 可取得今天的損益變化,輸入 1 則是昨天,2 則是前天... and so on。



函數(數值、序列) Code 如下。我使用一個動態陣列,透過輸入的參數值來決定陣列的大小,在每天的換日的那根K棒把用來儲存每日損益的陣列往前偏移一格後,再把昨日的 equity 記錄在陣列的第 1 格...(陣列偏移函數,點我),得到記錄每天 equity 的陣列。再把陣列中的指定格的數值減去前一格就可得到指定第前 daysAgo 日的損益了。
input: daysAgo(Numeric);
var: equity(0);
array: dayEquity[](0);


equity= i_OpenEquity;
array_setmaxindex(dayEquity, daysAgo+1);

if D>D[1] then
begin
  _arrayShift(dayEquity);
  dayEquity[1]= equity[1];
end;

if daysAgo=0 then
  _DailyProfit = equity - dayEquity[1]
else
  _DailyProfit = dayEquity[daysAgo] - dayEquity[daysAgo+1];


寫個簡單的指標來引用這個函數,在圖表上顯示今天(0)的損益、昨天(1)的損益、前天(2)及大前天(3)的損益。

把指標放上圖表,顯示出 4個數值,我們怎麼知道這是不是對的呢?你可以自行計算來驗證,或者像這樣對照一下回測報表中的日權益。It works。