MT4 PHP via COM_DOT_NET.
This way works just for Windows hosting.
Lets start with our PHP installation, later you can do all the same with yours PHP installation.
1. Unzip php.zip to c:\
2. Run php/test1/netphp/register_x86. Its php x86 so even if you have x64 system run register_x86.
3. Run php/test1/run.cmd
If no luck let me know, we'll solve.
In sample used following account that you can open in any MT4 terminal:
user: 67611
pass: wx1yhpn
server: demo.fxgerchik.com
If you want to use your own php you just need to put in php.ini following lines:
[COM_DOT_NET]
extension=php_com_dotnet.dll
<?php include_once('netphp/src/Core/ComProxy.php'); include_once('netphp/src/Core/NetProxy.php'); include_once('netphp/src/Core/MagicWrapper.php'); include_once('netphp/src/Core/NetPhpRuntime.php'); try { $rt = new \NetPhp\Core\NetPhpRuntime('COM', 'netutilities.NetPhpRuntime'); $rt->Initialize(); $rt->RegisterNetFramework2(); $rt->RegisterAssemblyFromFile("MT4ServerAPI.dll", "MT4ServerAPI"); $qc = $rt->TypeFromName("TradingAPI.MT4Server.QuoteClient"); $srv = $qc->LoadSrv("GerchikCo-Demo.srv"); $host = $srv->Host; $port = $srv->Port; echo $host->Val(); echo "\n"; echo $port->Val(); echo "\n"; $qc->Instantiate(); $qc->Init(67611, "wx1yhpn", $host, $port); $qc->Connect(); echo "Account balance = ".$qc->AccountBalance->Val()."\n"; $qc->Subscribe("EURUSD"); while ($qc->GetQuote("EURUSD")->Val() == null) { } $ask = $qc->GetQuote("EURUSD")->GetAsk()->Val(); echo "EURUSD Ask = ".$ask."\n"; $oc = $rt->TypeFromName("TradingAPI.MT4Server.OrderClient"); $oc->Instantiate(); $oc->Init($qc); $oc->Connect(); $op = $rt->TypeFromName("TradingAPI.MT4Server.Op"); $order = $oc->OrderSend("EURUSD", $op->Enum("Buy"), 0.1, $ask, 0, 0.0, 0.0); echo "Order opened ".$order->ToString()->Val(); } catch (Exception $e) { echo $e->getMessage(); } ?>