| //--- açıklama
#property description "Script, çizelge penceresi içinde bir bitmap nesnesi 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          InpFile="\\Images\\dollar.bmp"; // Bitmap dosyası ismi
 input int             InpWidth=24;                    // Görünürlük alanının X koordinatı
 input int             InpHeight=24;                   // Görünürlük alanının X koordinatı
 input int             InpXOffset=4;                   // Görünürlük alanının X eksenine göre kaydırılması
 input int             InpYOffset=4;                   // Görünürlük alanının Y eksenine göre kaydırılması
 input color           InpColor=clrRed;                // Kenar çizgisi rengi (vurgulandığında)
 input ENUM_LINE_STYLE InpStyle=STYLE_SOLID;           // Çizgi stili (vurgulandığında)
 input int             InpPointWidth=1;                // Taşıma noktası büyüklüğü
 input bool            InpBack=false;                  // Arkaplan nesnesi
 input bool            InpSelection=false;             // Taşıma için vurgula
 input bool            InpHidden=true;                 // Nesne listesinde gizle
 input long            InpZOrder=0;                    // Fare tıklaması için öncelik
 //+------------------------------------------------------------------+
 //| Çizelge penceresinde bir bitmap nesnesi oluşturur                  |
 //+------------------------------------------------------------------+
 bool BitmapCreate(const long            chart_ID=0,        // çizelge kimliği
 const string          name="Bitmap",     // bitmap ismi
 const int             sub_window=0,      // alt-pencere indisi
 datetime              time=0,            // tutturma noktası zamanı
 double                price=0,           // çapa noktası fiyatı
 const string          file="",           // bitmap dosya adı
 const int             width=10,          // görünürlük alanının X koordinatı
 const int             height=10,         // görünürlük alanının Y koordinatı
 const int             x_offset=0,        // görünürlük alanının X eksenine göre kaydırılması
 const int             y_offset=0,        // görünürlük alanının Y eksenine göre kaydırılması
 const color           clr=clrRed,        // vurgulandığında kenar çizgisi rengi
 const ENUM_LINE_STYLE style=STYLE_SOLID, // vurgulandığında çizgi rengi
 const int             point_width=1,     // taşıma noktasının boyutu
 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ıklama önceliği
 {
 //--- ayarlanmamışsa, tutturma noktası koordinatlarını ayarla
 ChangeBitmapEmptyPoint(time,price);
 //--- hata değerini sıfırla
 ResetLastError();
 //--- bir bitmap nesnesi oluştur
 if(!ObjectCreate(chart_ID,name,OBJ_BITMAP,sub_window,time,price))
 {
 Print(__FUNCTION__,
 ": çizelge penceresinde bir bitmap nesnesi oluşturulamadı! Hata kodu = ",GetLastError());
 return(false);
 }
 //--- resim dosyasının adresini ayarla
 if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,file))
 {
 Print(__FUNCTION__,
 ": resmin yüklenmesi başarısız oldu! Hata kodu = ",GetLastError());
 return(false);
 }
 //--- resmin görünürlük alanını ayarla; eğer yükseklik ve genişlik değerleri
 //--- sırasıyla kaynak resmin genişlik ve yüksekliğini geçerse
 //--- etiket çizilmez; aksi durumda ise,
 //--- sadece bu değerler karşılık gelen kısım çizilir
 ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
 ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
 //--- resmin görünürlük alanında görüntülenecek kısmını ayarla
 //--- öntanımlı kısım resmin sol üst alanıdır; değerler,
 //--- resmin başka bir kısmının gösterilmesi için bir kaydırma gerçekleştirir
 ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_offset);
 ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset);
 //--- 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);
 }
 //+------------------------------------------------------------------+
 //| Bitmap nesnesi için yeni bir resim ayarla                        |
 //+------------------------------------------------------------------+
 bool BitmapSetImage(const long   chart_ID=0,    // çizelge kimliği
 const string name="Bitmap", // bitmap ismi
 const string file="")       // dosya adresi
 {
 //--- hata değerini sıfırla
 ResetLastError();
 //--- resim dosyasının adresini ayarla
 if(!ObjectSetString(chart_ID,name,OBJPROP_BMPFILE,file))
 {
 Print(__FUNCTION__,
 ": resmin yüklenmesi başarısız oldu! Hata kodu = ",GetLastError());
 return(false);
 }
 //--- başarılı çalıştırma
 return(true);
 }
 //+------------------------------------------------------------------+
 //| Bir bitmap nesnesini çizelge üzerinde taşı                       |
 //+------------------------------------------------------------------+
 bool BitmapMove(const long   chart_ID=0,    // çizelge kimliği
 const string name="Bitmap", // bitmap ismi
 datetime     time=0,        // tutturma noktası zamanı
 double       price=0)       // tutturma noktası fiyatı
 {
 //--- 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 (bitmap) görünürlük alanı boyutunu değiştir             |
 //+------------------------------------------------------------------+
 bool BitmapChangeSize(const long   chart_ID=0,    // çizelge kimliği
 const string name="Bitmap", // bitmap ismi
 const int    width=0,       // bitmap genişliği
 const int    height=0)      // bitmap yüksekliği
 {
 //--- hata değerini sıfırla
 ResetLastError();
 //--- bitmap büyüklüğünü değiştir
 if(!ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width))
 {
 Print(__FUNCTION__,
 ": bitmap genişliğinin değiştirilmesi başarısız! Hata kodu = ",GetLastError());
 return(false);
 }
 if(!ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height))
 {
 Print(__FUNCTION__,
 ": bitmap yüksekliğinin değiştirilmesi başarısız! Hata kodu = ",GetLastError());
 return(false);
 }
 //--- başarılı çalıştırma
 return(true);
 }
 //+--------------------------------------------------------------------+
 //| Görünürlük alanının üst sağ köşesinin koordinatlarını değiştir     |
 //+--------------------------------------------------------------------+
 bool BitmapMoveVisibleArea(const long   chart_ID=0,    // çizelge tanımlayıcısı
 const string name="Bitmap", // bitmap ismi
 const int    x_offset=0,    // görünürlük alanının X koordinatı
 const int    y_offset=0)    // görünürlük alanının Y koordinatı
 {
 //--- hata değerini sıfırla
 ResetLastError();
 //--- bitmap nesnesinin görünürlük alanının koordinatlarını değiştir
 if(!ObjectSetInteger(chart_ID,name,OBJPROP_XOFFSET,x_offset))
 {
 Print(__FUNCTION__,
 ": görünürlük alanının X koordinatının değiştirilmesi başarısız! Hata kodu = ",GetLastError());
 return(false);
 }
 if(!ObjectSetInteger(chart_ID,name,OBJPROP_YOFFSET,y_offset))
 {
 Print(__FUNCTION__,
 ": görünürlük alanının X koordinatının değiştirilmesi başarısız! Hata kodu = ",GetLastError());
 return(false);
 }
 //--- başarılı çalıştırma
 return(true);
 }
 //+------------------------------------------------------------------+
 //| Bitmap nesnesini sil                                             |
 //+------------------------------------------------------------------+
 bool BitmapDelete(const long   chart_ID=0,    // çizelge tanımlayıcısı
 const string name="Bitmap") // bitmap ismi
 {
 //--- hata değerini sıfırla
 ResetLastError();
 //--- etiketi sil
 if(!ObjectDelete(chart_ID,name))
 {
 Print(__FUNCTION__,
 ": bitmap 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 ChangeBitmapEmptyPoint(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 depolayan bir dizi
 double   close[]; // kapanış (Close) fiyatlarının depolanması için bir dizi
 //--- bitmap dosyasının adı
 string   file="\\Images\\dollar.bmp";
 //--- çizelge penceresindeki görünür çubukların sayısı
 int bars=(int)ChartGetInteger(0,CHART_VISIBLE_BARS);
 //--- bellek tahsisi
 ArrayResize(date,bars);
 ArrayResize(close,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;
 }
 //--- kapanış (Close) fiyatları dizisini doldur
 if(CopyClose(Symbol(),Period(),0,bars,close)==-1)
 {
 Print("Kapanış fiyatı değerleri kopyalanamadı! Hata kodu = ",GetLastError());
 return;
 }
 //--- resmin ne sıklıkta görüntüleneceğini tanımla
 int scale=(int)ChartGetInteger(0,CHART_SCALE);
 //--- adım değerini taımla
 int step=1;
 switch(scale)
 {
 case 0:
 step=27;
 break;
 case 1:
 step=14;
 break;
 case 2:
 step=7;
 break;
 case 3:
 step=4;
 break;
 case 4:
 step=2;
 break;
 }
 //--- High ve Low (yüksek ve düşük) çubukların değerleri için (boşluklu olarak) bitmap'ler oluştur
 for(int i=0;i<bars;i+=step)
 {
 //--- bitmap'leri oluştur
 if(!BitmapCreate(0,"Bitmap_"+(string)i,0,date[i],close[i],InpFile,InpWidth,InpHeight,InpXOffset,
 InpYOffset,InpColor,InpStyle,InpPointWidth,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);
 //--- satış işaretlerini sil
 for(int i=0;i<bars;i+=step)
 {
 if(!BitmapDelete(0,"Bitmap_"+(string)i))
 return;
 if(!BitmapDelete(0,"Bitmap_"+(string)i))
 return;
 //--- çizelgeyi yenile
 ChartRedraw();
 // 0.05 saniyelik gecikme
 Sleep(50);
 }
 //---
 }
 |