OBJ_ARROW_SELL

Satış işareti.

ObjArrowSell

Örnek

Aşağıdaki betik, Satış işaretini çizelge üzerinde oluşturur ve 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 \"Satış\" işaretini çizelge penceresinde 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 color InpColor=C'225,68,29'// İşaretlerin rengi
//+------------------------------------------------------------------+
//| Satış işaretini oluştur                                            |
//+------------------------------------------------------------------+
bool ArrowSellCreate(const long            chart_ID=0,        // çizelge kimliği
                     const string          name="ArrowSell",  // işaretin 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'225,68,29',  // işaret rengi
                     const ENUM_LINE_STYLE style=STYLE_SOLID// çizgi stili (vurgulandığında)
                     const int             width=1,           // çizgi kalınlığı (vurgulandığında)
                     const bool            back=false,        // arka-plan çizimi
                     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
   ChangeArrowEmptyPoint(time,price);
//--- hata değerini sıfırla
   ResetLastError();
//--- işareti oluştur
   if(!ObjectCreate(chart_ID,name,OBJ_ARROW_SELL,sub_window,time,price))
     {
      Print(__FUNCTION__,
            ": \"Satış\" işaretinin oluşturulması 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 ArrowSellMove(const long   chart_ID=0,       // çizelge kimliği
                   const string name="ArrowSell"// nesne ismi
                   datetime     time=0,           // tutturma noktasının zaman koordinatı
                   double       price=0)          // tutturma noktası 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);
  }
//+------------------------------------------------------------------+
//| Satış işaretini sil                                              |
//+------------------------------------------------------------------+
bool ArrowSellDelete(const long   chart_ID=0,       // çizelge kimliği
                     const string name="ArrowSell"// işaret ismi
  {
//--- hata değerini sıfırla
   ResetLastError();
//--- işareti sil
   if(!ObjectDelete(chart_ID,name))
     {
      Print(__FUNCTION__,
            ": \"Satış\" işaretinin silinmesi başarısız oldu! 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 görünür çubuk için High (yüksek fiyat) noktalarında Satış işaretini oluştur
   for(int i=0;i<bars;i++)
     {
      if(!ArrowSellCreate(0,"ArrowSell_"+(string)i,0,date[i],high[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);
     }
//--- satış işaretlerini, her görünür çubuk için Low (düşük fiyat) noktalarına taşı
   for(int i=0;i<bars;i++)
     {
      if(!ArrowSellMove(0,"ArrowSell_"+(string)i,date[i],low[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);
     }
//--- satış işaretlerini sil
   for(int i=0;i<bars;i++)
     {
      if(!ArrowSellDelete(0,"ArrowSell_"+(string)i))
         return;
      //--- çizelgeyi yenile
      ChartRedraw();
      // 0.05 saniyelik gecikme
      Sleep(50);
     }
//---
  }