public ProtoOAOrder CreateOrder(long orderId, long accountId, ProtoOAOrderType orderType,
     ProtoTradeSide tradeSide, string symbolName, long requestedVolume, long executedVolume, bool closingOrder,
     string channel = null, string comment=null)
 {
     var _obj = new ProtoOAOrder();
     _obj.orderId = orderId;
     _obj.accountId = accountId;
     _obj.orderType = orderType;
     _obj.tradeSide = tradeSide;
     _obj.symbolName = symbolName;
     _obj.requestedVolume = requestedVolume;
     _obj.executedVolume = executedVolume;
     _obj.closingOrder = closingOrder;
     if (channel != null)
         _obj.channel = channel;
     if (comment != null)
         _obj.comment = comment;
     return _obj;
 }
        static public string OpenApiOrderTypeToString(ProtoOAOrderType orderType)
        {
            switch (orderType)
            {
            case ProtoOAOrderType.Limit:
                return("LIMIT");

            case ProtoOAOrderType.Market:
                return("MARKET");

            case ProtoOAOrderType.MarketRange:
                return("MARKET RANGE");

            case ProtoOAOrderType.Stop:
                return("STOP");

            default:
                return("unknown");
            }
        }
        static public string OpenApiOrderTypeToString(ProtoOAOrderType orderType)
        {
            switch (orderType)
            {
            case ProtoOAOrderType.LIMIT:
                return("LIMIT");

            case ProtoOAOrderType.MARKET:
                return("MARKET");

            case ProtoOAOrderType.MARKET_RANGE:
                return("MARKET RANGE");

            case ProtoOAOrderType.STOP:
                return("STOP");

            default:
                return("unknown");
            }
        }
