MT4 manager gRPC client Java example
Table of Contents
Install before run an example
- JAVA JDK open JDK 21.0.1 is recommended
- MAVEN plugin
Do maven clean installation with extended debug info.
It generates libraries with stubs we need for method invocation.
mvn clean install -X
Before:
After. Clases were generated:
If you need generated classes separately from the example project, you can download it from repository
Input your credential information
Now we are ready to run.
The example:
import io.grpc.ManagedChannelBuilder;
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
String host = "mng4grpc.mtapi.io";
int port = 443;
ManagedChannelBuilder<?> channelBuilder = ManagedChannelBuilder.forAddress(host, port);
MT4mngGrpcApiClient client = new MT4mngGrpcApiClient(channelBuilder.build());
client.Connect();
}
}
import io.grpc.Channel;
import io.grpc.StatusRuntimeException;
import mng4grpc.MainControllerGrpc;
import mng4grpc.Mt4Mng;
import java.util.List;
public class MT4mngGrpcApiClient {
private final MainControllerGrpc.MainControllerBlockingStub mainControllerBlockingStub;
private String token;
public void setToken(String token) {
this.token = token;
}
public MT4mngGrpcApiClient(Channel channel) {
mainControllerBlockingStub = MainControllerGrpc.newBlockingStub(channel);
}
public void Connect()
{
Mt4Mng.ConnectRequest connectRequest = Mt4Mng.ConnectRequest.newBuilder()
.setServer("")
.setUser(1)
.setPassword("")
.build();
try
{
Mt4Mng.ConnectReply connectReply = mainControllerBlockingStub.connect(connectRequest);
if (connectReply.getError().getCodeValue() != 0)
{
System.out.println("Connection failed: ".concat(connectReply.getError().getMessage()));
}
System.out.println("Connection response id: ".concat(connectReply.getResult()));
setToken(connectReply.getResult());
}
catch (StatusRuntimeException e){
System.out.println("RPC failed:".concat(e.getStatus().toString()));
return;
}
try
{
Mt4Mng.AccountsReply accountsReply = mainControllerBlockingStub.accountsList(
Mt4Mng.AccountsRequest.newBuilder()
.setId(token)
.build());
if (accountsReply.getError().getCodeValue() != 0)
{
System.out.println("Connection failed: ".concat(accountsReply.getError().getMessage()));
}
List<Integer> accounts = accountsReply.getResultList();
for (Integer accountId : accounts) {
System.out.println("Account Is: ".concat(String.valueOf(accountId)));
Mt4Mng.AccountDetailsReply accountReply = mainControllerBlockingStub.accountDetails(Mt4Mng.AccountDetailsRequest.newBuilder()
.setId(token)
.setLogin(accountId)
.build());
if (accountReply.getError().getCodeValue() != 0)
{
System.out.println("Connection failed: ".concat(accountReply.getError().getMessage()));
}
System.out.println("Account City: ".concat(accountReply.getResult().getCity()));
System.out.println("Account Balance: ".concat(String.valueOf(accountReply.getResult().getBalance())));
}
}
catch (StatusRuntimeException e){
System.out.println("RPC failed:".concat(e.getStatus().toString()));
}
}
}