自訂指標的基礎知識


引言

本文的通過舉例來解釋創建自訂指標的原理, 程式師可以在語言NTL+中開始創建的第一步.


在創建自訂指標時, 您需要確定指標的演算法, 如何計算指標緩衝區的值, 並如何顯示在螢幕中. 這些值的正確編輯是指標的最終目的


作為創建指標的例子, 將展示大量收盤價大於收盤價的柱圖和收盤價小於開盤價的柱圖的區別 ; 這些區別在n個區間中積累. 我們將展示該指標以長條圖的形式顯示在單獨的視窗中.


編寫腳本代碼

我們的演算法非常簡單並且直觀, 可以在圖表中輕鬆查看指標的工作. 對於每個第i個柱圖, 我們將分析前n個柱圖並形成統計, 如果檢測到柱圖上升, 則加1, 相反則減1.

讓我們來看一下指標的代碼.


開始需要聲明指標用到的所有參數.

#set_indicator_separate double ExtMapBuffer1[]; int ExtCountedBars=0; extern int period = 10;

預處理指令#set_indicator_separate指示我們將在單獨的視窗中輸出圖表, 並不在主圖表中疊加. 在下一行聲明了一個全域陣列ExtMapBuffer1, 其中將保存指標緩存區的值. 注意我們不會設置該陣列的大小, 因為編輯器自動分配記憶體 .


在陣列ExtMapBuffer1 中實際保存的是點的座標值, 陣列索引確定橫坐標. 之後我們初始化參數ExtCountedBars為0. 該參數將保存已經計算的數量. 因此我們不需要每次都計算所有的柱圖, 這大大加快了指標值的計算; 指標圖表的運行將更快. 在下一行聲明全域變數period , 其用來保存計算設定統計的區間的數量. 注意extern的使用使得我們可以不需要編譯通過指標屬性直接修改參數.


分析函數Initialize(), 將指定每個指標的基礎設置.


Indicator 的對象SetIndexCount 放置指標的值的緩存數量. 帶有值的緩存ExtMapBuffer1我們只有一個, 因此指明作為唯一參數為1. 同樣我們需要將緩存的號碼與帶有緩存值的數字聯繫起來. 該聯繫將在行SetIndexBuffer(0,ExtMapBuffer1)給出, 在該處定義描述來自緩存ExtMapBuffer1非零指標的屬性.


下麵一行中, 我們設置指標的屬性. SetIndexStyle的第一個參數提供緩衝號; 我們指定SetIndexBuffer值為0. 第二個參數指定渲染類型:柱狀圖。第三參數指定lsSolid的樣式(事實上, 可以設置為任意值, 因此該選項只影響線和寬度)。下一個參數設定clrBlue線寬度5和顏色為藍色(顏色也可設定為RGB格式, 例如, 0x0000FF).


之後運行函數Run(), 該函數完成基本的檢測並執行使用者函數draw(). 函數draw() 完成所有計算.