Özel Göstergelerin Özellikleri

Bir özel gösterge içinde kullanılabilecek gösterge tamponlarının sayısı sınırsızdır. SetIndexBuffer() fonksiyonu ile bir gösterge tamponu şeklinde tasarlanmış her bir dizi için, depolanacak veri tipinin belirtilmesi gerekir. Bu, ENUM_INDEXBUFFER_TYPE sayımının değerlerinden biri olabilir.

ENUM_INDEXBUFFER_TYPE

Tanıtıcı

Açıklama

INDICATOR_DATA

Çizilecek veri

INDICATOR_COLOR_INDEX

Renk

INDICATOR_CALCULATIONS

Ara işlemler için kullanılacak yardımcı tamponlar

Özel göstergeler, uygun görüntülemenin sağlanması için bir çok ayarlama içerir. Bu ayarlamalar, IndicatorSetDouble(), IndicatorSetInteger() ve IndicatorSetString() fonksiyonları kullanılarak, karşılık gelen gösterge özelliklerinin atanmasıyla gerçekleştirilir. Gösterge özelliklerinin tanıtıcıları, ENUM_CUSTOMIND_PROPERTY sayımında listelenmiştir.

ENUM_CUSTOMIND_PROPERTY_INTEGER

Tanıtıcı

Açıklama

Özellik tipi

INDICATOR_DIGITS

Gösterge değerleri çiziminin doğruluğu

int

INDICATOR_HEIGHT

Sabitlenmiş gösterge penceresi yüksekliği (ön işlemci komutu #property indicator_height)

int

INDICATOR_LEVELS

Gösterge penceresindeki seviyelerin sayısı

int

INDICATOR_LEVELCOLOR

Seviye çizgisinin rengi

color                      şekillendirici = seviye numarası

INDICATOR_LEVELSTYLE

Seviye çizgisinin stili

ENUM_LINE_STYLE  şekillendirici = seviye numarası

INDICATOR_LEVELWIDTH

Seviye çizgisinin kalınlığı

int                         şekillendirici = seviye numarası

INDICATOR_FIXED_MINIMUM

Gösterge penceresi için sabit minimum. Özellik yalnızca IndicatorSetInteger() fonksiyonu tarafından yazılabilir

bool

INDICATOR_FIXED_MAXIMUM

Gösterge penceresi için sabit maksimum. Özellik yalnızca IndicatorSetInteger() fonksiyonu tarafından yazılabilir

bool

ENUM_CUSTOMIND_PROPERTY_DOUBLE

Tanıtıcı

Açıklama

Özellik tipi

INDICATOR_MINIMUM

Gösterge penceresinin minimum değeri

double

INDICATOR_MAXIMUM

Gösterge penceresinin maksimum değeri

double

INDICATOR_LEVELVALUE

Seviye değeri

double                    şekillendirici = seviye numarası

ENUM_CUSTOMIND_PROPERTY_STRING

Tanıtıcı

Açıklama

Özellik tipi

INDICATOR_SHORTNAME

Gösterge kısa ismi

string

INDICATOR_LEVELTEXT

Seviye açıklaması

string                    şekillendirici = seviye numarası

Örnekler:

//--- gösterge ayarları
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots   2
#property indicator_type1   DRAW_LINE
#property indicator_type2   DRAW_LINE
#property indicator_color1  clrLightSeaGreen
#property indicator_color2  clrRed
//--- giriş parametreleri
extern int KPeriod=5;
extern int DPeriod=3;
extern int Slowing=3;
//--- gösterge tamponları
double MainBuffer[];
double SignalBuffer[];
double HighesBuffer[];
double LowesBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- gösterge tamponlarının eşlenmesi
   SetIndexBuffer(0,MainBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,SignalBuffer,INDICATOR_DATA);
   SetIndexBuffer(2,HighesBuffer,INDICATOR_CALCULATIONS);
   SetIndexBuffer(3,LowesBuffer,INDICATOR_CALCULATIONS);
//--- kesinliği ayarla
   IndicatorSetInteger(INDICATOR_DIGITS,2);
//--- seviyeleri ayarla
   IndicatorSetInteger(INDICATOR_LEVELS,2);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,0,20);
   IndicatorSetDouble(INDICATOR_LEVELVALUE,1,80);
//--- alt pencere için maksimum ve minimum değerleri ayarla
   IndicatorSetDouble(INDICATOR_MINIMUM,0);
   IndicatorSetDouble(INDICATOR_MAXIMUM,100);
//--- çizime hangi çubuğun indisinden başlanacağını ayarlar
   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,KPeriod+Slowing-2);
   PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,KPeriod+Slowing+DPeriod);
//--- ikinci çizgi için STYLE_DOT stilini ayarla
   PlotIndexSetInteger(1,PLOT_LINE_STYLE,STYLE_DOT);
//--- Veri Penceresi ve gösterge alt penceresinin etiketi için isim
   IndicatorSetString(INDICATOR_SHORTNAME,"Stoch("+KPeriod+","+DPeriod+","+Slowing+")");
   PlotIndexSetString(0,PLOT_LABEL,"Main");
   PlotIndexSetString(1,PLOT_LABEL,"Signal");
//--- çizimi boş değer olarak ayarlar
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);
   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0.0);
//--- başlatma tamamlandı
  }