CustomSymbolSetString

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

bool  CustomSymbolSetString(
   const string              symbol_name,      // sembol ismi
   ENUM_SYMBOL_INFO_STRING   property_id,      // özelliğin tanımlayıcısı
   string                    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ı. Bu değer, ENUM_SYMBOL_INFO_STRING sayımının değerlerinden biri olabilir.

property_value

[in]  Özellik değerini taşıyan dizgi 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

Eğer SYMBOL_FORMULA özelliği (sembol fiyat yapımı için denklemi ayarlama) sembol spesifikasyonunda değiştirilirse, sembolün dakika ve tik geçmiş kayıtları tamamen kaldırılır. Sembol geçmiş kayıdı silindikten sonra terminal, yeni denklemi kullanarak yeni bir geçmişi yaratmaya çalışır. Aynı şey, sembol denklemi manuel olarak değiştirildiğinde gerçekleşir.

 

Örnek:

//+------------------------------------------------------------------+
//|                                        CustomSymbolSetString.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ı)
   string origin_basis    = SymbolInfoString(CUSTOM_SYMBOL_ORIGINSYMBOL_BASIS);
   string origin_category = SymbolInfoString(CUSTOM_SYMBOL_ORIGINSYMBOL_CATEGORY);
   string origin_formula  = SymbolInfoString(CUSTOM_SYMBOL_ORIGINSYMBOL_FORMULA);
   
   PrintFormat("The '%s' symbol from which the custom '%s' was created:\n"+
               "  Basis: %s\n  Category: %s\n  Formula: %s",
               CUSTOM_SYMBOL_ORIGINCUSTOM_SYMBOL_NAME,
               origin_basisorigin_categoryorigin_formula);
   
//--- özel sembol özellikleri için diğer değerleri ayarla
   ResetLastError();
   bool res=true;
   res &=CustomSymbolSetString(CUSTOM_SYMBOL_NAMESYMBOL_BASISCUSTOM_SYMBOL_ORIGIN);
   res &=CustomSymbolSetString(CUSTOM_SYMBOL_NAMESYMBOL_CATEGORY"FX");
   res &=CustomSymbolSetString(CUSTOM_SYMBOL_NAMESYMBOL_FORMULA, ("1.0 / "+CUSTOM_SYMBOL_ORIGIN));
 
//--- özelliklerden herhangi biri ayarlanırken bir hata oluştuysa, günlükte ilgili bir mesaj görüntüle
   if(!res)
      Print("CustomSymbolSetString() 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ı)
   string custom_basis    = SymbolInfoString(CUSTOM_SYMBOL_NAMESYMBOL_BASIS);
   string custom_category = SymbolInfoString(CUSTOM_SYMBOL_NAMESYMBOL_CATEGORY);
   string custom_formula  = SymbolInfoString(CUSTOM_SYMBOL_NAMESYMBOL_FORMULA);
   
   PrintFormat("Custom symbol '%s' based on '%s':\n"+
               "  Basis: %s\n  Category: %s\n  Formula: %s",
               CUSTOM_SYMBOL_ORIGINCUSTOM_SYMBOL_NAME,
               custom_basiscustom_categorycustom_formula);
   
//--- 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:
     Basis
     Category
     Formula
   Custom symbol 'EURUSDbased on 'EURUSD.C':
     BasisEURUSD
     CategoryFX
     Formula1.0 / EURUSD
   */
  }
//+------------------------------------------------------------------+
//| Ö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

SymbolInfoString