2013年1月7日 星期一

在圖表上顯示策略的部位

這個功能其實之前就有分享過類似的,就在我書上『期貨程式交易SOP』裡197頁。我也曾把那個「在圖表上顯示策略名稱」的程式碼加以修改,順便讓它也顯示策略目前的部位(包含方向與口數)。不過,因為 marketposition 這些資訊必須要等到訊號換 Bar 後才會更新(stop/limit單),變成剛剛進場的那根K棒還沒被換 bar 的時候,我們會在圖表上看到明明交易訊號已經產生了,也在 K棒上標示了,卻上方顯示部位資訊卻還是舊的狀態...

要克服這個問題,讓實際上的 position 已經變化後馬上可以在圖表上正確的顯示出來,就只好使用"指標"來做這件事情了,因為我不想因為部位資訊的顯示把策略啟用 IOG 模式。



建立一個指標名稱 _ShowPosition,程式碼內容如下:

  text_delete(Value95);  
  Value95=TEXT_New(D, T, H,"");

  if i_marketposition>0 then begin 
    TEXT_SetString(Value95, "strong"); 
    TEXT_SetColor(Value95, Red);
  end;
  if i_marketposition<0 begin then
    TEXT_SetString(Value95, "weak");
    TEXT_SetColor(Value95, green);
  end; 
  if i_marketposition=0 then begin
    TEXT_SetString(Value95, "even");
    TEXT_SetColor(Value95, lightgray);
  end;

  TEXT_SetStyle(Value95, 1, 1);
  TEXT_SetSize(Value95,14);
  TEXT_Setlocation(Value95,D,T,GetAppInfo(aiLowestDispValue));


效果就如下圖,在圖表的右下角顯示著。當你策略是多單的時候,會顯示 紅色的strong、空單時顯示 綠色的weak、空手時顯示 白色的even。當然你可以因應你自己的需要做不同的變化,只要去修改以上程式碼內那三段被 if ... then 包起來的內容就可以了,就是桃紅色的部份。
通常這樣的小伎倆只是為了讓人可以很方便快速的看到自己策略的狀態,對於實質交易面,其實沒什麼幫助啦^^