Ejemplo n.º 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 }));
        }
Ejemplo n.º 2
0
        private void button1_Click(object sender, EventArgs e)
        {
            var msgFactory = new OpenApiMessagesFactory();
            var msg        = msgFactory.CreateSymbolByIdRequest(Convert.ToInt32(_accountID));

            Transmit(msg, false);
        }
Ejemplo n.º 3
0
        private void btnGetOrders_Click(object sender, EventArgs e)
        {
            var msgFactory = new OpenApiMessagesFactory();
            var msg        = msgFactory.CreateReconcileRequest(_accountID);

            Transmit(msg);
        }
Ejemplo n.º 4
0
        private void btnGetTrendbars_Click(object sender, EventArgs e)
        {
            var msgFactory = new OpenApiMessagesFactory();
            var msg        = msgFactory.CreateTrendbarsRequest(_accountID, 1, ((DateTimeOffset)DateTime.Now.AddDays(-35)).ToUnixTimeMilliseconds(), ((DateTimeOffset)DateTime.Now).ToUnixTimeMilliseconds(), ProtoOATrendbarPeriod.M1);

            Transmit(msg);
        }
        private void m_btnCloseOrder_Click(object sender, EventArgs e)
        {
            var msgFactory = new OpenApiMessagesFactory();
            var msg        = msgFactory.CreateCancelOrderRequest(Convert.ToInt32(_accountID), _token, Convert.ToInt64(m_txtOrderID.Text));

            Transmit(msg);
        }
Ejemplo n.º 6
0
        private void btnGetSymbols_Click(object sender, EventArgs e)
        {
            var msgFactory = new OpenApiMessagesFactory();
            var msg        = msgFactory.CreateSymbolsListRequest(_accountID);

            Transmit(msg);
        }
Ejemplo n.º 7
0
        private void btnGetTransactions_Click(object sender, EventArgs e)
        {
            var msgFactory = new OpenApiMessagesFactory();
            var msg        = msgFactory.CreateCashflowHistoryRequest(_accountID, 1, ((DateTimeOffset)DateTime.Now).ToUnixTimeMilliseconds());

            Transmit(msg);
        }
Ejemplo n.º 8
0
        private void btnUnSubscribeFrorSpots_Click(object sender, EventArgs e)
        {
            var msgFactory = new OpenApiMessagesFactory();
            var msg        = msgFactory.CreateUnsubscribeFromSpotsRequest(_accountID, 1);

            Transmit(msg);
        }
Ejemplo n.º 9
0
        private void btnClosePosition_Click(object sender, EventArgs e)
        {
            var msgFactory = new OpenApiMessagesFactory();
            var msg        = msgFactory.CreateClosePositionRequest(Convert.ToInt32(_accountID), _token, Convert.ToInt64(txtPositionID.Text), Convert.ToInt64(txtVolume.Text));

            Transmit(msg);
        }
Ejemplo n.º 10
0
        private void btnGetAccountsList_Click(object sender, EventArgs e)
        {
            var msgFactory = new OpenApiMessagesFactory();
            var msg        = msgFactory.CreateAccountListRequest(_token);

            Transmit(msg);

            while (_accounts == null)
            {
                Thread.Sleep(100);
            }
            _traders = new List <ProtoOATrader>();
            foreach (var account in _accounts)
            {
                if (!account.IsLive)
                {
                    var authMsg = msgFactory.CreateAccAuthorizationRequest(_token, (long)account.CtidTraderAccountId);
                    Transmit(authMsg);
                    Thread.Sleep(500);
                    var traderMsg = msgFactory.CreateTraderRequest((long)account.CtidTraderAccountId);
                    Transmit(traderMsg);
                }
            }
            Thread.Sleep(1000);
            foreach (var trader in _traders)
            {
                cbAccounts.Items.Add(trader.CtidTraderAccountId);
            }
            _accounts = null;
        }
Ejemplo n.º 11
0
        private void btnAuthorizeAccount_Click(object sender, EventArgs e)
        {
            var msgFactory = new OpenApiMessagesFactory();
            var msg        = msgFactory.CreateAccAuthorizationRequest(_token, _accountID);

            Transmit(msg);
        }
Ejemplo n.º 12
0
        private void GetSymbols(long ctraderAccountId)
        {
            //get the associated user config
            UserConfig config = Users.Where(x => x.Value.AccountId == ctraderAccountId).Select(x => x.Value).FirstOrDefault();

            if (config == null)
            {
                ErrorHandler?.Invoke("Could not find account " + ctraderAccountId + ". Ticks will not be recorded for this account.");
            }
            else
            {
                //if symbols aren't loaded then get symbols from api
                if (config.Symbols.Count == 0)
                {
                    MessageHandler?.Invoke("Retrieving symbol list for account " + ctraderAccountId + ".");

                    var msgFactory = new OpenApiMessagesFactory();
                    _trasmitQueue.Enqueue(msgFactory.CreateSymbolsListRequest(config.AccountId));
                }
                //otherwise go to StartSubscribes
                else
                {
                    StartSubscribes(ctraderAccountId);
                }
            }
        }
