@@ -10,6 +10,10 @@ using static Managing.Common.Enums;
|
||||
|
||||
namespace Managing.Api.Controllers;
|
||||
|
||||
/// <summary>
|
||||
/// Controller for trading operations such as opening and closing positions, and retrieving trade information.
|
||||
/// Requires authorization for access.
|
||||
/// </summary>
|
||||
[ApiController]
|
||||
[Authorize]
|
||||
[Route("[controller]")]
|
||||
@@ -20,9 +24,16 @@ public class TradingController : ControllerBase
|
||||
private readonly ITradingService _tradingService;
|
||||
private readonly IMoneyManagementService _moneyManagementService;
|
||||
private readonly IMediator _mediator;
|
||||
|
||||
private readonly ILogger<TradingController> _logger;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="TradingController"/> class.
|
||||
/// </summary>
|
||||
/// <param name="logger">Logger for logging information.</param>
|
||||
/// <param name="openTradeCommandHandler">Command handler for opening trades.</param>
|
||||
/// <param name="closeTradeCommandHandler">Command handler for closing trades.</param>
|
||||
/// <param name="tradingService">Service for trading operations.</param>
|
||||
/// <param name="mediator">Mediator for handling commands and requests.</param>
|
||||
public TradingController(
|
||||
ILogger<TradingController> logger,
|
||||
ICommandHandler<OpenPositionRequest, Position> openTradeCommandHandler,
|
||||
@@ -37,6 +48,11 @@ public class TradingController : ControllerBase
|
||||
_mediator = mediator;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves a list of positions based on the initiator type.
|
||||
/// </summary>
|
||||
/// <param name="positionInitiator">The initiator of the position (e.g., User, System).</param>
|
||||
/// <returns>A list of positions.</returns>
|
||||
[HttpGet("GetPositions")]
|
||||
public async Task<ActionResult<List<Position>>> GetPositions(PositionInitiator positionInitiator)
|
||||
{
|
||||
@@ -44,6 +60,13 @@ public class TradingController : ControllerBase
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves a specific trade by account name, ticker, and exchange order ID.
|
||||
/// </summary>
|
||||
/// <param name="accountName">The name of the account.</param>
|
||||
/// <param name="ticker">The ticker symbol of the trade.</param>
|
||||
/// <param name="exchangeOrderId">The exchange order ID of the trade.</param>
|
||||
/// <returns>The requested trade.</returns>
|
||||
[HttpGet("GetTrade")]
|
||||
public async Task<ActionResult<Trade>> GetTrade(string accountName, Ticker ticker, string exchangeOrderId)
|
||||
{
|
||||
@@ -51,13 +74,24 @@ public class TradingController : ControllerBase
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves a list of trades for a given account and ticker.
|
||||
/// </summary>
|
||||
/// <param name="accountName">The name of the account.</param>
|
||||
/// <param name="ticker">The ticker symbol of the trades.</param>
|
||||
/// <returns>A list of trades.</returns>
|
||||
[HttpGet("GetTrades")]
|
||||
public async Task<ActionResult<Trade>> GetTrades(string accountName, Ticker ticker, string exchangeOrderId)
|
||||
public async Task<ActionResult<Trade>> GetTrades(string accountName, Ticker ticker)
|
||||
{
|
||||
var result = await _mediator.Send(new GetTradesCommand(ticker, accountName));
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Closes a position identified by its unique identifier.
|
||||
/// </summary>
|
||||
/// <param name="identifier">The unique identifier of the position to close.</param>
|
||||
/// <returns>The closed position.</returns>
|
||||
[HttpGet("ClosePosition")]
|
||||
public async Task<ActionResult<Position>> ClosePosition(string identifier)
|
||||
{
|
||||
@@ -66,6 +100,18 @@ public class TradingController : ControllerBase
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Opens a new position based on the provided parameters.
|
||||
/// </summary>
|
||||
/// <param name="accountName">The name of the account to open the position for.</param>
|
||||
/// <param name="moneyManagementName">The name of the money management strategy to use.</param>
|
||||
/// <param name="direction">The direction of the trade (Buy or Sell).</param>
|
||||
/// <param name="ticker">The ticker symbol for the trade.</param>
|
||||
/// <param name="riskLevel">The risk level for the trade.</param>
|
||||
/// <param name="isForPaperTrading">Indicates whether the trade is for paper trading.</param>
|
||||
/// <param name="moneyManagement">The money management strategy details (optional).</param>
|
||||
/// <param name="openPrice">The opening price for the trade (optional).</param>
|
||||
/// <returns>The opened position.</returns>
|
||||
[HttpGet("OpenPosition")]
|
||||
public async Task<ActionResult<Position>> Trade(
|
||||
string accountName,
|
||||
@@ -104,4 +150,4 @@ public class TradingController : ControllerBase
|
||||
var result = await _openTradeCommandHandler.Handle(command);
|
||||
return Ok(result);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user