2011年9月30日 星期五

績效曲線指標化:新高新低標示


程式交易小學堂─期貨投機事業的王道
過去寫過一篇介紹如何把策略的績效曲線化成指標放在K線圖下方以觀察盤勢的形態對照自己策略當時績效的表現:http://www.yctseng.net/2011/01/blog-post_7061.html。後來我進一步把這個績效曲線畫圖的功能加上”創新高”與”創新低”的功能,一方面算是鼓勵自己也給自己警惕。程式碼如下:

Var:新高(False),新低(False)

Value1=I_OpenEquity
Value2=I_ClosedEquity

  Value10= Highest(Value2,BarNumber)
  Value11= Lowest(Value2,BarNumber)

新高= Value1>=Value10
新低= Value1<=Value11

if 新高 then
  Value3=Yellow
elseif 新低 then
  Value3=Blue 
elseif T>134000 then
  Value3=Red
else
  Value3=White
end if  

Draw1(Value1,"未平",Value3,0,iff(T>134400,8,4))

這個程式碼可以得到這樣的效果,黃點表示未平倉績效比過去的已平倉績效都高,就是創新高啦,如果呈現的是藍點的話,皮要繃緊一點囉>"<:



0

但是上面的程式碼其實...滿笨的,因為那會在每一根K棒都要往前去計算從圖面上第一根K棒到每一個當下K棒的最高最低值,當我們只把圖面拉進三五百根K棒的時候可能沒有什麼感覺,如果拉進來五千、一萬根K棒的話,我想你一定會以為 STS 壞掉了 XD,因為它算得很辛苦啦~

後來我改用這個方式:
Var:新高(False),新低(False)

Value1=I_OpenEquity
Value2=I_ClosedEquity

Value10= iff( Value2 > Value10, Value2, Value10 ); 
Value11= iff( Value2 < Value11, Value2, Value11 ); 

新高= Value1>=Value10
新低= Value1<=Value11

if 新高 then
  Value3=Yellow
elseif 新低 then
  Value3=Blue 
elseif T>134000 then
  Value3=Red
else
  Value3=White
end if  

Draw1(Value1,"未平",Value3,0,iff(T>134400,8,4))

兩種程式碼在圖線上的有著一樣的效果,但是運作起來效率完全不一樣!如果有興趣的話,可以自己想想看這兩種方式其中的差異,這算是"演算法"的差異了吧~

熱門文章