過去寫過一篇介紹如何把策略的績效曲線化成指標放在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))
這個程式碼可以得到這樣的效果,黃點表示未平倉績效比過去的已平倉績效都高,就是創新高啦,如果呈現的是藍點的話,皮要繃緊一點囉>"<:
但是上面的程式碼其實...滿笨的,因為那會在每一根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))
兩種程式碼在圖線上的有著一樣的效果,但是運作起來效率完全不一樣!如果有興趣的話,可以自己想想看這兩種方式其中的差異,這算是"演算法"的差異了吧~