CustomSymbolSetInteger

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

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

property_value

[in]  Özellik değerini taşıyan 'long' 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_CHART_MODE – barın oluşumu için fiyat türü (Teklif (Bid) veya Son (Last) fiyat)
  • SYMBOL_DIGITS – fiyatı görüntülemek için ondalık noktadan sonraki basamak sayısı

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:

//+------------------------------------------------------------------+
//|                                       CustomSymbolSetInteger.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
//--- (işlem modu, durma emri yerleştirme seviyesi ve işlem donma mesafesi)
   ENUM_SYMBOL_TRADE_EXECUTION origin_exe_mode = (ENUM_SYMBOL_TRADE_EXECUTION)SymbolInfoInteger(CUSTOM_SYMBOL_ORIGINSYMBOL_TRADE_EXEMODE);
   int origin_stops_level = (int)SymbolInfoInteger(CUSTOM_SYMBOL_ORIGINSYMBOL_TRADE_STOPS_LEVEL);
   int origin_freeze_level= (int)SymbolInfoInteger(CUSTOM_SYMBOL_ORIGINSYMBOL_TRADE_FREEZE_LEVEL);
   
   PrintFormat("The '%s' symbol from which the custom '%s' was created:\n"+
               "  Deal execution mode: %s\n  Stops Level: %d\n  Freeze Level: %d",
               CUSTOM_SYMBOL_ORIGINCUSTOM_SYMBOL_NAME,
               StringSubstr(EnumToString(origin_exe_mode), 23), origin_stops_levelorigin_freeze_level);
   
//--- özel sembol özellikleri için diğer değerleri ayarla
   ResetLastError();
   bool res=true;
   res &=CustomSymbolSetInteger(CUSTOM_SYMBOL_NAMESYMBOL_TRADE_EXEMODESYMBOL_TRADE_EXECUTION_MARKET);
   res &=CustomSymbolSetInteger(CUSTOM_SYMBOL_NAMESYMBOL_TRADE_STOPS_LEVEL10);
   res &=CustomSymbolSetInteger(CUSTOM_SYMBOL_NAMESYMBOL_TRADE_FREEZE_LEVEL3);
 
//--- özelliklerden herhangi biri ayarlanırken bir hata oluştuysa, günlükte ilgili bir mesaj görüntüle
   if(!res)
      Print("CustomSymbolSetInteger() failed. Error "GetLastError());
   
//--- değiştirilen özel sembol özelliklerini al ve günlüğe yazdır
//--- (işlem modu, durma emri yerleştirme seviyesi ve işlem donma mesafesi)
   ENUM_SYMBOL_TRADE_EXECUTION custom_exe_mode = (ENUM_SYMBOL_TRADE_EXECUTION)SymbolInfoInteger(CUSTOM_SYMBOL_NAMESYMBOL_TRADE_EXEMODE);
   int custom_stops_level = (int)SymbolInfoInteger(CUSTOM_SYMBOL_NAMESYMBOL_TRADE_STOPS_LEVEL);
   int custom_freeze_level= (int)SymbolInfoInteger(CUSTOM_SYMBOL_NAMESYMBOL_TRADE_FREEZE_LEVEL);
   
   PrintFormat("Custom symbol '%s' based on '%s':\n"+
               "  Deal execution mode: %s\n  Stops Level: %d\n  Freeze Level: %d",
               CUSTOM_SYMBOL_NAMECUSTOM_SYMBOL_ORIGIN
               StringSubstr(EnumToString(custom_exe_mode), 23), custom_stops_levelcustom_freeze_level);
   
//--- 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:
     Deal execution modeINSTANT
     Stops Level0
     Freeze Level0
   Custom symbol 'EURUSD.Cbased on 'EURUSD':
     Deal execution modeMARKET
     Stops Level10
     Freeze Level3
   */
  }
//+------------------------------------------------------------------+
//| Ö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

SymbolInfoInteger