OBJ_ARROW_THUMB_UP

Başparmak Yukarı işareti.

ObjArrowTumbUp

Not

İşarete göre tutturma konumu ENUM_ARROW_ANCHOR sayımından seçilebilir.

MetaEditor'de bir kod yazarken büyük işaretler (5'ten büyük), sadece uygun OBJPROP_WIDTH özellik değerini ayarlayarak oluşturulabilir.

Örnek

Aşağıdaki script, Başparmak Yukarı işaretini oluşturur ve onu çizelge üzerinde 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, \"Başparmak Yukarı\" işaretini çizer."
#property description "Tutturma noktası koordinatları, çizelge penceresi"
#property description "boyutunun yüzdesi şeklinde ayarlanır."
//--- 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="ThumbUp";    // İşaret ismi
input int               InpDate=75;           // % şeklinde tutturma noktası tarihi
input int               InpPrice=25;          // % şeklinde tutturma noktası fiyatı
input ENUM_ARROW_ANCHOR InpAnchor=ANCHOR_TOP// Tutturma noktası tipi
input color             InpColor=clrRed;      // İşaret rengi
input ENUM_LINE_STYLE   InpStyle=STYLE_DOT;   // Kenar çizgisi stili
input int               InpWidth=5;           // İşaret boyutu
input bool              InpBack=false;        // Arkaplan işareti
input bool              InpSelection=true;    // Taşıma için vurgula
input bool              InpHidden=true;       // Nesne listesinde gizle
input long              InpZOrder=0;          // Fare tıklaması için öncelik
//+------------------------------------------------------------------+
//| Başparmak Yukarı işaretini oluştur                               |
//+------------------------------------------------------------------+
bool ArrowThumbUpCreate(const long              chart_ID=0,           // çizelge tanımlayıcısı
                        const string            name="ThumbUp",       // işaret ismi
                        const int               sub_window=0,         // alt pencere indisi
                        datetime                time=0,               // tutturma noktası zamanı
                        double                  price=0,              // tutturma noktası fiyatı
                        const ENUM_ARROW_ANCHOR anchor=ANCHOR_BOTTOM// çapa (tutturma) tipi
                        const color             clr=clrRed,           // işaret rengi
                        const ENUM_LINE_STYLE   style=STYLE_SOLID,    // kenar çizgisi stili
                        const int               width=3,              // işaret boyutu
                        const bool              back=false,           // arka-planda göster
                        const bool              selection=true,       // 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
   ChangeArrowEmptyPoint(time,price);
//--- hata değerini sıfırla
   ResetLastError();
//--- işareti oluştur
   if(!ObjectCreate(chart_ID,name,OBJ_ARROW_THUMB_UP,sub_window,time,price))
     {
      Print(__FUNCTION__,
            ": \"Başparmak Yukarı\" işaretinin oluşturulması başarısız! Hata kodu = ",GetLastError());
      return(false);
     }
//--- tutturma noktası tipini ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- bir işaret rengi ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- kenar çizgi stilini ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- işaret boyutunu ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- ön-planda (false) veya arkaplanda (true) göster
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- işareti fare ile taşıma modunu etkinleştir (true) veya devre dışı bırak (false)
//--- ObjectCreate fonksiyonu ile bir nesne oluşturulurken,
//--- nesne ön tanımlı olarak vurgulanamaz veya taşınamaz. Bu yöntemin içinde, parametre için ön tanımlı olarak 'true' değerinin
//--- seçilmesi, nesnenin vurgulanmasını ve taşınmasını mümkün kılar
   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 ArrowThumbUpMove(const long   chart_ID=0,     // çizelge kimliği
                      const string name="ThumbUp"// nesne ismi
                      datetime     time=0,         // tutturma noktası zaman koordinatları
                      double       price=0)        // tutturma noktası fiyat koordinatları
  {
//--- 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);
  }
//+------------------------------------------------------------------+
//| Başparmak Yukarı işaretinin tutturma noktası ayarla              |
//+------------------------------------------------------------------+
bool ArrowThumbUpAnchorChange(const long              chart_ID=0,        // çizelge kimliği
                              const string            name="ThumbUp",    // nesne ismi
                              const ENUM_ARROW_ANCHOR anchor=ANCHOR_TOP// çapa (tutturma) tipi
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- tutturma noktası tipini değiştir
   if(!ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor))
     {
      Print(__FUNCTION__,
            ": tutturma noktası tipinin değiştirilmesi başarısız oldu! Hata kodu = ",GetLastError());
      return(false);
     }
//--- başarılı çalıştırma
   return(true);
  }
