// returns OrderID public string trade(string mInstrument, int mAmount, string mBuySell, string mOrderType, int entryPips, int stopPips) { string orderId = null; ELSResponseListener responseListener = new ELSResponseListener(mSession, display); try { mSession.subscribeResponse(responseListener); GetAccount(mSession); if (mHasAccount) GetOfferRate(mSession, mInstrument, mBuySell, mOrderType, entryPips, stopPips); if (mHasAccount && mHasOffer) { O2GRequestFactory requestFactory = mSession.getRequestFactory(); if (requestFactory != null) { O2GValueMap valueMap = requestFactory.createValueMap(); valueMap.setString(O2GRequestParamsEnum.Command, Constants.Commands.CreateOrder); valueMap.setString(O2GRequestParamsEnum.OrderType, mOrderType); valueMap.setString(O2GRequestParamsEnum.AccountID, mAccountID); valueMap.setString(O2GRequestParamsEnum.OfferID, mOfferID); valueMap.setString(O2GRequestParamsEnum.BuySell, mBuySell); valueMap.setDouble(O2GRequestParamsEnum.Rate, mRate); valueMap.setInt(O2GRequestParamsEnum.Amount, mAmount); valueMap.setString(O2GRequestParamsEnum.CustomID, "EntryOrderWithStopLimit"); //valueMap.setDouble(O2GRequestParamsEnum.RateStop, mRateStop); valueMap.setString(O2GRequestParamsEnum.PegTypeStop, Constants.Peg.FromClose); valueMap.setDouble(O2GRequestParamsEnum.PegOffsetStop, pegStopOffset); // # of pips in notation of instrument (i.e. 0.005 for 5 pips on USD/JPY) valueMap.setInt(O2GRequestParamsEnum.TrailStepStop, trailStepStop); //valueMap.setDouble(O2GRequestParamsEnum.TrailStep, 0.1); log.debug(string.Format("Order request {0} {1}, at {2}, stop={3}", mInstrument, mBuySell, mRate, pegStopOffset)); O2GRequest request = requestFactory.createOrderRequest(valueMap); CtrlTimer.getInstance().startTimer("ELSRequest"); mSession.sendRequest(request); //Thread.Sleep(1000); //responseListener.manualEvent.WaitOne(1000, false); responseListener.manualEvent.WaitOne(); if (!responseListener.Error) { log.debug("Created an entry order with stop and limit orders for " + mInstrument + ".\n"); log.debug("OrderID=" + responseListener.OrderId); orderId = responseListener.OrderId; } else log.debug("Failed to create an entry order for " + mInstrument + "; " + responseListener.ErrorDescription + "; " + requestFactory.getLastError() ); } } } catch (Exception e) { log.debug("Exception: {0}", e.ToString()); } finally { mSession.unsubscribeResponse(responseListener); } return orderId; }
public string tradeOCO(string accountId, string offerId, double pointSize, string uniqueId, string pair, int amount, int entryPips, int stopPips, int limitPips, double bid, double ask) { getOfferRate(session, pair, entryPips, bid, ask, pointSize); responseListener = new ELSResponseListener(session, display); session.subscribeResponse(responseListener); int mAmount = amount * 1000; createOCO(accountId, pair, mAmount, entryPips, stopPips, limitPips, uniqueId, offerId); session.unsubscribeResponse(responseListener); return "";// orderId; }