CustomSymbolSetDouble

Kullanıcı-tanımlı sembolün reel tipli özelliğini ayarlar.

bool  CustomSymbolSetDouble(
   const string              symbol_name,      // sembol ismi
   ENUM_SYMBOL_INFO_DOUBLE   property_id,      // özelliğin tanımlayıcısı
   double                    property_value    // özelliğin değeri
   );

Parametreler

symbol_name

[in]  Kullanıcı-tanımlı sembolün ismi

property_id

[in]  Sembol özelliğinin tanımlayıcısı. Değer, ENUM_SYMBOL_INFO_DOUBLE sayımının değerlerinden biri olabilir.

property_value

[in]  Özellik değerini taşıyan 'double' tipli değişken.

Dönüş Değeri

Başarı durumunda 'true', aksi durumda 'false'. Hata hakkında bilgi almak için GetLastError() fonksiyonunu çağırın.

Not

Sembolün dakika ve tik geçmiş kayıtları tamamen kaldırılır eğer bu özelliklerden herhangi biri sembol spesifikasyonunda değiştirilse:

  • SYMBOL_POINT – bir nokta değeri
  • SYMBOL_TRADE_TICK_SIZE – İzin verilen minimum fiyat değişikliğini belirten bir tik değeri
  • SYMBOL_TRADE_TICK_VALUE – karlı bir pozisyon için tek tikli fiyat değişim değeri

Sembol geçmişini sildikten sonra terminal, güncellenmiş özellikleri kullanarak yeni bir geçmişi oluşturmaya çalışır. Aynı şey, sembol özellikleri manuel olarak değiştirildiğinde gerçekleşir.

 

Örnek:

//+------------------------------------------------------------------+
//|                                        CustomSymbolSetDouble.mq5 |
//|                                  Copyright 2024, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
 
#define   CUSTOM_SYMBOL_NAME     Symbol()+".C"  // özel sembol adı
#define   CUSTOM_SYMBOL_PATH     "Forex"        // sembolün oluşturulacağı grubun adı
#define   CUSTOM_SYMBOL_ORIGIN   Symbol()       // özel sembolün temel alınacağı sembolün adı
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- özel sembol oluştururken hata kodunu al
   int create=CreateCustomSymbol(CUSTOM_SYMBOL_NAMECUSTOM_SYMBOL_PATHCUSTOM_SYMBOL_ORIGIN);
   
//--- hata kodu 0 değilse (başarılı sembol oluşturma) ve 5304 değilse (sembol zaten oluşturulmuş) - bırak
   if(create!=0 && create!=5304)
      return;
      
//--- özel sembolün dayandığı sembolün özelliklerini al ve günlüğe yazdır
//--- (minimum hacim, maksimum hacim, işlem gerçekleştirme için minimum hacim değişikliği adımı)
   double origin_vol_min = SymbolInfoDouble(CUSTOM_SYMBOL_ORIGINSYMBOL_VOLUME_MIN);
   double origin_vol_max = SymbolInfoDouble(CUSTOM_SYMBOL_ORIGINSYMBOL_VOLUME_MAX);
   double origin_vol_stepSymbolInfoDouble(CUSTOM_SYMBOL_ORIGINSYMBOL_VOLUME_STEP);
   
   PrintFormat("The '%s' symbol from which the custom '%s' was created:\n"+
               "  Volume Min: %.2f\n  Volume Max: %.2f\n  Volume Step: %.2f",
               CUSTOM_SYMBOL_ORIGINCUSTOM_SYMBOL_NAME,
               origin_vol_minorigin_vol_maxorigin_vol_step);
   
//--- özel sembol özellikleri için diğer değerleri ayarla
   ResetLastError();
   bool res=true;
   res &=CustomSymbolSetDouble(CUSTOM_SYMBOL_NAMESYMBOL_VOLUME_MIN0.1);
   res &=CustomSymbolSetDouble(CUSTOM_SYMBOL_NAMESYMBOL_VOLUME_MAX1000);
   res &=CustomSymbolSetDouble(CUSTOM_SYMBOL_NAMESYMBOL_VOLUME_STEP0.1);
 
