Пример #1
0
        /// <summary>
        /// Generates an Oanda order request
        /// </summary>
        /// <param name="order">The LEAN order</param>
        /// <returns>The request in JSON format</returns>
        private string GenerateOrderRequest(Order order)
        {
            var instrument = SymbolMapper.GetBrokerageSymbol(order.Symbol);

            string request;

            switch (order.Type)
            {
            case OrderType.Market:
                var marketOrderRequest = new MarketOrderRequest
                {
                    Type       = MarketOrderRequest.TypeEnum.MARKET,
                    Instrument = instrument,
                    Units      = order.Quantity.ToStringInvariant()
                };
                request = JsonConvert.SerializeObject(new { order = marketOrderRequest });
                break;

            case OrderType.Limit:
                var limitOrderRequest = new LimitOrderRequest
                {
                    Type       = LimitOrderRequest.TypeEnum.LIMIT,
                    Instrument = instrument,
                    Units      = order.Quantity.ToStringInvariant(),
                    Price      = ((LimitOrder)order).LimitPrice.ToString(CultureInfo.InvariantCulture)
                };
                request = JsonConvert.SerializeObject(new { order = limitOrderRequest });
                break;

            case OrderType.StopMarket:
                var marketIfTouchedOrderRequest = new MarketIfTouchedOrderRequest
                {
                    Type       = MarketIfTouchedOrderRequest.TypeEnum.MARKETIFTOUCHED,
                    Instrument = instrument,
                    Units      = order.Quantity.ToStringInvariant(),
                    Price      = ((StopMarketOrder)order).StopPrice.ToString(CultureInfo.InvariantCulture)
                };
                request = JsonConvert.SerializeObject(new { order = marketIfTouchedOrderRequest });
                break;

            case OrderType.StopLimit:
                var stopOrderRequest = new StopOrderRequest
                {
                    Type       = StopOrderRequest.TypeEnum.STOP,
                    Instrument = instrument,
                    Units      = order.Quantity.ToStringInvariant(),
                    Price      = ((StopLimitOrder)order).StopPrice.ToString(CultureInfo.InvariantCulture),
                    PriceBound = ((StopLimitOrder)order).LimitPrice.ToString(CultureInfo.InvariantCulture)
                };
                request = JsonConvert.SerializeObject(new { order = stopOrderRequest });
                break;

            default:
                throw new NotSupportedException("The order type " + order.Type + " is not supported.");
            }

            return(request);
        }
        public void SendPendingSellCommand(int p_Volume, double p_Price, double p_Stoploss, double p_TakeProfit)
        {
            Print("Pending Sell command");
            PendingOrderRequest l_Request = null;
            if (p_Price < Symbol.Bid)
                l_Request = new StopOrderRequest(TradeType.Sell, p_Volume, p_Price);
            else
                l_Request = new LimitOrderRequest(TradeType.Sell, p_Volume, p_Price);

            l_Request.StopLoss = p_Stoploss;
            l_Request.TakeProfit = p_TakeProfit;
            Trade.Send(l_Request);
        }
Пример #3
0
        private void openTrade()
        {
            TradeType tradeType = TradeType.Buy;
            if (signal.direction == "SELL")
                tradeType = TradeType.Sell;

            var lot_size = (int)(signal.lot_size * 10);
            var request = new StopOrderRequest(tradeType, lot_size * 10000, signal.entry)
            {
                Label = "signal_id=" + signal.signal_id,
                StopLoss = signal.sl,
                TakeProfit = signal.tp,
                Expiration = signal.expiration
            };
            Trade.Send(request);

            signal.signalStored();
        }