17 using System.Collections.Generic;
18 using System.ComponentModel;
20 using System.Threading;
21 using Newtonsoft.Json;
33 private volatile int _incrementalId;
34 private decimal _quantity;
35 private decimal _price;
40 [JsonProperty(PropertyName =
"id")]
41 public int Id {
get;
internal set; }
46 [JsonProperty(PropertyName =
"contingentId")]
52 [JsonProperty(PropertyName =
"brokerId")]
53 public List<string>
BrokerId {
get;
internal set; }
58 [JsonProperty(PropertyName =
"symbol")]
64 [JsonProperty(PropertyName =
"price")]
67 get {
return _price; }
68 internal set { _price = value.Normalize(); }
74 [JsonProperty(PropertyName =
"priceCurrency")]
80 [JsonProperty(PropertyName =
"time")]
81 public DateTime
Time {
get;
internal set; }
86 [JsonProperty(PropertyName =
"createdTime")]
92 [JsonProperty(PropertyName =
"lastFillTime", NullValueHandling = NullValueHandling.Ignore)]
98 [JsonProperty(PropertyName =
"lastUpdateTime", NullValueHandling = NullValueHandling.Ignore)]
104 [JsonProperty(PropertyName =
"canceledTime", NullValueHandling = NullValueHandling.Ignore)]
110 [JsonProperty(PropertyName =
"quantity")]
113 get {
return _quantity; }
114 internal set { _quantity = value.Normalize(); }
120 [JsonProperty(PropertyName =
"type")]
126 [JsonProperty(PropertyName =
"status")]
138 [JsonProperty(PropertyName =
"tag" ,DefaultValueHandling = DefaultValueHandling.Ignore)]
139 public string Tag {
get;
internal set; }
144 [JsonProperty(PropertyName =
"properties")]
150 [JsonProperty(PropertyName =
"securityType")]
156 [JsonProperty(PropertyName =
"direction")]
182 [JsonProperty(PropertyName =
"value"), Obsolete(
"Please use Order.GetValue(security) or security.Holdings.HoldingsValue")]
188 [JsonProperty(PropertyName =
"orderSubmissionData")]
194 [JsonProperty(PropertyName =
"isMarketable")]
215 [JsonProperty(PropertyName =
"groupOrderManager", DefaultValueHandling = DefaultValueHandling.Ignore)]
221 [JsonProperty(PropertyName =
"priceAdjustmentMode")]
229 Time =
new DateTime();
271 : this(symbol, quantity, time, null, tag, properties)
285 var security = securities[
Symbol];
323 internal int GetNewId()
325 return Interlocked.Increment(ref _incrementalId);
336 throw new ArgumentException(
"Attempted to apply updates to the incorrect order!");
342 if (request.
Tag !=
null)
406 string tag,
IOrderProperties properties, decimal limitPrice, decimal stopPrice, decimal triggerPrice, decimal trailingAmount,
413 order =
new MarketOrder(symbol, quantity, time, tag, properties);
417 order =
new LimitOrder(symbol, quantity, limitPrice, time, tag, properties);
421 order =
new StopMarketOrder(symbol, quantity, stopPrice, time, tag, properties);
425 order =
new StopLimitOrder(symbol, quantity, stopPrice, limitPrice, time, tag, properties);
429 order =
new TrailingStopOrder(symbol, quantity, stopPrice, trailingAmount, trailingAsPercentage, time, tag, properties);
433 order =
new LimitIfTouchedOrder(symbol, quantity, triggerPrice, limitPrice, time, tag, properties);
449 order =
new ComboLimitOrder(symbol, quantity, limitPrice, time, groupOrderManager, tag, properties);
453 order =
new ComboLegLimitOrder(symbol, quantity, limitPrice, time, groupOrderManager, tag, properties);
457 order =
new ComboMarketOrder(symbol, quantity, time, groupOrderManager, tag, properties);
461 throw new ArgumentOutOfRangeException();
465 if (groupOrderManager !=
null)
469 groupOrderManager.
OrderIds.Add(orderId);