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));
        }
예제 #2
0
        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);
                }
            }
        }
예제 #3
0
        ///<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));
        }