Exemple #4
0
        //public ProtoOASpotSubscription GetSpotSubscription(byte[] obj = null)
        //{
        //    return ProtoOASpotSubscription.CreateBuilder().MergeFrom(obj).Build();
        //}
        #endregion

        #region Creating new Proto Model objects with parameters specified
        public ProtoOAOrder.Builder CreateOrderBuilder(long orderId, long accountId, ProtoOAOrderType orderType, ProtoOATradeSide tradeSide, int symbolId, long requestedVolume, long executedVolume, bool closingOrder,
                                                       string channel = null, string comment = null)
        {
            var _obj          = ProtoOAOrder.CreateBuilder();
            var _objTradeData = ProtoOATradeData.CreateBuilder();

            _objTradeData.SetTradeSide(tradeSide);
            _objTradeData.SetSymbolId(symbolId);
            _objTradeData.SetVolume(requestedVolume);
            _obj.SetOrderId(orderId);
            //   _obj.SetAccountId(accountId);
            _obj.SetOrderType(orderType);
            _obj.SetTradeData(_objTradeData);
            _obj.SetExecutedVolume(executedVolume);
            _obj.SetClosingOrder(closingOrder);
            //if (channel != null)
            //    _obj.SetChannel(channel);
            //if (comment != null)
            //    _obj.SetComment(comment);
            return(_obj);
        }
        public ProtoOAOrder CreateOrder(long orderId, long accountId, ProtoOAOrderType orderType,
                                        ProtoTradeSide tradeSide, string symbolName, long requestedVolume, long executedVolume, bool closingOrder,
                                        string channel = null, string comment = null)
        {
            var _obj = new ProtoOAOrder();

            _obj.orderId         = orderId;
            _obj.accountId       = accountId;
            _obj.orderType       = orderType;
            _obj.tradeSide       = tradeSide;
            _obj.symbolName      = symbolName;
            _obj.requestedVolume = requestedVolume;
            _obj.executedVolume  = executedVolume;
            _obj.closingOrder    = closingOrder;
            if (channel != null)
            {
                _obj.channel = channel;
            }
            if (comment != null)
            {
                _obj.comment = comment;
            }
            return(_obj);
        }
        public static ProtoMessage New_Order_Req(long ctidTraderAccountId,
                                                 long symbolId,
                                                 ProtoOAOrderType orderType,
                                                 ProtoOATradeSide tradeSide,
                                                 long volume,
                                                 double limitPrice = 0,
                                                 double stopPrice  = 0,
                                                 ProtoOATimeInForce timeInForce = ProtoOATimeInForce.GoodTillCancel,
                                                 long expirationTimestamp       = 0,
                                                 double stopLoss          = 0,
                                                 double takeProfit        = 0,
                                                 string comment           = "",
                                                 double baseSlippagePrice = 0,
                                                 int slippageInPoints     = 0,
                                                 string label             = "",
                                                 long positionId          = 0,
                                                 string clientOrderId     = "",
                                                 long relativeStopLoss    = 0,
                                                 long relativeTakeProfit  = 0,
                                                 bool guaranteedStopLoss  = false,
                                                 bool trailingStopLoss    = false,
                                                 ProtoOAOrderTriggerMethod stopTriggerMethod = ProtoOAOrderTriggerMethod.Trade)
        {
            ProtoOANewOrderReq message = new ProtoOANewOrderReq
            {
                payloadType         = ProtoOAPayloadType.ProtoOaNewOrderReq,
                ctidTraderAccountId = ctidTraderAccountId,
                symbolId            = symbolId,
                orderType           = orderType,
                tradeSide           = tradeSide,
                Volume = volume
            };

            if (limitPrice > 0)
            {
                message.limitPrice = limitPrice;
            }
            if (stopPrice > 0)
            {
                message.stopPrice = stopPrice;
            }
            if (timeInForce > 0)
            {
                message.timeInForce = timeInForce;
            }
            if (expirationTimestamp > 0)
            {
                message.expirationTimestamp = expirationTimestamp;
            }
            if (stopLoss > 0)
            {
                message.stopLoss = stopLoss;
            }
            if (takeProfit > 0)
            {
                message.takeProfit = takeProfit;
            }
            if (comment != "")
            {
                message.Comment = comment;
            }
            if (baseSlippagePrice > 0)
            {
                message.baseSlippagePrice = baseSlippagePrice;
            }
            if (slippageInPoints > 0)
            {
                message.slippageInPoints = slippageInPoints;
            }
            if (label != "")
            {
                message.Label = label;
            }
            if (positionId > 0)
            {
                message.positionId = positionId;
            }
            if (clientOrderId != "")
            {
                message.clientOrderId = clientOrderId;
            }
            if (relativeStopLoss != 0)
            {
                message.relativeStopLoss = relativeStopLoss;
            }
            if (relativeTakeProfit != 0)
            {
                message.relativeTakeProfit = relativeTakeProfit;
            }
            if (guaranteedStopLoss)
            {
                message.guaranteedStopLoss = true;
            }
            if (trailingStopLoss)
            {
                message.trailingStopLoss = true;
            }
            if (stopTriggerMethod != ProtoOAOrderTriggerMethod.Trade)
            {
                message.stopTriggerMethod = stopTriggerMethod;
            }

            Log.Info("ProtoOANewOrderReq:: " +
                     $"ctidTraderAccountId: {ctidTraderAccountId}; " +
                     $"symbolId: {symbolId}; " +
                     $"orderType: {orderType}; " +
                     $"tradeSide: {tradeSide}; " +
                     $"volume: {volume}; " +
                     $"limitPrice: {limitPrice}; " +
                     $"stopPrice: {stopPrice}; " +
                     $"timeInForce: {timeInForce}; " +
                     $"expirationTimestamp: {expirationTimestamp} ({EpochToString(expirationTimestamp)}; " +
                     $"stopLoss: {stopLoss}; " +
                     $"takeProfit: {takeProfit}; " +
                     $"comment: {comment}; " +
                     $"baseSlippagePrice: {baseSlippagePrice}; " +
                     $"slippageInPoints: {slippageInPoints}; " +
                     $"label: {label}; " +
                     $"positionId: {positionId}; " +
                     $"clientOrderId: {clientOrderId}; " +
                     $"relativeStopLoss: {relativeStopLoss}; " +
                     $"relativeTakeProfit: {relativeTakeProfit}; " +
                     $"guaranteedStopLoss: {guaranteedStopLoss}; " +
                     $"trailingStopLoss: {trailingStopLoss}; " +
                     $"stopTriggerMethod: {stopTriggerMethod}");

            InnerMemoryStream.SetLength(0);
            Serializer.Serialize(InnerMemoryStream, message);

            return(Encode((uint)message.payloadType, InnerMemoryStream.ToArray()));
        }
 static public string OpenApiOrderTypeToString(ProtoOAOrderType orderType)
 {
     switch (orderType)
     {
         case ProtoOAOrderType.OA_LIMIT:
             return "LIMIT";
         case ProtoOAOrderType.OA_MARKET:
             return "MARKET";
         case ProtoOAOrderType.OA_MARKET_RANGE:
             return "MARKET RANGE";
         case ProtoOAOrderType.OA_PROTECTION:
             return "PROTECTION";
         case ProtoOAOrderType.OA_STOP:
             return "STOP";
         default:
             return "unknown";
     }
 }