Update Margin Requirements
This command is useful in case the instrument was not subscribed at the time of login but was subscribed later.
It is used to get margin requirements for an instrument after subscribing to it.
To get updated margin requirements for instruments, please fill the following value in the value map:
Parameter name |
Datatype |
Description |
Command |
string |
The command. Must be |
Create a request and send it to the server.
Important: in order to get updated margin requirements you have to process a response in processMarginRequirementsResponse
.
Example: Update margin requirements [hide]
static void Main(string[] args) { //... Console.WriteLine("Please unsubscribe from the instrument {0}", sInstrument); Console.WriteLine("Press \"Enter\" when ready"); Console.ReadLine(); statusListener.login(sUserID, sPassword, sURL, sConnection); responseListener.GetOfferID(); if (!String.IsNullOrEmpty(responseListener.OfferID)) { responseListener.SendRequestSubscribeToInstrument(); responseListener.SendRequestUpdateMargin(); } } public void SendRequestSubscribeToInstrument() { O2GRequestFactory requestFactory = session.getRequestFactory(); if (requestFactory == null) return; O2GValueMap valueMap = requestFactory.createValueMap(); valueMap.setString(O2GRequestParamsEnum.Command, Constants.Commands.SetSubscriptionStatus); valueMap.setString(O2GRequestParamsEnum.SubscriptionStatus, "T"); valueMap.setString(O2GRequestParamsEnum.OfferID, sOfferID); O2GRequest request = requestFactory.createOrderRequest(valueMap); if (request != null) { sSetSubscriptionRequestID = request.RequestID; session.sendRequest(request); lock (mEvent) Monitor.Wait(mEvent, 60000); } } public void SendRequestUpdateMargin() { O2GResponseReaderFactory responseReaderFactory = session.getResponseReaderFactory(); if (responseReaderFactory == null) return; O2GLoginRules loginRules = session.getLoginRules(); O2GResponse accountsResponse = loginRules.getTableRefreshResponse(O2GTableType.Accounts); O2GAccountsTableResponseReader accounts = responseReaderFactory.createAccountsTableReader(accountsResponse); O2GAccountRow accountRow = accounts.getRow(0); double dMmr = 0, dEmr = 0, dLmr = 0; O2GTradingSettingsProvider tradingSetting = loginRules.getTradingSettingsProvider(); tradingSetting.getMargins(sInstrument, accountRow, ref dMmr, ref dEmr, ref dLmr); Console.WriteLine("Margin requirements after subscription: mmr={0}, emr={1}, lmr={2}", dMmr, dEmr, dLmr); O2GValueMap valueMap = session.getRequestFactory().createValueMap(); valueMap.setString(O2GRequestParamsEnum.Command, Constants.Commands.UpdateMarginRequirements); O2GRequestFactory requestFactory = session.getRequestFactory(); if (requestFactory == null) return; O2GRequest request = requestFactory.createOrderRequest(valueMap); if (request != null) { sUpdateMarginReqRequestID = request.RequestID; session.sendRequest(request); lock (mEvent) Monitor.Wait(mEvent, 60000); } } public void onRequestCompleted(string requestId, O2GResponse response) { //... if (String.Equals(requestId, sSetSubscriptionRequestID)) { Console.WriteLine("SetSubscriptionStatus for {0}; status \"T\" (enabled) was successful", sInstrument); lock (mEvent) Monitor.PulseAll(mEvent); } else if (String.Equals(requestId, sUpdateMarginReqRequestID)) { O2GResponseReaderFactory responseFactory = Program.Session.getResponseReaderFactory(); if (responseFactory != null) { responseFactory.processMarginRequirementsResponse(response); O2GLoginRules loginRules = session.getLoginRules(); O2GResponse accountsResponse = loginRules.getTableRefreshResponse(O2GTableType.Accounts); O2GAccountsTableResponseReader accounts = responseFactory.createAccountsTableReader(accountsResponse); O2GAccountRow accountRow = accounts.getRow(0); double dMmr = 0, dEmr = 0, dLmr = 0; O2GTradingSettingsProvider tradingSetting = loginRules.getTradingSettingsProvider(); tradingSetting.getMargins(sInstrument, accountRow, ref dMmr, ref dEmr, ref dLmr); Console.WriteLine("Margin requirements after update: mmr={0}, emr={1}, lmr={2}", dMmr, dEmr, dLmr); lock (mEvent) Monitor.PulseAll(mEvent); } } }