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_NAME, ORDER_TYPE_BUY, initial_margin_rate, maintenance_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_NAME, ORDER_TYPE_SELL, initial_margin_rate, maintenance_margin_rate);
 
   /*
   résultat :
   Initial margin rate for symbol AFKS for the Buy market order: 0.225600
   Maintenance margin rate for symbol AFKS for the Buy market order: 0.112800
   Initial margin rate for symbol AFKS for the Sell market order: 0.254400
   Maintenance margin rate for symbol AFKS for the Sell market order: 0.127200   
   */
  }
//+------------------------------------------------------------------+
//| Envoie les taux de marge dans le journal                        |
//+------------------------------------------------------------------+
void SymbolInfoMarginRatePrint(const string symbol, const ENUM_ORDER_TYPE order_type, double &initial_margin_rate, double &maintenance_margin_rate)
  {
//--- récupère les taux de 'symbol' pour l'ordre au marché de type order_type
   ResetLastError();
   if(!SymbolInfoMarginRate(symbol, order_type, initial_margin_rate, maintenance_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_NAME, type, initial_margin_rate,
               SYMBOL_NAME, type, maintenance_margin_rate);
  }