Ejemplo n.º 13
0
        private void btnAuthorizeApplication_Click(object sender, EventArgs e)
        {
            var msgFactory = new OpenApiMessagesFactory();
            var msg        = msgFactory.CreateAppAuthorizationRequest(_clientId, _clientSecret);

            Transmit(msg);
        }
Ejemplo n.º 14
0
        private void btnAmentSLTP_Click(object sender, EventArgs e)
        {
            var msgFactory = new OpenApiMessagesFactory();
            var msg        = msgFactory.CreateAmendPositionStopLossTakeProfitRequest(Convert.ToInt32(_accountID), _token, Convert.ToInt64(txtPositionIDTPSL.Text), Convert.ToDouble(txtStopLoss.Text), Convert.ToDouble(txtTakeProfit.Text));

            Transmit(msg);
        }
Ejemplo n.º 15
0
        private void timer2_Tick(object sender, EventArgs e)
        {
            var msgFactory = new OpenApiMessagesFactory();
            var msg        = msgFactory.CreateHeartbeatEvent();

            Transmit(msg, false);
        }
Ejemplo n.º 16
0
        static void ProcessIncomingDataStream(OpenApiMessagesFactory msgFactory, byte[] rawData)
        {
            var _msg = msgFactory.GetMessage(rawData);

            if (isDebugIsOn)
            {
                Console.WriteLine("ProcessIncomingDataStream() Message received:\n{0}", OpenApiMessagesPresentation.ToString(_msg));
            }

            if (!_msg.payloadSpecified)
            {
                return;
            }

            switch (_msg.payloadType)
            {
            case (int)ProtoPayloadType.HEARTBEAT_EVENT:
                break;

            case (int)ProtoOAPayloadType.OA_EXECUTION_EVENT:
                var _payload_msg = msgFactory.GetExecutionEvent(rawData);
                if (_payload_msg.position != null)
                {
                    testPositionId = _payload_msg.position.positionId;
                }

                break;

            default:
                break;
            }
            ;
        }
Ejemplo n.º 17
0
        private void btnSendStopLimitOrder_Click(object sender, EventArgs e)
        {
            var msgFactory = new OpenApiMessagesFactory();
            var msg        = msgFactory.CreateStopLimitOrderRequest(Convert.ToInt32(_accountID), _token, 1, ProtoOATradeSide.BUY, Convert.ToInt64(100000), 1.2, 5);

            Transmit(msg);
        }
Ejemplo n.º 18
0
        private void btnGetTickData_Click(object sender, EventArgs e)
        {
            var msgFactory = new OpenApiMessagesFactory();
            var msg        = msgFactory.CreateTickDataRequest(_accountID, 1, ((DateTimeOffset)DateTime.Now.AddDays(-5)).ToUnixTimeMilliseconds(), ((DateTimeOffset)DateTime.Now).ToUnixTimeMilliseconds(), ProtoOAQuoteType.BID);

            Transmit(msg);
        }
        public void CloseTrade(UserConfig config, long positionId, long size, string clientMsgId)
        {
            var          msgFactory = new OpenApiMessagesFactory();
            ProtoMessage _msg       = msgFactory.CreateClosePositionRequest(config.AccountId, config.Token, positionId, size, clientMsgId);

            //create the trade request message and queue it
            _trasmitQueue.Enqueue(_msg);
        }
Ejemplo n.º 20
0
        private void SendAuthorizationRequest(Params param)
        {
            var msgFactory = new OpenApiMessagesFactory();
            var msg        = msgFactory.CreateAuthorizationRequest(param.ClientId, param.ClientSecret);

            Transmit(msg);
            byte[] _message     = Listen(_apiSocket);
            var    protoMessage = msgFactory.GetMessage(_message);
        }
Ejemplo n.º 21
0
        void SendClosePositionRequest(OpenApiMessagesFactory msgFactory, Queue writeQueue)
        {
            var _msg = msgFactory.CreateClosePositionRequest(AccountId, AccessToken, positionId, testVolume, clientMsgId);

            if (isDebugIsOn)
            {
                Console.WriteLine("SendClosePositionRequest() Message to be sent:\n{0}", OpenApiMessagesPresentation.ToString(_msg));
            }
            writeQueue.Enqueue(_msg.ToByteArray());
        }
Ejemplo n.º 22
0
        void SendAmendLimitOrderRequest(OpenApiMessagesFactory msgFactory, Queue writeQueue)
        {
            var _msg = msgFactory.CreateAmendLimitOrderRequest(AccountId, AccessToken, orderId, 1.10, clientMsgId);

            if (isDebugIsOn)
            {
                Console.WriteLine("SendLimitOrderRequest() Message to be sent:\n{0}", OpenApiMessagesPresentation.ToString(_msg));
            }
            writeQueue.Enqueue(_msg.ToByteArray());
        }
