PHP code example of aleedhillon / meta-trader-client
1. Go to this page and download the library: Download aleedhillon/meta-trader-client library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
use Aleedhillon\MetaTraderClient\Facades\MetaTraderClient;
use Aleedhillon\MetaTraderClient\Lib\MTEnDealAction;
try {
// Create a new user
$user = MetaTraderClient::userCreate();
$user->Name = 'John Doe';
$user->Email = '[email protected]';
$user->Group = 'demo';
$user->Leverage = 100;
$user->MainPassword = 'password123';
$user->Phone = '+1234567890';
$newUser = MetaTraderClient::userAdd($user);
echo "Created user with login: " . $newUser->Login;
// Get user information
$userInfo = MetaTraderClient::userGet(123456);
echo "User: " . $userInfo->Name . " (" . $userInfo->Email . ")";
// Update user
$userInfo->Leverage = 200;
$updatedUser = MetaTraderClient::userUpdate($userInfo);
// Delete user
MetaTraderClient::userDelete(123456);
// Check user password (returns true or throws exception)
$isValidPassword = MetaTraderClient::userPasswordCheck(123456, 'password123');
// Change user password
MetaTraderClient::userPasswordChange(123456, 'newpassword123');
// Change user balance
MetaTraderClient::userDepositChange(
123456, // User login
1000.00, // New deposit amount
'API deposit', // Comment
MTEnDealAction::DEAL_BALANCE // Deal type
);
// Get user account information
$account = MetaTraderClient::userAccountGet(123456);
echo "Balance: " . $account->Balance . " " . $account->Currency;
// Get list of user logins
$logins = MetaTraderClient::userLogins('demo');
} catch (UserManagementException $e) {
echo "User management error: " . $e->getMessage();
} catch (MetaTraderException $e) {
echo "MT5 error: " . $e->getMessage();
}
try {
// Get order information
$order = MetaTraderClient::orderGet(987654);
echo "Order: " . $order->Symbol . " Volume: " . $order->VolumeInitial;
// Get total number of orders for user
$orderCount = MetaTraderClient::orderGetTotal(123456);
// Get orders by page
$orders = MetaTraderClient::orderGetPage(123456, 0, 10);
foreach ($orders as $order) {
echo "Order " . $order->Order . ": " . $order->Symbol;
}
// Get position
$position = MetaTraderClient::positionGet(123456, 'EURUSD');
echo "Position: " . $position->Symbol . " Profit: " . $position->Profit;
// Get all positions count
$positionCount = MetaTraderClient::positionGetTotal(123456);
// Get positions by page
$positions = MetaTraderClient::positionGetPage(123456, 0, 10);
// Get deal information
$deal = MetaTraderClient::dealGet(789012);
echo "Deal: " . $deal->Symbol . " Volume: " . $deal->Volume;
// Get deals count
$dealCount = MetaTraderClient::dealGetTotal(123456, strtotime('-1 week'), time());
// Get deals by page
$deals = MetaTraderClient::dealGetPage(123456, strtotime('-1 week'), time(), 0, 10);
// Get history order
$historyOrder = MetaTraderClient::historyGet(456789);
// Get history count
$historyCount = MetaTraderClient::historyGetTotal(123456, strtotime('-1 month'), time());
// Get history by page
$historyOrders = MetaTraderClient::historyGetPage(123456, strtotime('-1 month'), time(), 0, 10);
// Execute balance operation
$ticket = MetaTraderClient::tradeBalance(
123456, // User login
MTEnDealAction::DEAL_BALANCE, // Operation type
1000.00, // Amount
'Deposit via API', // Comment
true // Margin check
);
if ($ticket) {
echo "Balance operation ticket: " . $ticket;
}
} catch (TradingException $e) {
echo "Trading error: " . $e->getMessage();
} catch (MetaTraderException $e) {
echo "MT5 error: " . $e->getMessage();
}
try {
// Get symbol information
$symbol = MetaTraderClient::symbolGet('EURUSD');
echo "Symbol: " . $symbol->Symbol . " Digits: " . $symbol->Digits;
// Get symbol count
$symbolCount = MetaTraderClient::symbolTotal();
// Get next symbol by position
$nextSymbol = MetaTraderClient::symbolNext(0);
// Get symbol by group
$groupSymbol = MetaTraderClient::symbolGetGroup('EURUSD', 'demo');
// Get last ticks
$ticks = MetaTraderClient::tickLast('EURUSD');
foreach ($ticks as $tick) {
echo "Tick: " . $tick->Bid . "/" . $tick->Ask;
}
// Get last ticks by group
$groupTicks = MetaTraderClient::tickLastGroup('EURUSD', 'demo');
// Get tick statistics
$tickStats = MetaTraderClient::tickStat('EURUSD');
} catch (MetaTraderException $e) {
echo "Market data error: " . $e->getMessage();
}
try {
// Get total groups count
$groupCount = MetaTraderClient::groupTotal();
// Get next group
$group = MetaTraderClient::groupNext(0);
echo "Group: " . $group->Group;
// Create a new group
$newGroup = MetaTraderClient::groupCreate();
$newGroup->Group = 'new_demo';
$newGroup->Company = 'Demo Company';
$newGroup->Currency = 'USD';
// Set other group properties...
$createdGroup = MetaTraderClient::groupAdd($newGroup);
// Get group information
$groupInfo = MetaTraderClient::groupGet('demo');
echo "Group: " . $groupInfo->Group . " Currency: " . $groupInfo->Currency;
// Delete group
MetaTraderClient::groupDelete('old_demo');
} catch (ConfigurationException $e) {
echo "Configuration error: " . $e->getMessage();
} catch (MetaTraderException $e) {
echo "MT5 error: " . $e->getMessage();
}
try {
// Create a new symbol
$symbol = MetaTraderClient::symbolCreate();
$symbol->Symbol = 'CUSTOM';
$symbol->Description = 'Custom Symbol';
$symbol->CurrencyBase = 'USD';
$symbol->CurrencyProfit = 'USD';
$symbol->Digits = 5;
// Set other symbol properties...
$newSymbol = MetaTraderClient::symbolAdd($symbol);
echo "Created symbol: " . $newSymbol->Symbol;
// Get symbol information
$symbolInfo = MetaTraderClient::symbolGet('EURUSD');
// Delete symbol
MetaTraderClient::symbolDelete('OBSOLETE');
} catch (ConfigurationException $e) {
echo "Symbol configuration error: " . $e->getMessage();
} catch (MetaTraderException $e) {
echo "MT5 error: " . $e->getMessage();
}
try {
// Send email to user
MetaTraderClient::mailSend(
'123456', // User login
'Important Notification', // Subject
'<h1>Important Message</h1><p>This is an important message.</p>' // HTML body
);
// Send news
MetaTraderClient::newsSend(
'Market Update', // Subject
'General', // Category
1033, // Language (English)
1, // Priority
'<h2>Market Update</h2><p>Important market information.</p>' // HTML body
);
} catch (MetaTraderException $e) {
echo "Communication error: " . $e->getMessage();
}
try {
// Get server time
$time = MetaTraderClient::timeGet();
echo "Server time: " . (is_string($time->TimeServer) ? $time->TimeServer : date('Y-m-d H:i:s', $time->TimeServer));
// Get server time as Unix timestamp
$timestamp = MetaTraderClient::timeServer();
// Get common server information
$common = MetaTraderClient::commonGet();
echo "Server: " . $common->Name . " Build: " . $common->Build;
// Ping server
MetaTraderClient::ping();
// Restart server (
$historyCount = MetaTraderClient::historyGetTotal(
123456, // User login
strtotime('-1 month'), // From date
time() // To date
);
$historyOrders = MetaTraderClient::historyGetPage(
123456, // User login
strtotime('-1 month'), // From date
time(), // To date
0, // Page
10 // Count
);
use Aleedhillon\MetaTraderClient\Lib\MTEnDealAction;
$ticket = MetaTraderClient::tradeBalance(
123456, // User login
MTEnDealAction::DEAL_BALANCE, // Operation type
1000.00, // Amount
'Deposit via API', // Comment
true // Margin check
);
if ($ticket) {
echo "Balance operation ticket: " . $ticket;
}
MetaTraderClient::mailSend(
'123456', // User login
'Important Notification', // Subject
'<h1>Important Message</h1><p>This is an HTML message.</p>' // HTML body
);
MetaTraderClient::newsSend(
'Market Update', // Subject
'General', // Category
1033, // Language (English)
1, // Priority
'<h2>Market Update</h2><p>Important market information.</p>' // HTML body
);