2012年11月24日 星期六

多空線


程式交易小學堂─期貨投機事業的王道
多空線,這個名稱我接觸到的開始已經忘記了,在我做過的 代工Case 中,有好些次有使用到這個所謂的多空線。而這個所謂的多空線在網路上也很容易查到計算公式,也就是它是一條公開的均線,基本上只是一條經過加權計算的均線,並不是具有自適化功能的均線。至於,在受託的 Case 中,大致上是怎樣使用這條多空線的,那就恕難透露了。

多空線計算公式:http://wenda.chinabaike.com/html/20104/q1610034.html

一開始,我在 coding 這條多空線的時候,真的就這樣弄...不好意思,請原諒我的笨 XD
value1=(3*C+O+H+L)/6;
value2=20*value1[0]+19*value1[1]+18*value1[2]+...+1*value1[19];
value3=value2/210;


畢竟多空線只是一種加權計算的方式,要計算幾根K棒的價格,總是可以參數化的吧,如果現在想看20根,就用上面那個方式去 coding ,那要看 30根、60根呢?

於是,我們可以弄個函數來做這件事情,利用迴圈就可以做到參數化了。衍申到做為交易策略內使用時,也才方便做參數最佳化的觀察。


建立一個函數,名稱 _BullBearMA。內容程式碼如下:
input:len(Numeric);
var:step(0);

value1=(3*C+L+O+H)/6;
value2=0;
value3=0;

for step= 0 to len-1 begin
  value2=value2+ (len-step)*value1[step];
  value3=value3+(step+1);
end;

_BullBearMA= value2/value3;


通常我把均線放到圖表上的時候,喜歡用顏色來顯示目前均線的方向。指標程式碼:
input:Len(20);

if _BullBearMA(len) > _BullBearMA(len)[1] then
  value1=RGB(255,0,0);  
if _BullBearMA(len) < _BullBearMA(len)[1] then
  value1=RGB(0,255,0);  
if _BullBearMA(len) = _BullBearMA(len)[1] then
  value1=RGB(0,0,0);  
  
plot1( _BullBearMA(len),"theMA", value1);

效果如下:



如果覺得這樣的均線太敏感了,還可以進一步的多做一次 average:
input:Len(20);

if _BullBearMA(len) > _BullBearMA(len)[1] then
  value1=RGB(255,0,0);  
if _BullBearMA(len) < _BullBearMA(len)[1] then
  value1=RGB(0,255,0);  
if _BullBearMA(len) = _BullBearMA(len)[1] then
  value1=RGB(0,0,0);  
  
plot1(Average( _BullBearMA(len), len),"theMA",value1);

跟本來的比較一下。

熱門文章