示例#1
0
        public JsonResult SendMarketOrder([FromBody] Params param)
        {
            _tcpClient = new TcpClient(param.ApiHost, param.ApiPort);;
            _apiSocket = new SslStream(_tcpClient.GetStream(), false, new RemoteCertificateValidationCallback(ValidateServerCertificate), null);
            _apiSocket.AuthenticateAsClient(param.ApiHost);
            SendAuthorizationRequest(param);
            List <string> data = new List <string>();

            ProtoTradeSide tradeType = new ProtoTradeSide();

            if (param.TradeSide.ToUpper() == "BUY")
            {
                tradeType = ProtoTradeSide.BUY;
            }
            if (param.TradeSide.ToUpper() == "SELL")
            {
                tradeType = ProtoTradeSide.SELL;
            }
            var msgFactory = new OpenApiMessagesFactory();
            var msg        = msgFactory.CreateMarketOrderRequest(param.AccountId, param.AccessToken, param.SymbolName, tradeType, param.Volume * 100,
                                                                 param.StopLossInPips, param.TakeProfitInPips, param.Comment);

            Transmit(msg);
            byte[] _message     = Listen(_apiSocket);
            var    protoMessage = msgFactory.GetMessage(_message);

            data.Add(OpenApiMessagesPresentation.ToString(protoMessage));

            Thread.Sleep(1000);
            _message     = Listen(_apiSocket);
            protoMessage = msgFactory.GetMessage(_message);
            data.Add(OpenApiMessagesPresentation.ToString(protoMessage));
            return(Json(new { data }));
        }
        public ProtoOAPosition CreatePosition(long positionId, ProtoOAPositionStatus positionStatus, long accountId,
                                              ProtoTradeSide tradeSide, string symbolName, long volume, double entryPrice, long swap,
                                              long commission, long openTimestamp, string channel = null, string comment = null)
        {
            var _obj = new ProtoOAPosition();

            _obj.positionId     = positionId;
            _obj.positionStatus = positionStatus;
            _obj.accountId      = accountId;
            _obj.tradeSide      = tradeSide;
            _obj.symbolName     = symbolName;
            _obj.volume         = volume;
            _obj.entryPrice     = entryPrice;
            _obj.swap           = swap;
            _obj.commission     = commission;
            _obj.openTimestamp  = openTimestamp;
            if (channel != null)
            {
                _obj.channel = channel;
            }
            if (comment != null)
            {
                _obj.comment = comment;
            }
            return(_obj);
        }
        public void SendMarketOrderRequest(long testAccountId, string symbol, ProtoTradeSide tradeSide, long volume)
        {
            var _msg = outgoingMsgFactory.CreateMarketOrderRequest(testAccountId, authToken, symbol, tradeSide, volume, clientMsgId);

            if (isDebugIsOn)
            {
                Console.WriteLine("SendMarketOrderRequest() Message to be send:\n{0}", OpenApiMessagesPresentation.ToString(_msg));
            }
            writeQueue.Enqueue(Utils.Serialize(_msg));
        }
        static public string TradeSideToString(ProtoTradeSide tradeSide)
        {
            switch (tradeSide)
            {
            case ProtoTradeSide.BUY:
                return("BUY");

            case ProtoTradeSide.SELL:
                return("SELL");

            default:
                return("unknown");
            }
        }
 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 ProtoOAPosition CreatePosition(long positionId, ProtoOAPositionStatus positionStatus, long accountId,
     ProtoTradeSide tradeSide, string symbolName, long volume, double entryPrice, long swap,
     long commission, long openTimestamp, string channel = null, string comment = null)
 {
     var _obj = new ProtoOAPosition();
     _obj.positionId = positionId;
     _obj.positionStatus = positionStatus;
     _obj.accountId = accountId;
     _obj.tradeSide = tradeSide;
     _obj.symbolName = symbolName;
     _obj.volume = volume;
     _obj.entryPrice = entryPrice;
     _obj.swap = swap;
     _obj.commission = commission;
     _obj.openTimestamp = openTimestamp;
     if (channel != null)
         _obj.channel = channel;
     if (comment != null)
         _obj.comment = 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 ProtoMessage CreateStopOrderRequest(long accountId, string accessToken, string symbolName, ProtoTradeSide tradeSide, long volume, double stopPrice, string clientMsgId = null)
        {
            var _msg = ProtoOACreateOrderReq.CreateBuilder();

            _msg.SetAccountId(accountId);
            _msg.SetAccessToken(accessToken);
            _msg.SetSymbolName(symbolName);
            _msg.SetOrderType(ProtoOAOrderType.OA_STOP);
            _msg.SetTradeSide(tradeSide);
            _msg.SetVolume(volume);
            _msg.SetStopPrice(stopPrice);
            _msg.SetComment("TradingApiTest.CreateStopOrderRequest");
            return(CreateMessage((uint)_msg.PayloadType, _msg.Build().ToByteString(), clientMsgId));
        }
        public ProtoMessage CreateLimitOrderRequest(long accountId, string accessToken, string symbolName, ProtoTradeSide tradeSide, long volume, double limitPrice, string clientMsgId = null)
        {
            var _msg = ProtoOACreateOrderReq.CreateBuilder();

            _msg.SetAccountId(accountId);
            _msg.SetAccessToken(accessToken);
            _msg.SetSymbolName(symbolName);
            _msg.SetOrderType(ProtoOAOrderType.OA_LIMIT);
            _msg.SetTradeSide(tradeSide);
            _msg.SetVolume(volume);
            _msg.SetLimitPrice(limitPrice);
            _msg.SetComment("TradingApiTest.CreateLimitOrderRequest");
            DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

            _msg.SetExpirationTimestamp((long)(DateTime.UtcNow.AddHours(1) - epoch).TotalMilliseconds);
            return(CreateMessage((uint)_msg.PayloadType, _msg.Build().ToByteString(), clientMsgId));
        }
示例#10
0
        public ProtoMessage CreateMarketRangeOrderRequest(long accountId, string accessToken, string symbolName, ProtoTradeSide tradeSide, long volume, double baseSlippagePrice, long slippageInPips, string clientMsgId = null)
        {
            var _msg = ProtoOACreateOrderReq.CreateBuilder();

            _msg.SetAccountId(accountId);
            _msg.SetAccessToken(accessToken);
            _msg.SetSymbolName(symbolName);
            _msg.SetOrderType(ProtoOAOrderType.OA_MARKET_RANGE);
            _msg.SetTradeSide(tradeSide);
            _msg.SetVolume(volume);
            _msg.SetBaseSlippagePrice(baseSlippagePrice);
            _msg.SetSlippageInPips(slippageInPips);
            _msg.SetComment("TradingApiTest.CreateMarketRangeOrderRequest");
            return(CreateMessage((uint)_msg.PayloadType, _msg.Build().ToByteString(), clientMsgId));
        }
示例#11
0
        public ProtoMessage CreateMarketOrderRequest(long accountId, string accessToken, string symbolName, ProtoTradeSide tradeSide, long volume, int?stopLossInPips = null, int?takeProfitInPips = null, string comment = null, long?positionId = null, string clientMsgId = null)
        {
            var _msg = ProtoOACreateOrderReq.CreateBuilder();

            _msg.SetAccountId(accountId);
            _msg.SetAccessToken(accessToken);
            _msg.SetSymbolName(symbolName);
            _msg.SetOrderType(ProtoOAOrderType.OA_MARKET);
            _msg.SetTradeSide(tradeSide);
            _msg.SetVolume(volume);
            if (stopLossInPips != null)
            {
                _msg.SetRelativeStopLossInPips((int)stopLossInPips);
            }
            if (takeProfitInPips != null)
            {
                _msg.SetRelativeTakeProfitInPips((int)takeProfitInPips);
            }
            if (!string.IsNullOrEmpty(comment))
            {
                _msg.SetComment(comment);
            }
            if (positionId != null)
            {
                _msg.SetPositionId((long)positionId);
            }

            return(CreateMessage((uint)_msg.PayloadType, _msg.Build().ToByteString(), clientMsgId));
        }
示例#12
0
        public ProtoMessage CreateMarketOrderRequest(long accountId, string accessToken, string symbolName, ProtoTradeSide tradeSide, long volume, string clientMsgId = null)
        {
            var _msg = ProtoOACreateOrderReq.CreateBuilder();

            _msg.SetAccountId(accountId);
            _msg.SetAccessToken(accessToken);
            _msg.SetSymbolName(symbolName);
            _msg.SetOrderType(ProtoOAOrderType.OA_MARKET);
            _msg.SetTradeSide(tradeSide);
            _msg.SetVolume(volume);

            //_msg.SetRelativeStopLossInPips(27);
            //_msg.SetRelativeTakeProfitInPips(1);

            _msg.SetComment("TradingApiTest.CreateMarketOrderRequest");
            return(CreateMessage((uint)_msg.PayloadType, _msg.Build().ToByteString(), clientMsgId));
        }
        public ProtoMessage CreateStopOrderRequest(long accountId, string accessToken, string symbolName, ProtoTradeSide tradeSide, long volume, double stopPrice, string clientMsgId = null)
        {
            var _msg = new ProtoOACreateOrderReq();

            _msg.accountId   = accountId;
            _msg.accessToken = accessToken;
            _msg.symbolName  = symbolName;
            _msg.orderType   = ProtoOAOrderType.OA_STOP;
            _msg.tradeSide   = tradeSide;
            _msg.volume      = volume;
            _msg.stopPrice   = stopPrice;
            _msg.comment     = "TradingApiTest.CreateStopOrderRequest";
            return(CreateMessage((uint)_msg.payloadType, Utils.Serialize <ProtoOACreateOrderReq>(_msg), clientMsgId));
        }
        public ProtoOAPosition.Builder CreatePositionBuilder(long positionId, ProtoOAPositionStatus positionStatus, long accountId, ProtoTradeSide tradeSide, string symbolName, long volume, double entryPrice, long swap,
                                                             long commission, long openTimestamp, string channel = null, string comment = null)
        {
            var _obj = ProtoOAPosition.CreateBuilder();

            _obj.SetPositionId(positionId);
            _obj.SetPositionStatus(positionStatus);
            _obj.SetAccountId(accountId);
            _obj.SetTradeSide(tradeSide);
            _obj.SetSymbolName(symbolName);
            _obj.SetVolume(volume);
            _obj.SetEntryPrice(entryPrice);
            _obj.SetSwap(swap);
            _obj.SetCommission(commission);
            _obj.SetOpenTimestamp(openTimestamp);
            if (channel != null)
            {
                _obj.SetChannel(channel);
            }
            if (comment != null)
            {
                _obj.SetComment(comment);
            }
            return(_obj);
        }
        public ProtoOAOrder.Builder CreateOrderBuilder(long orderId, long accountId, ProtoOAOrderType orderType, ProtoTradeSide tradeSide, string symbolName, long requestedVolume, long executedVolume, bool closingOrder,
                                                       string channel = null, string comment = null)
        {
            var _obj = ProtoOAOrder.CreateBuilder();

            _obj.SetOrderId(orderId);
            _obj.SetAccountId(accountId);
            _obj.SetOrderType(orderType);
            _obj.SetTradeSide(tradeSide);
            _obj.SetSymbolName(symbolName);
            _obj.SetRequestedVolume(requestedVolume);
            _obj.SetExecutedVolume(executedVolume);
            _obj.SetClosingOrder(closingOrder);
            if (channel != null)
            {
                _obj.SetChannel(channel);
            }
            if (comment != null)
            {
                _obj.SetComment(comment);
            }
            return(_obj);
        }
		public void SendMarketOrderRequest (long testAccountId, string symbol, ProtoTradeSide tradeSide, long volume)
		{
			var _msg = outgoingMsgFactory.CreateMarketOrderRequest (testAccountId, authToken, symbol, tradeSide, volume, clientMsgId);
			if (isDebugIsOn)
				Console.WriteLine ("SendMarketOrderRequest() Message to be send:\n{0}", OpenApiMessagesPresentation.ToString (_msg));
			writeQueue.Enqueue (Utils.Serialize (_msg));
		}
 static public string TradeSideToString(ProtoTradeSide tradeSide)
 {
     switch (tradeSide)
     {
         case ProtoTradeSide.BUY:
             return "BUY";
         case ProtoTradeSide.SELL:
             return "SELL";
         default:
             return "unknown";
     }
 }
        public ProtoMessage CreateStopOrderRequest(long accountId, string accessToken, string symbolName, ProtoTradeSide tradeSide, long volume, double stopPrice, string clientMsgId = null)
        {
            var _msg = new ProtoOACreateOrderReq();
            _msg.accountId = accountId;
            _msg.accessToken = accessToken;
            _msg.symbolName = symbolName;
            _msg.orderType = ProtoOAOrderType.OA_STOP;
            _msg.tradeSide = tradeSide;
            _msg.volume = volume;
            _msg.stopPrice = stopPrice;
            _msg.comment = "TradingApiTest.CreateStopOrderRequest";
			return CreateMessage((uint)_msg.payloadType, Utils.Serialize<ProtoOACreateOrderReq>(_msg), clientMsgId);
        }
        public ProtoMessage CreateMarketRangeOrderRequest(long accountId, string accessToken, string symbolName, ProtoTradeSide tradeSide, long volume, double baseSlippagePrice, long slippageInPips, string clientMsgId = null)
        {
            var _msg = new ProtoOACreateOrderReq();
            _msg.accountId = accountId;
            _msg.accessToken = accessToken;
            _msg.symbolName = symbolName;
            _msg.orderType = ProtoOAOrderType.OA_MARKET_RANGE;
            _msg.tradeSide = tradeSide;
            _msg.volume = volume;
            _msg.baseSlippagePrice = baseSlippagePrice;
            _msg.slippageInPips = slippageInPips;
            _msg.comment = "TradingApiTest.CreateMarketRangeOrderRequest";
			return CreateMessage((uint)_msg.payloadType, Utils.Serialize<ProtoOACreateOrderReq>(_msg), clientMsgId);
        }
        public ProtoMessage CreateMarketRangeOrderRequest(long accountId, string accessToken, string symbolName, ProtoTradeSide tradeSide, long volume, double baseSlippagePrice, long slippageInPips, string clientMsgId = null)
        {
            var _msg = new ProtoOACreateOrderReq();

            _msg.accountId         = accountId;
            _msg.accessToken       = accessToken;
            _msg.symbolName        = symbolName;
            _msg.orderType         = ProtoOAOrderType.OA_MARKET_RANGE;
            _msg.tradeSide         = tradeSide;
            _msg.volume            = volume;
            _msg.baseSlippagePrice = baseSlippagePrice;
            _msg.slippageInPips    = slippageInPips;
            _msg.comment           = "TradingApiTest.CreateMarketRangeOrderRequest";
            return(CreateMessage((uint)_msg.payloadType, Utils.Serialize <ProtoOACreateOrderReq>(_msg), clientMsgId));
        }