CustomSymbolSetMarginRate

Kullanıcı-tanımlı bir sembol için emir türüne ve yönüne göre ilgili teminat oranlarını ayarlar.

bool  CustomSymbolSetMarginRate(
   const string       symbol_name,              // sembol ismi
   ENUM_ORDER_TYPE    order_type,               // emir tipi
   double             initial_margin_rate,      // başlangıç teminat oranı
   double             maintenance_margin_rate   // sürdürme teminatı oranı
   );

Parametreler

symbol_name

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

order_type

[in]  Emir tipi.

initial_margin_rate

[in] Başlangıç teminat oranını taşıyan double tipli değişken. Başlangıç teminatı, belli bir yönde 1 lotluk işlem yapmak için gereken mevduat miktarıdır. İlgili oranının başlangıç teminatı ile çarpımı, belirtilen türde bir emir için hesaptaki mevduatın ne kadarının rezerve edileceğini gösterir.

maintenance_margin_rate

[in] Sürdürme teminatı oranını taşıyan double tipli değişken. Sürdürme teminatı, belli bir yöndeki 1 lotluk pozisyonu açık tutmak için gereken minimum mevduat miktarıdır. İlgili oranının sürdürme teminatı ile çarpımı, belirtilen türde bir emrin gerçekleştirilmesinden sonra hesaptaki mevduatın ne kadarının rezerve edileceğini gösterir.

Dönüş Değeri

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

 

Örnek:

//+------------------------------------------------------------------+
//|                                    CustomSymbolSetMarginRate.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ı
 
#define   INITIAL_MARGIN_RATE       1.5         // başlangıç teminatı oranı
#define   MAINTENANCE_MARGIN_RATE   1.5         // sürdürme teminatı oranı
 
//+------------------------------------------------------------------+
//| 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
//--- (Alış ve Satış emirleri için başlangıç ve sürdürme teminatı oranları)
   double initial_margin_rate_buy=0;
   double maintenance_margin_rate_buy=0;
   double initial_margin_rate_sell=0;
   double maintenance_margin_rate_sell=0;
   
   if(!GetSymbolMarginRate(CUSTOM_SYMBOL_ORIGINORDER_TYPE_BUYinitial_margin_rate_buymaintenance_margin_rate_buy))
      return;
   if(!GetSymbolMarginRate(CUSTOM_SYMBOL_ORIGINORDER_TYPE_SELL,initial_margin_rate_sell,maintenance_margin_rate_sell))
      return;
   
   PrintFormat("The '%s' symbol from which the custom '%s' was created:\n"+
               "  Buy order initial margin rate: %f\n  Buy order maintenance margin rate: %f\n"+
               "  Sell order initial margin rate: %f\n  Sell order maintenance margin rate: %f",
               CUSTOM_SYMBOL_ORIGINCUSTOM_SYMBOL_NAME,
               initial_margin_rate_buymaintenance_margin_rate_buyinitial_margin_rate_sellmaintenance_margin_rate_sell);
   
//--- özel sembol özellikleri için diğer değerleri ayarla
   ResetLastError();
   bool res=true;
   res &=CustomSymbolSetMarginRate(CUSTOM_SYMBOL_NAMEORDER_TYPE_BUYINITIAL_MARGIN_RATEMAINTENANCE_MARGIN_RATE);
   res &=CustomSymbolSetMarginRate(CUSTOM_SYMBOL_NAMEORDER_TYPE_SELL,INITIAL_MARGIN_RATEMAINTENANCE_MARGIN_RATE);
 
//--- özelliklerden herhangi biri ayarlanırken bir hata oluştuysa, günlükte ilgili bir mesaj görüntüle
   if(!res)
      Print("CustomSymbolSetMarginRate() failed. Error "GetLastError());
   
//--- değiştirilen özel sembol özelliklerini al ve günlüğe yazdır
//--- (Alış ve Satış emirleri için başlangıç ve sürdürme teminatı oranları)
   if(!GetSymbolMarginRate(CUSTOM_SYMBOL_NAMEORDER_TYPE_BUYinitial_margin_rate_buymaintenance_margin_rate_buy))
      return;
   if(!GetSymbolMarginRate(CUSTOM_SYMBOL_NAMEORDER_TYPE_SELL,initial_margin_rate_sell,maintenance_margin_rate_sell))
      return;
   
   PrintFormat("Custom symbol '%s' based on '%s':\n"+
               "  Buy order initial margin rate: %f\n  Buy order maintenance margin rate: %f\n"+
               "  Sell order initial margin rate: %f\n  Sell order maintenance margin rate: %f",
               CUSTOM_SYMBOL_NAMECUSTOM_SYMBOL_ORIGIN
               initial_margin_rate_buymaintenance_margin_rate_buyinitial_margin_rate_sellmaintenance_margin_rate_sell);
   
//--- 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:
     Buy order initial margin rate1.000000
     Buy order maintenance margin rate0.000000
     Sell order initial margin rate1.000000
     Sell order maintenance margin rate0.000000
   Custom symbol 'EURUSD.Cbased on 'EURUSD':
     Buy order initial margin rate1.500000
     Buy order maintenance margin rate1.500000
     Sell order initial margin rate1.500000
     Sell order maintenance margin rate1.500000
   */
  }
//+------------------------------------------------------------------+
//| Ö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);
  }
//+------------------------------------------------------------------+
//| Teminat oranlarını geri döndür                                   |
//+------------------------------------------------------------------+
bool GetSymbolMarginRate(const string symbolconst ENUM_ORDER_TYPE order_typedouble &initial_margin_ratedouble &maintenance_margin_rate)
  {
   ResetLastError();
   if(!SymbolInfoMarginRate(symbolorder_typeinitial_margin_ratemaintenance_margin_rate))
     {
      PrintFormat("%s: SymbolInfoMarginRate(%s, %s) failed. Error %d",__FUNCTION__symbolEnumToString(order_type), GetLastError());
      return false;
     }
   return true;
  }

 

Ayrıca bakınız

SymbolInfoMarginRate