1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | public class MyScript extends ScriptCore { //建立一個圖層 Layer layer = addLayer(null, 0, "range=0~0.98;blank=3%;Y-AXIS=價格"); //建立一個叫ma5的資料容器 MovinNum ma5 = addMovinNum(null); public void init() { //畫K線 layer.drawSteadyKBar(open, high, low, close, new ColorRef(close, open, colorup, colorbd, colordn, colorbd)); //畫均線 layer.drawSteadyLine(ma5, 2, true, new ColorRef(blue)); //新增標籤 layer.addValueTag(new ValueTag() { public void update(int t) { text = new String[]{"收盤價", ""+close.get(t)}; value = close.get(t); bgcolor = new Color(0x505050); textcolor = gold; } }); } public void run() { //計算ma5 ma5.ma(close, 0, 5); } public void eventHilightMovin(int t) { //更新標題列 updateTitle("<b>" + date2Str(date.get(t), "yyyy-MM-dd(E) ") + name); } } |
執行結果:
講兩個重點就好:
1. layer.draw...與layer.drawSteady...的差別 :
drawSteady是在init()時一次性設定後就完事了,內部會依照給入參數全部K棒一起畫。而沒有加Steady的draw是針對單一K棒或單一事件的畫法,每次畫完的下一次run()必須重新再呼叫函數畫過一次,否則圖樣就會消失,若要圖樣不消失可以在draw函數呼叫前先呼叫drawSteadyNext(),即可將圖樣釘住。
千萬不要把drawSteady放在run()裡,因為run()通常有可能跑上千次,會變成一樣的東西重複畫幾千遍,導致系統緩慢。另外若是畫圖的函數不夠用其實也是可以自建的,往後的範例會再提到。
2. ColorRef是什麼?
我稱它叫顏色參考,依照給入的值與顏色,可以判斷什麼情況使用什麼顏色。詳細可以參考文件。
3. 加入價格標籤?
參考18~27行,很容易理解。
---
不知道大家有沒發現這個範例沒有CustomCore_UI_INIT();也沒繼承CustomCore而是直接繼承ScriptCore?其實就是說這個範例沒有用"指標圖形介面"的library,為什麼不用呢?因為"指標圖形介面"其實已經整合了很多相關畫圖的功能,使用者其實不太需要自己處理圖層的部分,除非不打算使用"指標圖形介面"的library,或是要做比較低階的開發。
---
四個章節大概講完了acs-api的主要議題,還有些東西要用範例講會比較好,一方面我好解說,另一方面你們可以複製貼上。就降拉~謝謝收看!
沒有留言:
張貼留言