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 })); }
private void button1_Click(object sender, EventArgs e) { var msgFactory = new OpenApiMessagesFactory(); var msg = msgFactory.CreateSymbolByIdRequest(Convert.ToInt32(_accountID)); Transmit(msg, false); }
private void btnGetOrders_Click(object sender, EventArgs e) { var msgFactory = new OpenApiMessagesFactory(); var msg = msgFactory.CreateReconcileRequest(_accountID); Transmit(msg); }
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); }
private void btnGetSymbols_Click(object sender, EventArgs e) { var msgFactory = new OpenApiMessagesFactory(); var msg = msgFactory.CreateSymbolsListRequest(_accountID); Transmit(msg); }
private void btnGetTransactions_Click(object sender, EventArgs e) { var msgFactory = new OpenApiMessagesFactory(); var msg = msgFactory.CreateCashflowHistoryRequest(_accountID, 1, ((DateTimeOffset)DateTime.Now).ToUnixTimeMilliseconds()); Transmit(msg); }
private void btnUnSubscribeFrorSpots_Click(object sender, EventArgs e) { var msgFactory = new OpenApiMessagesFactory(); var msg = msgFactory.CreateUnsubscribeFromSpotsRequest(_accountID, 1); Transmit(msg); }
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); }
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; }
private void btnAuthorizeAccount_Click(object sender, EventArgs e) { var msgFactory = new OpenApiMessagesFactory(); var msg = msgFactory.CreateAccAuthorizationRequest(_token, _accountID); Transmit(msg); }
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); } } }
private void btnAuthorizeApplication_Click(object sender, EventArgs e) { var msgFactory = new OpenApiMessagesFactory(); var msg = msgFactory.CreateAppAuthorizationRequest(_clientId, _clientSecret); Transmit(msg); }
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); }
private void timer2_Tick(object sender, EventArgs e) { var msgFactory = new OpenApiMessagesFactory(); var msg = msgFactory.CreateHeartbeatEvent(); Transmit(msg, false); }
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; } ; }
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); }
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); }
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); }
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()); }
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()); }
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()); }
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()); }
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()); }
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()); }
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()); }
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)); }
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)); }
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); }