OBJ_CHART

Çizelge nesnesi.

ObjChart

Not

Görsel test sırasında "OBJ_CHART" türü nesneler desteklenmez (görüntülenmez).

Tutturma noktası koordinatları piksel bazında ayarlanır. Tutturma noktasını ENUM_BASE_CORNER sayımından seçebilirsiniz.

Çizelge nesnesi için sembol, periyot ve ölçek değerleri seçilebilir. Fiyat ölçeği ve tarih görüntüleme modu da ayrıca etkinleştirilebilir/devre dışı bırakılabilir.

Örnek

Aşağıdaki script, Çizelge nesnesini oluşturur ve taşır. Grafiksel nesne özelliklerini oluşturmak ve değiştirmek için özel fonksiyonlar geliştirilmiştir. Bu fonksiyonları kendi uygulamalarınızda da "aynı şekilde" kullanabilirsiniz.

 

//--- açıklama
#property description "Script, \"Çizelge nesnesini oluşturur\" nesnesini oluşturur."
//--- betiğin çalıştırılması sırasında giriş parametreleri penceresini göster
#property script_show_inputs
//--- betiğin giriş parametreleri
input string           InpName="Chart";             // Nesne ismi
input string           InpSymbol="EURUSD";          // Sembol
input ENUM_TIMEFRAMES  InpPeriod=PERIOD_H1;         // Periyot
input ENUM_BASE_CORNER InpCorner=CORNER_LEFT_UPPER// Tutturma köşesi
input int              InpScale=2;                  // Ölçek
input bool             InpDateScale=true;           // Zaman ölçeğinin görüntülenmesi
input bool             InpPriceScale=true;          // Fiyat ölçeğinin görüntülenmesi
input color            InpColor=clrRed;             // Kenar çizgisinin rengi (vurgulandığında)
input ENUM_LINE_STYLE  InpStyle=STYLE_DASHDOTDOT;   // Çizgi stili (vurgulandığında)
input int              InpPointWidth=1;             // Taşıma noktası boyutu
input bool             InpBack=false;               // Arka-plan nesnesi
input bool             InpSelection=true;           // Taşıma için vurgula
input bool             InpHidden=true;              // Nesne listesinde gizle
input long             InpZOrder=0;                 // Fare tıklaması önceliği
//+------------------------------------------------------------------+
//| Çizelge nesnesinin oluşturulması                                 |
//+------------------------------------------------------------------+
bool ObjectChartCreate(const long              chart_ID=0,               // çizelge kimliği
                       const string            name="Chart",             // nesne ismi
                       const int               sub_window=0,             // alt-pencere indisi
                       const string            symbol="EURUSD",          // sembol
                       const ENUM_TIMEFRAMES   period=PERIOD_H1,         // periyot
                       const int               x=0,                      // X koordinatı
                       const int               y=0,                      // Y koordinatı
                       const int               width=300,                // genişlik
                       const int               height=200,               // yükseklik
                       const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER// tutturma köşesi
                       const int               scale=2,                  // ölçek
                       const bool              date_scale=true,          // zaman ölçeğinin görüntülenmesi
                       const bool              price_scale=true,         // fiyat ölçeğinin görüntülenmesi
                       const color             clr=clrRed,               // kenar çizgisi rengi (vurgulandığında)
                       const ENUM_LINE_STYLE   style=STYLE_SOLID,        // kenar çizgisi stili (vurgulandığında)
                       const int               point_width=1,            // taşıma noktası boyutu
                       const bool              back=false,               // arkaplanda
                       const bool              selection=false,          // taşıma için vurgula
                       const bool              hidden=true,              // nesne listesinde gizle
                       const long              z_order=0)                // fare tıklaması önceliği
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- çizelge nesnesini oluştur
   if(!ObjectCreate(chart_ID,name,OBJ_CHART,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": \"çizelge\" nesnesinin oluşturulması başarısız! Hata kodu = ",GetLastError());
      return(false);
     }
