SymbolInfoMarginRate

Retourne les taux de marge en fonction du type et de la direction de l'ordre.

bool  SymbolInfoMarginRate(
   string             name,                     // nom du symbole
   ENUM_ORDER_TYPE    order_type,               // type de l'ordre
   double&            initial_margin_rate,      // taux de marge initial
   double&            maintenance_margin_rate   // taux de marge de maintien
   );

Paramètres

name

[in]  Nom du symbole.

order_type

[in]  Type de l'ordre.

initial_margin_rate

[in] Une variable de type double pour obtenir le taux de marge initial. La marge initiale est un dépôt de garantie pour 1 transaction de lot dans la direction appropriée. En multipliant le taux par la marge initiale, nous obtenons le montant des fonds à réserver sur le compte lors du passage d'un ordre du type spécifié.

maintenance_margin_rate

[out] Une variable de type double pour obtenir le taux de marge de maintien. La marge de maintien est le montant minimum pour maintenir une position de 1 lot ouverte dans la direction demandée. En multipliant le taux par la marge de maintien, nous obtenons le montant des fonds à réserver sur le compte après l'activation d'un ordre du type spécifié.

Valeur de Retour

Retourne true si la demande de propriétés réussit, sinon false

Exemple :

#define SYMBOL_NAME Symbol()
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- déclare les variables pour récupérer les taux
   double initial_margin_rate = 0;     // taux de marge initiale
   double maintenance_margin_rate = 0// taux de marge de maintien
   
//--- récupère et envoie dans le journal les taux du symbole SYMBOL_NAME pour un ordre d'achat au marché
   SymbolInfoMarginRatePrint(SYMBOL_NAMEORDER_TYPE_BUYinitial_margin_ratemaintenance_margin_rate);
   
//--- récupère et envoie dans le journal les taux pour le symbole SYMBOL_NAME pour un ordre de vente au marché
   SymbolInfoMarginRatePrint(SYMBOL_NAMEORDER_TYPE_SELLinitial_margin_ratemaintenance_margin_rate);
 
   /*
   résultat :
   Initial margin rate for symbol AFKS for the Buy market order0.225600
   Maintenance margin rate for symbol AFKS for the Buy market order0.112800
   Initial margin rate for symbol AFKS for the Sell market order0.254400
   Maintenance margin rate for symbol AFKS for the Sell market order0.127200   
   */
  }
//+------------------------------------------------------------------+
//| Envoie les taux de marge dans le journal                        |
//+------------------------------------------------------------------+
void SymbolInfoMarginRatePrint(const string symbolconst ENUM_ORDER_TYPE order_typedouble &initial_margin_ratedouble &maintenance_margin_rate)
  {
//--- récupère les taux de 'symbol' pour l'ordre au marché de type order_type
   ResetLastError();
   if(!SymbolInfoMarginRate(symbolorder_typeinitial_margin_ratemaintenance_margin_rate))
     {
      Print("SymbolInfoMarginRate() failed. Error "GetLastError());
      return;
     }
//--- affiche les valeurs des taux obtenus
   string type=(order_type==ORDER_TYPE_BUY ? "Buy" : order_type==ORDER_TYPE_SELL ? "Sell" : "Unknown");
   PrintFormat("Initial margin rate for symbol %s for the %s market order: %f\n"+
               "Maintenance margin rate for symbol %s for the %s market order: %f",
               SYMBOL_NAMEtypeinitial_margin_rate,
               SYMBOL_NAMEtypemaintenance_margin_rate);
  }