public async Task <IActionResult> CreatePosition([FromBody] CreatePositionRequest request) { var command = _mapper.Map <CreatePositionRequest, CreatePositionCommand>(request); var result = await _mediator.Send(command); return(Created($"{Request.Path}/{result.Id}", result)); }
public async void BookTrade(Trade trade, Portfolio.TradeBookedEvent onTradeBooked, Portfolio.TradeBookedEvent onBookingFailed) { if (_closing.Signaled) { Log.Instance.WriteEntry("Application is stopping: cannot book trade", EventLogEntryType.Warning); return; } CreatePositionRequest cpr = new CreatePositionRequest(); cpr.epic = trade.Epic; cpr.expiry = "DFB"; cpr.direction = trade.Direction.ToString(); cpr.size = trade.Size; cpr.orderType = "MARKET"; cpr.guaranteedStop = false; cpr.forceOpen = false; cpr.currencyCode = Config.Settings["TRADING_CURRENCY"]; if (onTradeBooked != null) { onTradeBooked(trade); } var createPositionResponse = await _igRestApiClient.createPositionV2(cpr); if (createPositionResponse && (createPositionResponse.Response != null) && (createPositionResponse.Response.dealReference != null)) { Log.Instance.WriteEntry("New trade booked successfully : " + createPositionResponse.Response.dealReference, EventLogEntryType.Information); trade.Reference = createPositionResponse.Response.dealReference; trade.ConfirmationTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Local); } else { Log.Instance.WriteEntry("Trade booking failed : " + createPositionResponse.StatusCode, EventLogEntryType.Error); if (onBookingFailed != null) { onBookingFailed(trade); } } }
///<Summary> ///Creates an OTC position ///@param createPositionRequest the request for creating a position ///@return OTC create position response ///</Summary> public async Task <IgResponse <CreatePositionResponse> > CreatePositionV1(CreatePositionRequest createPositionRequest) { return(await _igRestService.RestfulService <CreatePositionResponse>("/gateway/deal/positions/otc", HttpMethod.Post, "1", _conversationContext, createPositionRequest)); }