Ejemplo n.º 23
0
        void SendStopOrderRequest(OpenApiMessagesFactory msgFactory, Queue writeQueue)
        {
            var _msg = msgFactory.CreateStopOrderRequest(AccountId, AccessToken, "EURUSD", OpenApiLib.ProtoTradeSide.BUY, 1000000, 0.2, clientMsgId);

            if (isDebugIsOn)
            {
                Console.WriteLine("SendStopOrderRequest() Message to be sent:\n{0}", OpenApiMessagesPresentation.ToString(_msg));
            }
            writeQueue.Enqueue(_msg.ToByteArray());
        }
Ejemplo n.º 24
0
        void SendUnsubscribeForTradingEventsRequest(OpenApiMessagesFactory msgFactory, Queue writeQueue)
        {
            var _msg = msgFactory.CreateUnsubscribeForTradingEventsRequest(AccountId);

            if (isDebugIsOn)
            {
                Console.WriteLine("SendUnsubscribeForTradingEventsRequest() Message to be sent:\n{0}", OpenApiMessagesPresentation.ToString(_msg));
            }
            writeQueue.Enqueue(_msg.ToByteArray());
        }
Ejemplo n.º 25
0
        void SendGetAllSubscriptionsForSpotEventsRequest(OpenApiMessagesFactory msgFactory, Queue writeQueue)
        {
            var _msg = msgFactory.CreateGetAllSpotSubscriptionsRequest();

            if (isDebugIsOn)
            {
                Console.WriteLine("SendGetAllSubscriptionsForSpotEventsRequest() Message to be sent:\n{0}", OpenApiMessagesPresentation.ToString(_msg));
            }
            writeQueue.Enqueue(_msg.ToByteArray());
        }
Ejemplo n.º 26
0
        void SendAuthorizationRequest(OpenApiMessagesFactory msgFactory, Queue writeQueue)
        {
            var _msg = msgFactory.CreateAuthorizationRequest(ClientPublicId, ClientSecret);

            if (isDebugIsOn)
            {
                Console.WriteLine("SendAuthorizationRequest() Message to be sent:\n{0}", OpenApiMessagesPresentation.ToString(_msg));
            }
            writeQueue.Enqueue(_msg.ToByteArray());
        }
Ejemplo n.º 27
0
        void SendSubscribeForSpotsRequest(OpenApiMessagesFactory msgFactory, Queue writeQueue)
        {
            var _msg = msgFactory.CreateSubscribeForSpotsRequest(AccountId, AccessToken, "EURUSD", clientMsgId);

            if (isDebugIsOn)
            {
                Console.WriteLine("SendSubscribeForSpotsRequest() Message to be sent:\n{0}", OpenApiMessagesPresentation.ToString(_msg));
            }
            writeQueue.Enqueue(_msg.ToByteArray());
        }
Ejemplo n.º 28
0
        static void SendGetAllSubscriptionsForTradingEventsRequest(OpenApiMessagesFactory msgFactory, Queue writeQueue)
        {
            var _msg = msgFactory.CreateAllSubscriptionsForTradingEventsRequest();

            if (isDebugIsOn)
            {
                Console.WriteLine("SendGetAllSubscriptionsForTradingEventsRequest() Message to be send:\n{0}", OpenApiMessagesPresentation.ToString(_msg));
            }
            writeQueue.Enqueue(Utils.Serialize(_msg));
        }
Ejemplo n.º 29
0
        static void SendLimitOrderRequest(OpenApiMessagesFactory msgFactory, Queue writeQueue)
        {
            var _msg = msgFactory.CreateLimitOrderRequest(testAccountId, testAccessToken, "EURUSD", ProtoTradeSide.BUY, 1000000, 1.8, clientMsgId);

            if (isDebugIsOn)
            {
                Console.WriteLine("SendLimitOrderRequest() Message to be send:\n{0}", OpenApiMessagesPresentation.ToString(_msg));
            }
            writeQueue.Enqueue(Utils.Serialize(_msg));
        }
Ejemplo n.º 30
0
        private void btnGetDealsList_Click(object sender, EventArgs e)
        {
            var msgFactory = new OpenApiMessagesFactory();
            //    var msg = msgFactory.CreateDealsListRequest(_accountID, 1526342400, 1540000000000);
            var startDate = new DateTimeOffset(DateTime.Now.AddDays(-7));
            var now       = new DateTimeOffset(DateTime.Now);
            var msg       = msgFactory.CreateDealsListRequest(_accountID, startDate.ToUnixTimeMilliseconds(), now.ToUnixTimeMilliseconds());

            Transmit(msg);
        }