Informacja o koncie:   AccountFreeMarginCheck()

Funkcja double AccountFreeMarginCheck() zwraca wartość wolnych środków w walucie konta, które pozostaną na koncie gdyby otwarto pozycję po bieżącej cenie. Więcej informacji można znaleźć w specyfikacji MQL4.


Przykład 1

#property strict
void OnStart()
  {
//--- obliczyć wartość pozostałych wolnych środków, gdyby otwarto pozycję
//--- dla EURUSD, na kupno, wolumenem 0.05
   string symbol = "EURUSD";  // instrument finansowy
   int    cmd    = OP_BUY;    // typ operacji (kupno po bieżącej cenie rynkowej)
   double volume = 0.05;      // wolumen transakcji

   double result = AccountFreeMarginCheck(symbol, cmd, volume);

//--- wyświetlić wynik obliczenia
   Print("Po otwarciu pozycji OP_BUY na EURUSD lotem 0.05 na koncie zostanie = ",
         DoubleToString(result,2)," ",AccountCurrency());
  }

Rys. 1. Przykład stosowania funkcji AccountFreeMarginCheck().


Gdyby się okazało, że na koncie jest za mało środków do otwarcia nowej pozycji, wtedy zostanie wygenerowany błąd 134 (ERR_NOT_ENOUGH_MONEY) . W związku z tym, po obliczeniu AccountFreeMarginCheck(), zaleca się sprawdzenie wartości błędu (przykład 2).


Przykład 2

#property strict
void OnStart()
  {
//--- obliczyć wartość pozostałych wolnych środków, gdyby otwarto pozycję
//--- dla bieżącego instrumentu finansowego, na sprzedaż, wolumenem 100.0
   double volume     = 100.0;
   double simulation = AccountFreeMarginCheck(_Symbol, OP_SELL, volume);
   int    check      = GetLastError();       // przypisać wartość błędu zmiennej check

//--- sprawdzić błąd
   if(check != 0)
      //--- jeśli jest błąd, wyświetlić jego wartość
     {
      Print("Błąd obliczenia = ",check);     // 134 = ERR_NOT_ENOUGH_MONEY (za mało środków)
      return;
     }
//--- jeśli błędu nie ma, poinformować o wolnych środkach
   else
      Print("Po otwarciu pozycji OP_SELL na ",_Symbol,
            " wolumenem ",DoubleToString(volume,2)," na koncie zostanie = ",
            DoubleToString(simulation,2)," ",AccountCurrency());
  }

Rys. 2. Kontrola błędu po obliczeniu funkcji AccountFreeMarginCheck().