forked from alpacahq/alpaca-trade-api-csharp
/
AdvancedOrderBase.cs
45 lines (39 loc) · 1.43 KB
/
AdvancedOrderBase.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
namespace Alpaca.Markets;
/// <summary>
/// Encapsulates base data for advanced order types, never used directly by any code.
/// </summary>
public abstract class AdvancedOrderBase : OrderBase
{
/// <summary>
/// Creates new instance of the <see cref="AdvancedOrderBase"/> class.
/// </summary>
/// <param name="baseOrder">Base order object for creating advanced one.</param>
/// <param name="orderClass">Advanced order class for new smart order.</param>
/// <exception cref="ArgumentNullException">
/// The <paramref name="baseOrder"/> argument is <c>null</c>.
/// </exception>
protected internal AdvancedOrderBase(
SimpleOrderBase baseOrder,
OrderClass orderClass)
: base(baseOrder.EnsureNotNull())
{
BaseOrder = baseOrder;
OrderClass = orderClass;
}
/// <summary>
/// Gets or sets the order class for advanced order types.
/// </summary>
[UsedImplicitly]
public OrderClass OrderClass { get; }
internal override RequestValidationException? TryValidateQuantity() =>
BaseOrder.TryValidateQuantity();
internal override JsonNewOrder GetJsonRequest()
{
BaseOrder.ClientOrderId = ClientOrderId;
BaseOrder.ExtendedHours = ExtendedHours;
BaseOrder.Duration = Duration;
return BaseOrder.GetJsonRequest()
.WithOrderClass(OrderClass);
}
internal SimpleOrderBase BaseOrder { get; }
}