//--- 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);
}
//---
}
|