Çizim Stilleri

Bir özel gösterge oluştururken, değerleri ENUM_DRAW_TYPE sayımı içinde belirlenen 18 grafiksel çizim tipinden birini (ana çizelge penceresinde veya alt pencerede görüntülendiği şekilde) belirleyebilirsiniz.

Bir özel gösterge içinde herhangi bir gösterge kurma/çizme tipini kullanabilirsiniz. Her bir çizim tipi, bir ile beş adet global dizinin belirtilmesini gerektirir. Bu veri dizileri SetIndexBuffer() fonksiyonu kullanılarak, gösterge tamponlarına bağlanmalıdır. Her bir tampon için, ENUM_INDEXBUFFER_TYPE sayımı içinden bir veri tipi belirlenmelidir.

Çizim stiline bağlı olarak, (INDICATOR_DATA şeklinde imlenmiş) bir ile dört değer tamponuna ihtiyaç duyabilirsiniz. Eğer bir stil, renklerin dinamik değişimini içeriyorsa (tüm stiller COLOR sözcüğünü içerir), diğer renk için bir tampona daha ihtiyacınız olacaktır (istenen tip INDICATOR_COLOR_INDEX). Renk tamponları her zaman stil rengine karşılık gelen değer tamponundan sonra bağlanırlar.

ENUM_DRAW_TYPE

Tanıtıcı

Açıklama

Veri tamponları

Renk tamponları

DRAW_NONE

Çizilmez

1

0

DRAW_LINE

Çizgi

1

0

DRAW_SECTION

Bölüm

1

0

DRAW_HISTOGRAM

Sıfır çizgisinden başlayan histogram

1

0

DRAW_HISTOGRAM2

İki gösterge tamponunun histogramı

2

0

DRAW_ARROW

Ok çizimi

1

0

DRAW_ZIGZAG

Zigzag stili, çubuklar için dikey kesitler oluşturulmasını sağlar

2

0

DRAW_FILLING

İki seviye arasının renk ile doldurulması

2

0

DRAW_BARS

Çubuk dizilimi şeklinde gösterir

4

0

DRAW_CANDLES

Mumların dizilimi şeklinde gösterir

4

0

DRAW_COLOR_LINE

Çok renkli çizgi

1

1

DRAW_COLOR_SECTION

Çok renkli kesit

1

1

DRAW_COLOR_HISTOGRAM

Sıfır çizgisinden başlayan çok renkli histogram

1

1

DRAW_COLOR_HISTOGRAM2

İki gösterge tamponunun çok renkli histogramı

2

1

DRAW_COLOR_ARROW

Çok renkli okların çizimi

1

1

DRAW_COLOR_ZIGZAG

Çok renkli ZigZag

2

1

DRAW_COLOR_BARS

Çok renkli çubuklar

4

1

DRAW_COLOR_CANDLES

Çok renkli mumlar

4

1

 

Seçilen çizim tipinin görümünü düzenlemek için ENUM_PLOT_PROPERTY özelliğindeki tanımlayıcılar kullanılır.

PlotIndexSetInteger() ve PlotIndexGetInteger() fonksiyonları için

ENUM_PLOT_PROPERTY_INTEGER

Tanıtıcı

Açıklama

Özellik tipi

PLOT_ARROW

DRAW_ARROW stili için ok kodu

uchar

PLOT_ARROW_SHIFT

DRAW_ARROW stilinde okların dikey olarak kaydırılması

int

PLOT_DRAW_BEGIN

Çizim yapılmamış çubuk sayısı ve Veri Penceresindeki değerler

int

PLOT_DRAW_TYPE

Grafiksel çizim tipi

ENUM_DRAW_TYPE

PLOT_SHOW_DATA

Çizim değerlerinin Veri Penceresinde görüntülenen işareti

bool

PLOT_SHIFT

Gösterge grafiğinin, zaman ekseninde çubuk bazında kaydırılması

int

PLOT_LINE_STYLE

Çizgi çizim stili

ENUM_LINE_STYLE

PLOT_LINE_WIDTH

Çizgi çizim kalınlığı

int

PLOT_COLOR_INDEXES

Renk sayısı

int

PLOT_LINE_COLOR

Çizim rengini içeren bir tamponun indisi

color       şekillendirici = renklerin indis numaraları

 

PlotIndexSetDouble() fonksiyonu için

ENUM_PLOT_PROPERTY_DOUBLE

Tanıtıcı

Açıklama

Özellik tipi

PLOT_EMPTY_VALUE

Çizim yapılmayan bir grafik için boş değer

double

PlotIndexSetString() fonksiyonu için

ENUM_PLOT_PROPERTY_STRING

Tanıtıcı

Açıklama

Özellik tipi

PLOT_LABEL

Veri Penceresinde gösterilecek grafiksel serinin ismi. Birkaç gösterge tamponunun kullanımını gerektiren karmaşık grafik stilleri ile çalışırken, her bir tamponun ismi ";" ayracı kullanılarak belirtilebilir. Örnek kod şurada gösterilmektedir DRAW_CANDLES

string

Özel göstergelerde, çizim amaçlı 5 farklı stil kullanılabilir. Bunlar sadece 0 ve 1 çizgi kalınlıklarında geçerlidir.

ENUM_LINE_STYLE

Tanıtıcı

Açıklama

STYLE_SOLID

Düz çizgi

STYLE_DASH

Kesikli çizgi

STYLE_DOT

Noktalı çizgi

STYLE_DASHDOT

Kesikli-noktalı çizgi

STYLE_DASHDOTDOT

Kesikli - çift noktalı çizgi

 

Çizim stilini ve tipini ayarlamak için, PlotIndexSetInteger() fonksiyonu kullanılır. Fibonacci açılımı için kalınlık ve çizim stili ObjectSetInteger() fonksiyonu kullanılarak belirtilebilir.

Örnek:

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//--- gösterge tamponları
double         MABuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- Diziyi, 0 indisli gösterge tamponuna bağlar
   SetIndexBuffer(0,MABuffer,INDICATOR_DATA);
//--- Çizim tipini ayarla
   PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
//--- Çizgi stilini ayarla
   PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_DOT);
//--- Çizgi rengini ayarla
   PlotIndexSetInteger(0,PLOT_LINE_COLOR,clrRed);
//--- Çizgi kalınlığını ayarla
   PlotIndexSetInteger(0,PLOT_LINE_WIDTH,1);
//--- Çizgiler için etiket ayarla
   PlotIndexSetString(0,PLOT_LABEL,"Moving Average");
//---
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//--- 
   for(int i=prev_calculated;i<rates_total;i++)
     {
      MABuffer[i]=close[i];
     }
//--- bir sonraki çağrı için prev_calculated değerine dönüş yap
   return(rates_total);
  }