OBJ_TEXT

Metin nesnesi.

ObjText

Not

Tutturma noktası konumu, metne göre ENUM_ANCHOR_POINT sayımından seçilebilir. Ayrıca, OBJPROP_ANGLE özelliğini kullanarak metnin eğim açısını da değiştirebilirsiniz

Örnek

Aşağıdaki script, çizelge üzerinde metin nesneleri oluşturur. 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 creates \"Text\" grafiksel nesneler."
//--- betiğin çalıştırılması sırasında giriş parametreleri penceresini göster
#property script_show_inputs
//--- betiğin giriş parametreleri
input string            InpFont="Arial";         // Yazı tipi
input int               InpFontSize=10;          // Yazı tipi boyutu
input color             InpColor=clrRed;         // Renk
input double            InpAngle=90.0;           // Derece olarak eğim açısı
input ENUM_ANCHOR_POINT InpAnchor=ANCHOR_LEFT;   // Tutturma (çapa) tipi
input bool              InpBack=false;           // Arkaplan nesnesi
input bool              InpSelection=false;      // Taşıma için vurgula
input bool              InpHidden=true;          // Nesne listesinde gizleme
input long              InpZOrder=0;             // Fare tıklaması için öncelik
//+------------------------------------------------------------------+
//| Metin nesnesinin oluşturulması                                   |
//+------------------------------------------------------------------+
bool TextCreate(const long              chart_ID=0,               // çizelge kimliği
                const string            name="Text",              // nesne ismi
                const int               sub_window=0,             // alt-pencere indisi
                datetime                time=0,                   // tutturma (çapa) noktası zamanı
                double                  price=0,                  // tutturma noktası fiyatı
                const string            text="Text",              // metnin kendisi
                const string            font="Arial",             // yazı tipi
                const int               font_size=10,             // yazı tipi boyutu
                const color             clr=clrRed,               // renk
                const double            angle=0.0,                // metin eğimi
                const ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_UPPER// çapa tipi
                const bool              back=false,               // arka-planda
                const bool              selection=false,          // taşıma için vurgula
                const bool              hidden=true,              // nesne listesinde gizle
                const long              z_order=0)                // fare tıklaması için öncelik
  {
//--- ayarlanmamışsa, tutturma noktası koordinatlarını ayarla
   ChangeTextEmptyPoint(time,price);
//--- hata değerini sıfırla
   ResetLastError();
//--- Metin nesnesini olştur
   if(!ObjectCreate(chart_ID,name,OBJ_TEXT,sub_window,time,price))
     {
      Print(__FUNCTION__,
            ": \"Metin\" nesnesinin oluşturulması başarısız oldu! Hata kodu = ",GetLastError());
      return(false);
     }
//--- metni ayarla
   ObjectSetString(chart_ID,name,OBJPROP_TEXT,text);
//--- metin yazı tipini ayarla
   ObjectSetString(chart_ID,name,OBJPROP_FONT,font);
//--- yazı tipi boyutunu ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_FONTSIZE,font_size);
//--- metnin eğim açısını ayarla
   ObjectSetDouble(chart_ID,name,OBJPROP_ANGLE,angle);
//--- tutturma noktası tipini ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- rengi ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- ön-planda (false) veya arkaplanda (true) göster
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- nesneyi 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);
  }