//+------------------------------------------------------------------+
//| Başparmak Yukarı işaretini sil                                   |
//+------------------------------------------------------------------+
bool ArrowThumbUpDelete(const long   chart_ID=0,     // çizelge kimliği
                        const string name="ThumbUp"// işaret ismi
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- işareti sil
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": \"Başparmak Yukarı\" işaretinin silinmesi başarısız! 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 ChangeArrowEmptyPoint(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()
  {
//--- giriş parametrelerinin doğruluğunu kontrol et
   if(InpDate<0 || InpDate>100 || InpPrice<0 || InpPrice>100)
     {
      Print("Hata! Hatalı giriş parametresi değerleri!");
      return;
     }
//--- çizelge penceresindeki görünür çubukların sayısı
   int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
//--- fiyat dizisi büyüklüğü
   int accuracy=1000;
//--- nesnenin tutturma noktası konumunu değiştirmek için kullanılacak
//--- tarih ve fiyat değerlerinin saklanacağı diziler
   datetime date[];
   double   price[];
//--- bellek tahsisi
   ArrayResize(date,bars);
   ArrayResize(price,accuracy);
//--- 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;
     }
//--- fiyat dizisini değerlerle doldur
//--- çizelgedeki en yüksek ve en düşük değerleri bul
   double max_price=ChartGetDouble(0,CHART_PRICE_MAX);
   double min_price=ChartGetDouble(0,CHART_PRICE_MIN);
//--- fiyatlar için bir değişim birimini tanımla ve diziyi doldur
   double step=(max_price-min_price)/accuracy;
   for(int i=0;i<accuracy;i++)
      price[i]=min_price+i*step;
//--- işaretin çizileceği noktaları tanımla
   int d=InpDate*(bars-1)/100;
   int p=InpPrice*(accuracy-1)/100;
//--- Başparmak Yukarı işaretini çizelge üzerinde oluştur
   if(!ArrowThumbUpCreate(0,InpName,0,date[d],price[p],InpAnchor,InpColor,
      InpStyle,InpWidth,InpBack,InpSelection,InpHidden,InpZOrder))
     {
      return;
     }
//--- çizelgeyi yenile ve 1 saniye bekle
   ChartRedraw();
   Sleep(1000);
//--- şimdi, tutturma noktasını taşı ve konumunu işarete göre değiştir
//--- döngü sayacı
   int h_steps=bars/4;
//--- tutturma noktasını taşı
   for(int i=0;i<h_steps;i++)
     {
      //--- bir sonraki değeri kullan
      if(d>1)
         d-=1;
      //--- tutturma noktasını taşı
      if(!ArrowThumbUpMove(0,InpName,date[d],price[p]))
         return;
      //--- script işlemi devre dışı bırakıldı mı kontrol et
      if(IsStopped())
         return;
      //--- çizelgeyi yenile
      ChartRedraw();
      // 0.05 saniyelik gecikme
      Sleep(50);
     }
//--- 1 saniyelik gecikme
   Sleep(1000);
//--- döngü sayacı
   int v_steps=accuracy/4;
//--- tutturma noktasını taşı
   for(int i=0;i<v_steps;i++)
     {
      //--- bir sonraki değeri kullan
      if(p<accuracy-1)
         p+=1;
      //--- tutturma noktasını taşı
      if(!ArrowThumbUpMove(0,InpName,date[d],price[p]))
         return;
      //--- script işlemi devre dışı bırakıldı mı kontrol et
      if(IsStopped())
         return;
      //--- çizelgeyi yenile
      ChartRedraw();
     }
//--- tutturma noktasının konumunu işarete göre değiştir
   ArrowThumbUpAnchorChange(0,InpName,ANCHOR_BOTTOM);
//--- çizelgeyi yeniden çiz
   ChartRedraw();
//--- 1 saniyelik gecikme
   Sleep(1000);
//--- işareti çizelgeden sil
   ArrowThumbUpDelete(0,InpName);
   ChartRedraw();
//--- 1 saniyelik gecikme
   Sleep(1000);
//---
  }