03 從指標開始
NEWS 2019/01/04
我們利用每一個開頭來回顧一下前一篇的重點與提出本篇的重點,其實不想說理論性的事,但這確是必要的,為了要完整掌握開發程式的方法,我們必須說明一些偏理論性的事項。 所以再一次,Multicharts程式最重要的觀念,每根K棒結束都執行程式一次(或是每tick一次)。這是專為交易而設計的系統,所有功能的開發皆以K棒為出發點,因此我們要養成習慣,以K棒來思考。我們最自然想得到的資料應該就是,K棒之間有何不同,那就必須比對不同K棒,所以就要取得當根K棒之前的K棒資料。這裡又是Multicharts的重點了,但這個重點有點複雜我們要分段說明。 首先要知道Multicharts中的資料可以是,K棒的價格、成交量與時間,還有我們自己定義的變數,我們先全部統稱為變數,變數會以K棒為單位,每根K棒都紀錄一次所有變數的值,這樣我們就能取出任何一個變數在任何一根K棒上的值,那程式中就是,以中括號[n]來取前第n根K的變數值,如當根K棒的開高收低分別是openhighlowclose,那前一根開與前二根收就是open[1]close[2];想看當根K高是否高過前根K,那就是if (high > high[1]) then “do something”;;判斷當根K低是否低於前跟K,即為if (low < low[1]) then “do something”;。 現在就來動手寫寫看,運用這幾個重點,我們要寫一個指標,用來指出連續過高或連續破低的K棒,那就先以寫程式的步驟來規劃。
  1. 寫一個指標分別指出連續四根K過高或連續四根K破低;
  2. 判斷連續四根K過高那就是當根K高大於前一根K高,且前一根K高大於前二根K高,及前二根K高大於前三根K高,成立時在當跟K高點上五點畫一個黃點;同理當出現連續四根K棒破低我們畫一個藍點,請大家自己試試寫出連續四根K棒破低的條件;
  3. 檢查連續四根K棒過高條件,條件成立畫出黃點;檢查連續四根K棒破低條件,條件成立畫出藍點;
  4. 實作小程序:
    • 檢查連續四根K棒過高:
      • if (High > High[1]) and (High[1] > High[2]) and (High[2] > High[3]) then…
    • 檢查連續四根K棒破低:
      • if (Low < Low[1]) and (Low[1] < Low[2]) and (Low[2] < Low[3]) then…
    • 畫出高點黃點:
      • plot1(High + 5, "High", yellow);
    • 畫出低點藍點:
      • plot2(Low - 5, "Low", blue);
  5. 結合並完成: if (High > High[1]) and (High[1] > High[2]) and (High[2] > High[3])  then plot1(High + 5, "High", yellow); if (Low < Low[1]) and (Low[1] < Low[2]) and (Low[2] < Low[3])  then plot2(Low - 5, "Low", blue);
此指標就是我們利用K棒與前幾根K棒的價格比對後,所標示出連續過高破低的K棒,但須自己改變指標型態由線轉成點,這樣才能顯示如圖中的黃藍點。 但K棒中能記錄的不只是價格,我們再多寫一個指標,這次我們用自己定義的變數來做比較,那就來寫一個大家最常用的均線,我們要在均線上著色,將上漲與下跌分別畫上不同的顏色,按慣例由寫程式的步驟開始。
  1. 要寫出一個指標用來畫出均線並上色;
  2. 畫出一條均線,上漲時畫成黃色,下跌時畫成藍色;
  3. 設定變數記錄均線值與顏色、使用均線函數取得均線值、判斷均線漲時設定黃色,跌時設定藍色,持平設定灰色、畫出均線;
  4. 實作小程序:
    • 設定變數:
      • var:   var0(0),   color(lightgray);
    • 使用均線函數取得均線值:
      • var0 = AverageFC(Price, Length);
    • 判斷均線漲跌設定顏色:
      • if var0 > var0[1] then color = yellow)  else if var0 < var0[1] then color = blue)  else color = lightgray;)
    • 畫出均線:
      • Plot1(var0, "Avg", color);
  5. 結合並完成: Input:   Price(Close),   Length(13); var:   var0(0),   color(lightgray); var0 = AverageFC(Price, Length); if var0 > var0[1] then color = yellow  else if var0 < var0[1] then color = blue  else color = lightgray; Plot1(var0, "Avg", color);
此指標讓我們更容易看出均線的上揚與下探,但程式中還是有我們所尚未解釋到的,不過請大家先不要在意,因為這會在之後補上,現在我們還是專注在用步驟與重點,來練習設計與實作程式。 此次我們寫了兩個指標程式,希望不會讓大家有太大的負擔,在本篇結束前讓我們回顧至目前為止的重點。   每根K棒結束都執行程式一次;   以K棒來思考;   每根K棒都紀錄一次所有變數的值;   以中括號[n]來取前第n根K的變數值。  
本篇文章為會員獨享,請加入會員以取得閱讀權限
加入會員