OBJ_ARROW_BUY

Alış sinyali.

ObjArrowBuy

Örnek

Aşağıdaki script, Alış sinyalini oluşturur ve ç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 "Bu script, \"Alış\" sinyalini çizelge penceresine çizer."
//--- betiğin çalıştırılması sırasında giriş parametreleri penceresini göster
#property script_show_inputs
//--- betiğin giriş parametreleri
input color InpColor=C'3,95,172'// Işaretlerin rengi
//+------------------------------------------------------------------+
//| Alış sinyalini oluştur                                           |
//+------------------------------------------------------------------+
bool ArrowBuyCreate(const long            chart_ID=0,        // çizelge tanımlayıcısı
                    const string          name="ArrowBuy",   // işaret (sinyal) ismi
                    const int             sub_window=0,      // alt pencere indisi
                    datetime              time=0,            // tutturma noktası zamanı
                    double                price=0,           // tutturma noktası fiyatı
                    const color           clr=C'3,95,172',   // işaret rengi
                    const ENUM_LINE_STYLE style=STYLE_SOLID// çizgi stili (vurgulandığında)
                    const int             width=1,           // çizgi boyutu (vurgulandığında)
                    const bool            back=false,        // arka planda
                    const bool            selection=false,   // taşıma için vurgula
                    const bool            hidden=true,       // nesneyi listede 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_BUY,sub_window,time,price))
     {
      Print(__FUNCTION__,
            ": \"Alım\" sinyali oluşturma başarısız! Hata kodu = ",GetLastError());
      return(false);
     }
//--- bir işaret rengi ayarla
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- bir çizgi stili ayarla (vurgulandığında)
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- bir çizgi boyutu ayarla (vurgulandığında)
   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)
   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 ArrowBuyMove(const long   chart_ID=0,      // çizelge kimliği
                  const string name="ArrowBuy"// 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);
  }
//+------------------------------------------------------------------+
//| Alış sinyalini sil                                               |
//+------------------------------------------------------------------+
bool ArrowBuyDelete(const long   chart_ID=0,      // çizelge tanımlayıcısı
                    const string name="ArrowBuy"// işaret (sinyal) ismi
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- işareti sil
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": \"Alış\" 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()
  {
   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;
     }
//--- Her bir görünür çubuk için düşük noktalarda Alış işaretleri oluştur
   for(int i=0;i<bars;i++)
     {
      if(!ArrowBuyCreate(0,"ArrowBuy_"+(string)i,0,date[i],low[i],InpColor))
         return;
      //--- script işlemi devre dışı bırakıldı mı kontrol et
      if(IsStopped())
         return;
      //--- çizelgeyi yenile
      ChartRedraw();
      // 0.05 saniyelik gecikme
      Sleep(50);
     }
//--- Alış işaretini her görünür çubuk için High (yüksek) noktaya taşı
   for(int i=0;i<bars;i++)
     {
      if(!ArrowBuyMove(0,"ArrowBuy_"+(string)i,date[i],high[i]))
         return;
      //--- script işlemi devre dışı bırakıldı mı kontrol et
      if(IsStopped())
         return;
      //--- çizelgeyi yenile
      ChartRedraw();
      // 0.05 saniyelik gecikme
      Sleep(50);
     }
//--- Alış işaretini sil
   for(int i=0;i<bars;i++)
     {
      if(!ArrowBuyDelete(0,"ArrowBuy_"+(string)i))
         return;
      //--- çizelgeyi yenile
      ChartRedraw();
      // 0.05 saniyelik gecikme
      Sleep(50);
     }
//---
  }