Example #1
0
        // 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;
        }
Example #2
0
        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;
        }