Predefiniowane zmienne i tablice:   Ask

Predefiniowana zmienna double Ask określa ostatnią znaną cenę kupna 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 kupna Ask. Jeśli ten skrypt uruchomić wtedy, gdy rynek Forex jest zamknięty, np. w sobotę lub niedzielę, skrypt pokaże ostatnią cenę Ask z piątku.

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

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



Przykład 2

Skrypt do zamykania wszystkich otwartych pozycji sprzedaży.

#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 sprzedaż
         if(OrderType() == OP_SELL)
           {
            //--- odświeżyć notowania
            RefreshRates();
            //--- zamknąć pozycję
            if(OrderClose(OrderTicket(), OrderLots(), Ask, 50) == false)
               Print("Nie udało się zamknąć otwartą pozycję na sprzedaż ",OrderTicket(),". Błąd nr = ",GetLastError());
           }
  }


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


Przykład 3

Skrypt do wyświetlenia bieżących cen Ask 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 Ask i przekonwertować je do wartości tekstowych
   string CurrentAsk_USDJPY = DoubleToString(MarketInfo("USDJPY", MODE_ASK), Precision_USDJPY);
   string CurrentAsk_USDCHF = DoubleToString(MarketInfo("USDCHF", MODE_ASK), Precision_USDCHF);
   string CurrentAsk_GOLD   = DoubleToString(MarketInfo("GOLD",   MODE_ASK), Precision_GOLD);

//--- wyświetlić wyniki
   Print("Dla USDJPY bieżąca cena Ask = ", CurrentAsk_USDJPY);
   Print("Dla USDCHF bieżąca cena Ask = ", CurrentAsk_USDCHF);
   Print("Dla GOLD bieżąca cena Ask = ",   CurrentAsk_GOLD);
  }

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