//--- nesne koordinatlarının ayarlanması
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- nesne büyüklüğünü ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- tanımlanan nokta koordinatlarına göre çapa (tutturma) köşesini ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- sembolü ayarla
   ObjectSetString(chart_ID,name,OBJPROP_SYMBOL,symbol);
//--- periyodu ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_PERIOD,period);
//--- ölçeği ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_CHART_SCALE,scale);
//--- zaman ölçeğini görüntüle (true) veya (false) gizle
   ObjectSetInteger(chart_ID,name,OBJPROP_DATE_SCALE,date_scale);
//--- zaman ölçeğini görüntüle (true) veya (false) gizle
   ObjectSetInteger(chart_ID,name,OBJPROP_PRICE_SCALE,price_scale);
//--- nesne vurgulama modu etkinken kenar çizgisi rengini ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- nesne vurgulama modu etkinken kenar çizgisinin stilini ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- nesne taşıma için tutturma noktası boyutunu ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,point_width);
//--- ön-planda (false) veya arkaplanda (true) göster
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- etiketi fare ile taşıma modunu etkinleştir (true) veya devre dışı bırak (false)
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- nesne listesinde grafiksel nesnenin adını sakla (true) veya göster (false)
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- çizelge üzerinde fare tıklaması olayının alınması için özellik ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| Sembolü ve Çizelge nesnesinin zaman aralığını ayarla             |
//+------------------------------------------------------------------+
bool ObjectChartSetSymbolAndPeriod(const long            chart_ID=0,       // (nesne olmayan) çizelgenin kimliği
                                   const string          name="Chart",     // nesne ismi
                                   const string          symbol="EURUSD",  // sembol
                                   const ENUM_TIMEFRAMES period=PERIOD_H1// zaman aralığı
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- çizelge nesnesinin sembolünü ve zaman aralığını ayarla
   if(!ObjectSetString(chart_ID,name,OBJPROP_SYMBOL,symbol))
     {
      Print(__FUNCTION__,
            ": \"Çizelge\" nesnesinin sembolü ayarlanamadı! Hata kodu = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_PERIOD,period))
     {
      Print(__FUNCTION__,
            ": \"Çizelge\" nesnesinin periyodu ayarlanamadı! Hata kodu = ",GetLastError());
      return(false);
     }
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| Çizelge nesnesini taşı                                           |
//+------------------------------------------------------------------+
bool ObjectChartMove(const long   chart_ID=0,   // (nesne olmayan) çizelgenin kimliği
                     const string name="Chart"// nesne ismi
                     const int    x=0,          // X koordinatı
                     const int    y=0)          // Y koordinatı
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- nesneyi taşı
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x))
     {
      Print(__FUNCTION__,
            ": \"Çizelge\" nesnesinin X koordinatı ayarlanamadı! Hata kodu = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y))
     {
      Print(__FUNCTION__,
            ": \"Çizelge\" nesnesinin Y koordinatı ayarlanamadı! Hata kodu = ",GetLastError());
      return(false);
     }
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| Çizelge nesnesinin boyutunu değiştir                             |
//+------------------------------------------------------------------+
bool ObjectChartChangeSize(const long   chart_ID=0,   // (nesne olmayan) çizelgenin kimliği
                           const string name="Chart"// nesne ismi
                           const int    width=300,    // genişlik
                           const int    height=200)   // yükseklik
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- nesne boyutunu değiştir
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
     {
      Print(__FUNCTION__,
            ": \"Çizelge\" nesnesinin genişliği ayarlanamadı! Hata kodu = ",GetLastError());
      return(false);
     }
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
     {
      Print(__FUNCTION__,
            ": \"Çizelge\" nesnesinin genişliği ayarlanamadı! Hata kodu = ",GetLastError());
      return(false);
     }
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| Çizelge nesnesinin kimliğine dönüş yap                           |
//+------------------------------------------------------------------+
long ObjectChartGetID(const long   chart_ID=0,   // (nesne olmayan) çizelgenin kimliği
                      const string name="Chart"// nesne ismi
  {
//--- Çizelge nesnesinin kimliğini almak için değişkeni hazırla
   long id=-1;
//--- hata değerini sıfırla
   ResetLastError();
//--- kimliği al
   if(!ObjectGetInteger(chart_ID,name,OBJPROP_CHART_ID,0,id))
     {
      Print(__FUNCTION__,
            ": \"Çizelge\" nesnesinin kimliği alınamadı! Hata kodu = ",GetLastError());
     }
//--- sonuç değerine dönüş yap
   return(id);
  }
//+------------------------------------------------------------------+
//| Çizelge nesnesini sil                                            |
//+------------------------------------------------------------------+
bool ObjectChartDelete(const long   chart_ID=0,   // (nesne olmayan) çizelgenin kimliği
                       const string name="Chart"// nesne ismi
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- düğmeyi sil
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": \"Çizelge\" nesnesinin silinmesi başarısız oldu! Hata kodu = ",GetLastError());
      return(false);
     }
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Piyasa Gözlemindeki sembollerin sayısı
   int  symbols=SymbolsTotal(true);
//--- sembol listesinde belirtilen isimde bir sembol var mı kontrol et
   bool exist=false;
   for(int i=0;i<symbols;i++)
      if(InpSymbol==SymbolName(i,true))
        {
         exist=true;
         break;
        }
   if(!exist)
     {
      Print("Hata! ",InpSymbol," sembol, \"Piyasa Gözlemi\" içinde mevcut değil!");
      return;
     }
//--- giriş parametrelerinin doğruluğunu kontrol et
   if(InpScale<0 || InpScale>5)
     {
      Print("Hata! Hatalı giriş parametresi değerleri!");
      return;
     }
 
//--- çizelge penceresi büyüklüğü
   long x_distance;
   long y_distance;
//--- pencere büyüklüğünü ayarla
   if(!ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0,x_distance))
     {
      Print("Çizelgenin genişlik değeri alınamadı! Hata kodu = ",GetLastError());
      return;
     }
   if(!ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0,y_distance))
     {
      Print("Çizelgenin yükseklik değeri alınamadı! Hata kodu = ",GetLastError());
      return;
     }
//--- Çizelge nesnesinin koordinatlarını ve boyutunu ayarla
   int x=(int)x_distance/16;
   int y=(int)y_distance/16;
   int x_size=(int)x_distance*7/16;
   int y_size=(int)y_distance*7/16;
//--- çizelge nesnesini oluştur
   if(!ObjectChartCreate(0,InpName,0,InpSymbol,InpPeriod,x,y,x_size,y_size,InpCorner,InpScale,InpDateScale,
      InpPriceScale,InpColor,InpStyle,InpPointWidth,InpBack,InpSelection,InpHidden,InpZOrder))
     {
      return;
     }
//--- çizelgeyi yenile ve 1 saniye bekle
   ChartRedraw();
   Sleep(1000);
//--- Çizelge nesnesini uzat
   int steps=(int)MathMin(x_distance*7/16,y_distance*7/16);
   for(int i=0;i<steps;i++)
     {
      //--- yeniden boyutlandır
      x_size+=1;
      y_size+=1;
      if(!ObjectChartChangeSize(0,InpName,x_size,y_size))
         return;
      //--- script işlemi devre dışı bırakıldı mı kontrol et
      if(IsStopped())
         return;
      //--- çizelgeyi yeniden çiz ve 0.01 saniye bekle
      ChartRedraw();
      Sleep(10);
     }
//--- yarım saniyelik gecikme
   Sleep(500);
//--- çizelge zaman aralığını değiştir
   if(!ObjectChartSetSymbolAndPeriod(0,InpName,InpSymbol,PERIOD_M1))
      return;
   ChartRedraw();
//--- üç saniyelik gecikme
   Sleep(3000);
//--- nesneyi sil
   ObjectChartDelete(0,InpName);
   ChartRedraw();
//--- 1 saniye bekle
   Sleep(1000);
//---
  }