//--- özelliklerden herhangi biri ayarlanırken bir hata oluştuysa, günlükte ilgili bir mesaj görüntüle
   if(!res)
      Print("CustomSymbolSetDouble() failed. Error "GetLastError());
   
//--- değiştirilen özel sembol özelliklerini al ve günlüğe yazdır
//--- (minimum hacim, maksimum hacim, işlem gerçekleştirme için minimum hacim değişikliği adımı)
   double custom_vol_min = SymbolInfoDouble(CUSTOM_SYMBOL_NAMESYMBOL_VOLUME_MIN);
   double custom_vol_max = SymbolInfoDouble(CUSTOM_SYMBOL_NAMESYMBOL_VOLUME_MAX);
   double custom_vol_stepSymbolInfoDouble(CUSTOM_SYMBOL_NAMESYMBOL_VOLUME_STEP);
   
   PrintFormat("Custom symbol '%s' based on '%s':\n"+
               "  Volume Min: %.2f\n  Volume Max: %.2f\n  Volume Step: %.2f",
               CUSTOM_SYMBOL_ORIGINCUSTOM_SYMBOL_NAME,
               custom_vol_mincustom_vol_maxcustom_vol_step);
   
//--- grafikte yorum olarak kod sonlandırma tuşları hakkında bir ipucu görüntüle
   Comment(StringFormat("Press 'Esc' to exit or 'Del' to delete the '%s' symbol and exit"CUSTOM_SYMBOL_NAME));
 
//--- sonsuz bir döngüde çıkmak için Esc veya Del tuşlarına basılmasını bekle
   while(!IsStopped() && TerminalInfoInteger(TERMINAL_KEYSTATE_ESCAPE)==0)
     {
      Sleep(16);
      //--- Del tuşuna basıldığında, oluşturulan özel sembolü sil
      if(TerminalInfoInteger(TERMINAL_KEYSTATE_DELETE)<0)
        {
         if(DeleteCustomSymbol(CUSTOM_SYMBOL_NAME))
            PrintFormat("Custom symbol '%s' deleted successfully"CUSTOM_SYMBOL_NAME);
         break;
        }
     }
//--- çıkmadan önce grafiği temizle
   Comment("");
   /*
   sonuç:
   The 'EURUSDsymbol from which the custom 'EURUSD.Cwas created:
     Volume Min0.01
     Volume Max500.00
     Volume Step0.01
   Custom symbol 'EURUSDbased on 'EURUSD.C':
     Volume Min0.10
     Volume Max1000.00
     Volume Step0.10
   */
  }
//+------------------------------------------------------------------+
//| Özel sembol oluştur, bir hata kodu geri döndür                   |
//+------------------------------------------------------------------+
int CreateCustomSymbol(const string symbol_nameconst string symbol_pathconst string symbol_origin=NULL)
  {
//--- özel sembolün temel alınacağı sembolün adını tanımla
   string origin=(symbol_origin==NULL ? Symbol() : symbol_origin);
   
//--- özel bir sembol oluşturulamadıysa ve bu hata 5304 değilse, bunu günlükte raporla
   ResetLastError();
   int error=0;
   if(!CustomSymbolCreate(symbol_namesymbol_pathorigin))
     {
      error=GetLastError();
      if(error!=5304)
         PrintFormat("CustomSymbolCreate(%s, %s, %s) failed. Error %d"symbol_namesymbol_pathoriginerror);
     }
//--- başarılı
   return(error);
  }
//+------------------------------------------------------------------+
//| Özel sembol kaldır                                               |
//+------------------------------------------------------------------+
bool DeleteCustomSymbol(const string symbol_name)
  {
//--- sembolü Piyasa Gözlemi penceresinden gizle
   ResetLastError();
   if(!SymbolSelect(symbol_namefalse))
     {
      PrintFormat("SymbolSelect(%s, false) failed. Error %d"GetLastError());
      return(false);
     }
      
//--- özel sembol silinemediyse, bunu günlükte raporla ve 'false' geri döndür
   ResetLastError();
   if(!CustomSymbolDelete(symbol_name))
     {
      PrintFormat("CustomSymbolDelete(%s) failed. Error %d"symbol_nameGetLastError());
      return(false);
     }
//--- başarılı
   return(true);
  }

 

Ayrıca bakınız

SymbolInfoDouble