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.
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.
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).
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.