Predefiniowane zmienne i tablice:   Bid

Predefiniowana zmienna double Bid określa ostatnią znaną cenę sprzedaży instrumentu finansowego na tym wykresie notowań, gdzie program MQL4 został uruchomiony. W celu odświeżenia notowań, należy zastosować funkcję RefreshRates() . Więcej informacji można znaleźć w specyfikacji MQL4.


Przykład 1

Skrypt do wyświetlenia bieżącej ceny rynkowej sprzedaży Bid. Jeśli ten skrypt uruchomić wtedy gdy rynek Forex jest zamknięty, np. w sobotę lub niedzielę, skrypt pokaże ostatnią cenę Bid z piątku.

#property strict
void OnStart()
  {
//--- odświeżyć notowania
   RefreshRates();
//---
   Print("Dla ",_Symbol," bieżąca cena sprzedaży Bid = ", Bid);
  }

Rys. 1. Przykład stosowania predefiniowanej zmiennej Bid.


Przykład 2

Skrypt do zamykania wszystkich otwartych pozycji kupna.

#property strict
void OnStart()
  {
//--- pętla wyboru wszystkich pozycji/zleceń do dalszego przetwarzania
   for(int i = OrdersTotal()-1; i >= 0; i--)
      //--- wybrać pozycję/zlecenie z indeksem "i"
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
         //--- wybrać tylko otwartą pozycję na kupno
         if(OrderType() == OP_BUY)
           {
            //--- odświeżyć notowania
            RefreshRates();
            //--- zamknąć pozycję
            if(OrderClose(OrderTicket(), OrderLots(), Bid, 50) == false)
               Print("Nie udało się zamknąć otwartą pozycję na kupno ",OrderTicket(),". Błąd nr = ",GetLastError());
           }
  }


Jeśli trzeba znaleźć bieżącą cenę sprzedaży dla innego instrumentu finansowego, należy zastosować funkcję MarketInfo() z identyfikatorem MODE_BID (przykład 3).


Przykład 3

Skrypt do wyświetlenia bieżących cen Bid dla USDJPY, USDCHF i GOLD.

#property strict
void OnStart()
  {
//--- znaleźć dokładność notowania dla poszczególnych symboli
   int Precision_USDJPY = (int)MarketInfo("USDJPY", MODE_DIGITS);
   int Precision_USDCHF = (int)MarketInfo("USDCHF", MODE_DIGITS);
   int Precision_GOLD   = (int)MarketInfo("GOLD",   MODE_DIGITS);

//--- znaleźć ceny Bid i przekonwertować je do wartości tekstowych
   string CurrentBid_USDJPY = DoubleToString(MarketInfo("USDJPY", MODE_BID), Precision_USDJPY);
   string CurrentBid_USDCHF = DoubleToString(MarketInfo("USDCHF", MODE_BID), Precision_USDCHF);
   string CurrentBid_GOLD   = DoubleToString(MarketInfo("GOLD",   MODE_BID), Precision_GOLD);

//--- wyświetlić wyniki
   Print("Dla USDJPY bieżąca cena Bid = ", CurrentBid_USDJPY);
   Print("Dla USDCHF bieżąca cena Bid = ", CurrentBid_USDCHF);
   Print("Dla GOLD bieżąca cena Bid = ",   CurrentBid_GOLD);
  }

Rys. 2. Przykłady stosowania funkcji MarketInfo() z identyfikatorem MODE_BID.