Script for Pionex API EA Connector for MT5

25 March 2025, 11:25
Rajesh Kumar Nait
0
100
///+------------------------------------------------------------------+
//|                                                Library_Pionex.mq5 |
//|                                 Copyright 2024, Rajesh Kumar Nait |
//|                   https://www.mql5.com/en/users/rajeshnait/seller |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, Rajesh Kumar Nait"
#property link      "https://www.mql5.com/en/users/rajeshnait/seller"
#property version   "1.00"
#property description "Uncomment code as required"

#include <JAson.mqh> // search on codebase JAson.mqh and add file in your include folder

CJAVal jv(NULL, jtUNDEF);


struct PionexConfig {
   string            api_url;
   string            api_key;
   string            api_secret;
   string            api_suffix;
   string            symbol_prefix;
   bool              debug;
};


//#import "..\Libraries\Library_Pionex.ex5" //MODIFY AND CHECK
#import "..\Scripts\Market\Library_Pionex.ex5" //MODIFY AND CHECK

void Pionex_Init(PionexConfig &config);


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string Get_Balance();
string orderLimit(string symbol, string side, double size, double price);
string orderMarket(string symbol, string side, double size, double amount);
string Get_Order(string orderId);
string Get_All_Order(string symbol);
string Get_Fills_By_Order_Id(string orderId);
string Get_Fills(string symbol);
string Get_OpenOrder(string symbol);
string Cancel_Order(string symbol, string orderId);
string Cancel_All_Order(string symbol);

#import

//+------------------------------------------------------------------+
//| Config Futures                                                   |
//+------------------------------------------------------------------+

bool Pionex_debug = true; // Debug will print messages in expert tab for troubleshooting

string Pionex_Key     = ""; //Pionex Future's API key
string Pionex_Secret  = ""; //Pionex Future's API secret

string Pionex_URL     = "https://api.pionex.com"; 
string Pionex_suffix  = "/api/v1/"; // API Suffix (Do not edit)
string Pionex_SymbolPrefix = "pi_"; //Symbol Prefix for Futures

//Init API
PionexConfig config;

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnStart() {
//---

   config.api_url = Pionex_URL;
   config.api_key = Pionex_Key;
   config.api_secret = Pionex_Secret;
   config.api_suffix = Pionex_suffix;
   config.symbol_prefix = Pionex_SymbolPrefix;
   config.debug = Pionex_debug;
   Pionex_Init(config);



//Add your codes here
//+------------------------------------------------------------------+
//| Get Balance                                                      |
//+------------------------------------------------------------------+
   string s = Get_Balance();
   jv.Deserialize(s);
   Print(s);
   string a = jv["data"]["balances"][0]["coin"].ToStr();
   Print("Coin ", a);
   
//+------------------------------------------------------------------+
//| LIMIT ORDERS                                                     |
//+------------------------------------------------------------------+
////symbol , side, size, price
   //string s = orderLimit(GetSymbol(),"BUY",0.000002,81000.00);
   //jv.Deserialize(s);
   //Print(s);

//+------------------------------------------------------------------+
//| MARKET ORDERS                                                    |
//+------------------------------------------------------------------+
//// symbol , side, size, amount
   //string s = orderMarket(GetSymbol(),"BUY",0.000002,81000.00);
   //jv.Deserialize(s);
   //Print(s);

//+------------------------------------------------------------------+
//| CANCEL ORDERS                                                    |
//+------------------------------------------------------------------+
   
//   string s = Cancel_Order(GetSymbol(),"123456789");
//   jv.Deserialize(s);
//   Print(s);
//   
//   string s = Cancel_All_Order(GetSymbol());
//   jv.Deserialize(s);
//   Print(s);
//+------------------------------------------------------------------+
//|  ACCOUNT INFO                                                    |
//+------------------------------------------------------------------+


//+------------------------------------------------------------------+
//| QUERY ORDERS                                                     |
//+------------------------------------------------------------------+
//   string s = Get_Order("123456789");
//   jv.Deserialize(s);
//   Print(s);
//
//   string s = Get_All_Order(GetSymbol());
//   jv.Deserialize(s);
//   Print(s);
//
//   string s = Get_OpenOrder(GetSymbol());
//   jv.Deserialize(s);
//   Print(s);


//+------------------------------------------------------------------+
//| POSITION INFO                                                    |
//+------------------------------------------------------------------+
//// order id
//   string s = Get_Fills_By_Order_Id("123456789");
//   jv.Deserialize(s);
//   Print(s);
//
//// symbol
//   string s = Get_Fills(GetSymbol());
//   jv.Deserialize(s);
//   Print(s);


}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string GetSymbol() {
   string sym = _Symbol;
   string prefix = "pi_";  // Change as required
   int length = StringLen(prefix);  // Automatically detect prefix length

// Check if the symbol has the prefix
   if (StringSubstr(sym, 0, length) == prefix) {
      string resultString = StringSubstr(sym, length);
      Print("Result String: ", resultString);
      return resultString;
   }

   return sym;
}

//+------------------------------------------------------------------+