//+------------------------------------------------------------------+
//| Tutturma noktasını taşı                                          |
//+------------------------------------------------------------------+
bool TextMove(const long   chart_ID=0,  // çizelge kimliği
              const string name="Text"// nesne ismi
              datetime     time=0,      // tutturma noktasının zaman koordinatı
              double       price=0)     // tutturma noktasının fiyat koordinatı
  {
//--- noktanın pozisyonu belirlenmemişse, noktayı Bid (alış) fiyatı olan mevcut çubuğa taşı
   if(!time)
      time=TimeCurrent();
   if(!price)
      price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- hata değerini sıfırla
   ResetLastError();
//--- tutturma noktasını taşı
   if(!ObjectMove(chart_ID,name,0,time,price))
     {
      Print(__FUNCTION__,
            ": tutturma noktasının taşınması başarısız! Hata kodu = ",GetLastError());
      return(false);
     }
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| Nesnenin metnini değiştir                                        |
//+------------------------------------------------------------------+
bool TextChange(const long   chart_ID=0,  // çizelge tanımlayıcı
                const string name="Text"// nesne ismi
                const string text="Text"// metin
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- nesne metnini değiştir
   if(!ObjectSetString(chart_ID,name,OBJPROP_TEXT,text))
     {
      Print(__FUNCTION__,
            ": metin değiştirilemedi! Hata kodu = ",GetLastError());
      return(false);
     }
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| Metin nesnesini sil                                              |
//+------------------------------------------------------------------+
bool TextDelete(const long   chart_ID=0,  // çizelge kimliği
                const string name="Text"// nesne ismi
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- nesneyi sil
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": \"Metin\" nesnesi silinemedi! Hata kodu = ",GetLastError());
      return(false);
     }
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| Tutturma noktası değerlerini kontrol et ve                       |
//| boş olanlar için varsayılan değerleri ayarla                     |
//+------------------------------------------------------------------+
void ChangeTextEmptyPoint(datetime &time,double &price)
  {
//--- noktanın zamanı ayarlanmamışsa, mevcut çubuk üzerinde olacak
   if(!time)
      time=TimeCurrent();
//--- noktanın fiyatı ayarlanmamışsa, Bid değerini alacak
   if(!price)
      price=SymbolInfoDouble(Symbol(),SYMBOL_BID);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   datetime date[]; // görünür çubukların tarihlerini depolamak için bir dizi
   double   low[];  // görünür çubukların Low (düşük) fiyatlarını depolamak için bir dizi
   double   high[]; // görünür çubukların High (yüksek) fiyatlarını depolamak için bir dizi
//--- çizelge penceresindeki görünür çubukların sayısı
   int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- bellek tahsisi
   ArrayResize(date,bars);
   ArrayResize(low,bars);
   ArrayResize(high,bars);
//--- tarih dizisini doldur
   ResetLastError();
   if(CopyTime(Symbol(),Period(),0,bars,date)==-1)
     {
      Print("Zaman değerlerinin kopyalanması başarısız oldu! Hata kodu = ",GetLastError());
      return;
     }
//--- Low (düşük) fiyatların dizisini doldur
   if(CopyLow(Symbol(),Period(),0,bars,low)==-1)
     {
      Print("Low (düşük) fiyat değerlerinin kopyalanması başarısız oldu! Hata kodu = ",GetLastError());
      return;
     }
//--- High (yüksek) fiyat dizisini doldur
   if(CopyHigh(Symbol(),Period(),0,bars,high)==-1)
     {
      Print("High (yüksek) fiyat değerlerinin kopyalanması başarısız oldu! Hata kodu = ",GetLastError());
      return;
     }
//--- metinler ne sıklıkta gösterilecek, tanımla
   int scale=(int)ChartGetInteger(0,CHART_SCALE);
//--- adım değerini taımla
   int step=1;
   switch(scale)
     {
      case 0:
         step=12;
         break;
      case 1:
         step=6;
         break;
      case 2:
         step=4;
         break;
      case 3:
         step=2;
         break;
     }
//--- High (yüksek) ve Low (düşük) çubukların değerleri (boşluklu olarak) için metinler oluştur 
   for(int i=0;i<bars;i+=step)
     {
      //--- metinleri oluştur
      if(!TextCreate(0,"TextHigh_"+(string)i,0,date[i],high[i],DoubleToString(high[i],5),InpFont,InpFontSize,
         InpColor,InpAngle,InpAnchor,InpBack,InpSelection,InpHidden,InpZOrder))
        {
         return;
        }
      if(!TextCreate(0,"TextLow_"+(string)i,0,date[i],low[i],DoubleToString(low[i],5),InpFont,InpFontSize,
         InpColor,-InpAngle,InpAnchor,InpBack,InpSelection,InpHidden,InpZOrder))
        {
         return;
        }
      //--- script işlemi devre dışı bırakıldı mı kontrol et
      if(IsStopped())
         return;
      //--- çizelgeyi yenile
      ChartRedraw();
      // 0.05 saniyelik gecikme
      Sleep(50);
     }
//--- yarım saniyelik gecikme
   Sleep(500);
//--- metinleri sil
   for(int i=0;i<bars;i+=step)
     {
      if(!TextDelete(0,"TextHigh_"+(string)i))
         return;
      if(!TextDelete(0,"TextLow_"+(string)i))
         return;
      //--- çizelgeyi yenile
      ChartRedraw();
      // 0.05 saniyelik gecikme
      Sleep(50);
     }
//---
  }