Skip to main content
The SymbolApi class provides methods for retrieving information about available trading symbols (instruments) on the MT5 server.

Constructor

public function __construct(
    ClientInterface $client = null,
    Configuration $config = null,
    HeaderSelector $selector = null
)
Creates a new SymbolApi instance.
client
ClientInterface
Guzzle HTTP client instance. If not provided, a new Client will be created.
config
Configuration
SDK configuration object. If not provided, a new Configuration will be created.
selector
HeaderSelector
Header selector instance. If not provided, a new HeaderSelector will be created.

Methods

getConfig

Retrieves the current configuration object.
public function getConfig(): Configuration
Configuration
Configuration
The current SDK configuration object

symbolsGet

Retrieves a list of all available market symbols.
public function symbolsGet(): \D4T\MT5Sdk\Models\Symbol[]
Symbol[]
array
Array of Symbol objects containing information about all available trading instruments
Throws:
  • \D4T\MT5Sdk\ApiException - On non-2xx response (200 success, 400 error)
  • \InvalidArgumentException - On invalid arguments
Example:
use D4T\MT5Sdk\MT5Manager\SymbolApi;

$symbolApi = new SymbolApi();

try {
    $symbols = $symbolApi->symbolsGet();
    
    foreach ($symbols as $symbol) {
        echo "Symbol: " . $symbol->getSymbol() . "\n";
        echo "Description: " . $symbol->getDescription() . "\n";
        echo "Bid: " . $symbol->getBid() . "\n";
        echo "Ask: " . $symbol->getAsk() . "\n";
        echo "Digits: " . $symbol->getDigits() . "\n";
        echo "---\n";
    }
} catch (\D4T\MT5Sdk\ApiException $e) {
    echo "Error: " . $e->getMessage();
}

symbolsGetWithHttpInfo

Retrieves all symbols with HTTP response details.
public function symbolsGetWithHttpInfo(): array
array
array
Array containing:
  • [0]: \D4T\MT5Sdk\Models\Symbol[] - Array of symbol objects
  • [1]: int - HTTP status code
  • [2]: array - HTTP response headers
Throws:
  • \D4T\MT5Sdk\ApiException - On non-2xx response
  • \InvalidArgumentException - On invalid arguments
Example:
list($symbols, $statusCode, $headers) = $symbolApi->symbolsGetWithHttpInfo();

echo "Status: " . $statusCode . "\n";
echo "Total symbols: " . count($symbols) . "\n";

foreach ($symbols as $symbol) {
    echo $symbol->getSymbol() . ": " . $symbol->getDescription() . "\n";
}

symbolsGetAsync

Asynchronously retrieves all available symbols.
public function symbolsGetAsync(): \GuzzleHttp\Promise\PromiseInterface
PromiseInterface
\GuzzleHttp\Promise\PromiseInterface
Promise that resolves to \D4T\MT5Sdk\Models\Symbol[]
Throws:
  • \InvalidArgumentException - On invalid arguments
Example:
$promise = $symbolApi->symbolsGetAsync();

$promise->then(
    function ($symbols) {
        foreach ($symbols as $symbol) {
            echo "Symbol: " . $symbol->getSymbol() . "\n";
            echo "Spread: " . ($symbol->getAsk() - $symbol->getBid()) . "\n";
        }
    },
    function ($exception) {
        echo "Error: " . $exception->getMessage();
    }
);

symbolsGetAsyncWithHttpInfo

Asynchronously retrieves all symbols with HTTP details.
public function symbolsGetAsyncWithHttpInfo(): \GuzzleHttp\Promise\PromiseInterface
PromiseInterface
\GuzzleHttp\Promise\PromiseInterface
Promise that resolves to an array containing symbols array, HTTP status code, and response headers
Throws:
  • \InvalidArgumentException - On invalid arguments
Example:
$promise = $symbolApi->symbolsGetAsyncWithHttpInfo();

$promise->then(
    function ($response) {
        list($symbols, $statusCode, $headers) = $response;
        
        echo "Status: " . $statusCode . "\n";
        echo "Symbols retrieved: " . count($symbols) . "\n";
        
        // Filter for Forex pairs
        $forexSymbols = array_filter($symbols, function($symbol) {
            return strpos($symbol->getSymbol(), 'USD') !== false;
        });
        
        foreach ($forexSymbols as $symbol) {
            echo $symbol->getSymbol() . ": Bid=" . $symbol->getBid() . 
                 ", Ask=" . $symbol->getAsk() . "\n";
        }
    },
    function ($exception) {
        echo "Error: " . $exception->getMessage();
    }
);

Symbol Object Properties

The Symbol object returned by these methods typically contains:
  • symbol - Symbol name (e.g., “EURUSD”, “BTCUSD”)
  • description - Human-readable symbol description
  • bid - Current bid price
  • ask - Current ask price
  • digits - Number of decimal places for the symbol
  • spread - Current spread in points
  • volume_min - Minimum trade volume
  • volume_max - Maximum trade volume
  • volume_step - Volume step increment
  • contract_size - Contract size
  • trade_mode - Trading mode (disabled, long only, short only, close only, full)
  • And other symbol-specific properties
Complete Usage Example:
use D4T\MT5Sdk\MT5Manager\SymbolApi;
use D4T\MT5Sdk\Configuration;

// Configure the API
$config = new Configuration();
$config->setHost('http://your-mt5-api-host');
$config->setAccessToken('your-bearer-token');

$symbolApi = new SymbolApi(null, $config);

try {
    $symbols = $symbolApi->symbolsGet();
    
    // Find specific symbol
    $eurusd = null;
    foreach ($symbols as $symbol) {
        if ($symbol->getSymbol() === 'EURUSD') {
            $eurusd = $symbol;
            break;
        }
    }
    
    if ($eurusd) {
        echo "EURUSD Information:\n";
        echo "Bid: " . $eurusd->getBid() . "\n";
        echo "Ask: " . $eurusd->getAsk() . "\n";
        echo "Spread: " . ($eurusd->getAsk() - $eurusd->getBid()) . "\n";
        echo "Min Volume: " . $eurusd->getVolumeMin() . "\n";
        echo "Max Volume: " . $eurusd->getVolumeMax() . "\n";
        echo "Contract Size: " . $eurusd->getContractSize() . "\n";
    }
} catch (\D4T\MT5Sdk\ApiException $e) {
    echo "API Error: " . $e->getMessage() . "\n";
    echo "Error Code: " . $e->getCode() . "\n";
}

Build docs developers (and LLMs) love