/// <summary>
		/// Wysłanie do systemu nowego zlecenia na "oddanie" wszystkich dostępnych na rachunku papierów po wskazanej cenie
		/// (sprzedaż, jeśli to akcje lub otwarte długie pozycje... lub przeciwstawne zlecenie kupna, jeśli to otwarte krótkie pozycje).
		/// </summary>
		/// <param name="price">Limit ceny: BosPrice.PKC/PCR/PCRO... lub po prostu kwota.</param>
		public void Release(BosPrice price)
		{
			if (Quantity110 > 0)
				Instrument.Sell(price, (uint)Quantity110);
			else
				Instrument.Buy(price, (uint)-Quantity110);
		}
		/// <summary>
		/// Wysłanie do systemu nowego zlecenia na zakup bieżącego instrumentu.
		/// </summary>
		/// <param name="price">Limit ceny: BosPrice.PKC/PCR/PCRO... lub po prostu kwota.</param>
		/// <param name="activationPrice">Ewentualny limit aktywacji (null, jeśli bez stop'a).</param>
		/// <param name="quantity">Liczba walorów, jaką zamierzamy kupić.</param>
		public void Buy(BosPrice price, decimal? activationPrice, uint quantity)
		{
			Buy(price, activationPrice, quantity, null);
		}
		/// <summary>
		/// Wysłanie do systemu nowego zlecenia na sprzedaż bieżącego instrumentu.
		/// </summary>
		/// <param name="price">Limit ceny: BosPrice.PKC/PCR/PCRO... lub po prostu kwota.</param>
		/// <param name="activationPrice">Ewentualny limit aktywacji (null, jeśli bez stop'a).</param>
		/// <param name="quantity">Liczba walorów, jaką zamierzamy sprzedać.</param>
		/// <param name="expirationDate">Data ważności zlecenia (null, jeśli tylko na bieżącą sesję).</param>
		public void Sell(BosPrice price, decimal? activationPrice, uint quantity, DateTime? expirationDate)
		{
			Order(BosOrderSide.Sell, price, activationPrice, quantity, expirationDate);
		}
		/// <summary>
		/// Wysłanie do systemu nowego zlecenia na zakup/sprzedaż bieżącego instrumentu.
		/// Skrócona wersja głównej metody "Order(...)", gdzie pozostałe parametry przyjmują wartość null/false.
		/// <para>Zobacz też sąsiednie metody: "Buy(...)" i "Sell(...)" - które od razu precyzują, czy ma to być zlecenie kupna, czy sprzedaży.</para>
		/// </summary>
		/// <param name="side">Zlecenie kupna (BosOrderSide.Buy) czy sprzedaży (BosOrderSide.Sell).</param>
		/// <param name="price">Limit ceny: BosPrice.PKC/PCR/PCRO... lub po prostu kwota.</param>
		/// <param name="activationPrice">Ewentualny limit aktywacji (null, jeśli bez stop'a).</param>
		/// <param name="quantity">Liczba walorów, jaką zamierzamy kupić/sprzedać.</param>
		/// <param name="expirationDate">Data ważności zlecenia (null, jeśli tylko na bieżącą sesję).</param>
		public void Order(BosOrderSide side, BosPrice price, decimal? activationPrice, uint quantity, DateTime? expirationDate)
		{
			Order(side, price, activationPrice, quantity, null, null, false, expirationDate);
		}
		/// <summary>
		/// Wysłanie do systemu nowego zlecenia na zakup/sprzedaż bieżącego instrumentu.
		/// <para>Preferowana metoda - zamiast "BosOrder.Create(...)" - bo od razu określa, jakiego instrumentu dotyczy.
		/// Nr rachunku, na który zostaje przeznaczone to zlecenie, wybierany jest automatycznie na podstawie typu instrumentu.</para>
		/// <para>Zobacz też sąsiednie metody: "Buy(...)" i "Sell(...)" - które od razu precyzują, czy ma to być zlecenie kupna, czy sprzedaży.</para>
		/// </summary>
		/// <param name="side">Zlecenie kupna (BosOrderSide.Buy) czy sprzedaży (BosOrderSide.Sell).</param>
		/// <param name="price">Limit ceny, jaki wstawiamy do zlecenia (BosPrice.PKC/PCR/PCRO... lub po prostu kwota).</param>
		/// <param name="activationPrice">Ewentualny limit aktywacji zlecenia (null, jeśli aktywowane od razu, bez stop'a).</param>
		/// <param name="quantity">Liczba walorów, jaką zamierzamy kupić/sprzedać.</param>
		/// <param name="minimumQuantity">Minimalna liczba walorów, jaka musi się zrealizować, albo zlecenie będzie anulowane.
		/// Podając tutaj to samo, co w polu "quantity", uzyskujemy zlecenie typu "WuA".</param>
		/// <param name="visibleQuantity">Liczba walorów ujawniana w arkuszu ofert ("WUJ").</param>
		/// <param name="immediateOrCancel">Czy to zlecenie typu "WiA" (to, co nie wykona się natychmiast, jest od razu anulowane).</param>
		/// <param name="expirationDate">Data ważności zlecenia (null, jeśli tylko na bieżącą sesję).</param>
		public void Order(BosOrderSide side, BosPrice price, decimal? activationPrice,
			uint quantity, uint? minimumQuantity, uint? visibleQuantity, bool immediateOrCancel, DateTime? expirationDate)
		{
			BosOrder.Create(this, side, price, activationPrice,
				quantity, minimumQuantity, visibleQuantity, immediateOrCancel, expirationDate);
		}
		/// <summary>
		/// Wysłanie do systemu nowego zlecenia z podanymi parametrami (pozostałe przyjmują 
		/// domyślną wartość null/false, a numer rachunku wyznaczany jest na podstawie typu instrumentu).
		/// <para>Zobacz też metody klasy BosInstrument: Order, Buy, Sell - które od razu określają, 
		/// którego instrumentu dane zlecenie ma dotyczyć i ewentualnie prezyzują też stronę transakcji (kupno/sprzedaż)</para>
		/// </summary>
		/// <param name="instrument">Instrument, którego walory chcemy kupić/sprzedać.</param>
		/// <param name="side">Zlecenie kupna (BosOrderSide.Buy) czy sprzedaży (BosOrderSide.Sell).</param>
		/// <param name="price">Limit ceny, jaki wstawiamy do zlecenia (BosPrice.PKC/PCR/PCRO... lub po prostu kwota).</param>
		/// <param name="quantity">Liczba walorów, jaką zamierzamy kupić/sprzedać.</param>
		public static void Create(BosInstrument instrument, BosOrderSide side, BosPrice price, uint quantity)
		{
			Create(instrument, side, price, null, quantity, null, null, false, null);
		}
 /// <summary>
 /// Wysłanie do systemu nowego zlecenia na zakup/sprzedaż bieżącego instrumentu.
 /// Skrócona wersja głównej metody "Order(...)", gdzie pozostałe parametry przyjmują wartość null/false.
 /// <para>Zobacz też sąsiednie metody: "Buy(...)" i "Sell(...)" - które od razu precyzują, czy ma to być zlecenie kupna, czy sprzedaży.</para>
 /// </summary>
 /// <param name="side">Zlecenie kupna (BosOrderSide.Buy) czy sprzedaży (BosOrderSide.Sell).</param>
 /// <param name="price">Limit ceny: BosPrice.PKC/PCR/PCRO... lub po prostu kwota.</param>
 /// <param name="activationPrice">Ewentualny limit aktywacji (null, jeśli bez stop'a).</param>
 /// <param name="quantity">Liczba walorów, jaką zamierzamy kupić/sprzedać.</param>
 /// <param name="expirationDate">Data ważności zlecenia (null, jeśli tylko na bieżącą sesję).</param>
 public void Order(BosOrderSide side, BosPrice price, decimal?activationPrice, uint quantity, DateTime?expirationDate)
 {
     Order(side, price, activationPrice, quantity, null, null, false, expirationDate);
 }
		/// <summary>
		/// Wysłanie do systemu nowego zlecenia na sprzedaż bieżącego instrumentu.
		/// </summary>
		/// <param name="price">Limit ceny: BosPrice.PKC/PCR/PCRO... lub po prostu kwota.</param>
		/// <param name="quantity">Liczba walorów, jaką zamierzamy sprzedać.</param>
		public void Sell(BosPrice price, uint quantity)
		{
			Sell(price, null, quantity, null);
		}
		/// <summary>
		/// Wysłanie do systemu nowego zlecenia z podanymi parametrami. 
		/// <para>Zobacz też metody klasy BosInstrument: Order, Buy, Sell - które od razu określają, 
		/// którego instrumentu dane zlecenie ma dotyczyć i ewentualnie prezyzują też stronę transakcji (kupno/sprzedaż)</para>
		/// </summary>
		/// <param name="account">Rachunek, na który zostaje przeznaczone to zlecenie.</param>
		/// <param name="instrument">Instrument, którego walory chcemy kupić/sprzedać.</param>
		/// <param name="side">Zlecenie kupna (BosOrderSide.Buy) czy sprzedaży (BosOrderSide.Sell).</param>
		/// <param name="price">Limit ceny, jaki wstawiamy do zlecenia (BosPrice.PKC/PCR/PCRO... lub po prostu kwota).</param>
		/// <param name="activationPrice">Ewentualny limit aktywacji zlecenia (null, jeśli aktywowane od razu, bez stop'a).</param>
		/// <param name="quantity">Liczba walorów, jaką zamierzamy kupić/sprzedać.</param>
		/// <param name="minimumQuantity">Minimalna liczba walorów, jaka musi się zrealizować, albo zlecenie będzie anulowane.
		/// Podając tutaj to samo, co w polu "quantity", uzyskujemy zlecenie typu "WuA".</param>
		/// <param name="visibleQuantity">Liczba walorów ujawniana w arkuszu ofert ("WUJ").</param>
		/// <param name="immediateOrCancel">Czy to zlecenie typu "WiA" (to, co nie wykona się natychmiast, jest od razu anulowane).</param>
		/// <param name="expirationDate">Data ważności zlecenia (null, jeśli tylko na bieżącą sesję).</param>
		public static void Create(BosAccount account, BosInstrument instrument, 
			BosOrderSide side, BosPrice price, decimal? activationPrice,
			uint quantity, uint? minimumQuantity, uint? visibleQuantity, bool immediateOrCancel, DateTime? expirationDate)
		{
			var data = new OrderData();
			data.AccountNumber = account.Number;
			data.MainData = new OrderMainData();
			data.MainData.CreateTime = DateTime.Now;
			data.MainData.Instrument = instrument.Convert();
			data.MainData.Side = side;
			data.MainData.PriceType = price.Type;
			data.MainData.PriceLimit = price.NumValue;
			data.MainData.ActivationPrice = activationPrice;
			data.MainData.Quantity = quantity;
			data.MainData.MinimumQuantity = minimumQuantity;
			data.MainData.VisibleQuantity = visibleQuantity;
			data.MainData.ImmediateOrCancel = immediateOrCancel;
			data.MainData.ExpirationDate = expirationDate;
			account.api.Connection.OrderCreate(data);
			// TODO: Zastanawiam się jeszczcze m.in. co z ClientId, TradeDate... i czy w ogóle byłby sens
			// od razu tworzyć taki nowy obiekt BosOrder (zamiast zaczekać aż sam się doda przy OrderUpdate).
		}
		/// <summary>
		/// Wysłanie do systemu prośby o modyfikację tego zlecenia (tylko limit ceny).
		/// </summary>
		/// <param name="newPrice">nowy limit ceny</param>
		public void Modify(BosPrice newPrice)
		{
			Modify(newPrice, ExpirationDate);
		}
		/// <summary>
		/// Wysłanie do systemu prośby o modyfikację tego zlecenia (wszystkie możliwe do zmiany parametry).
		/// </summary>
		/// <param name="newPrice">nowy limit ceny</param>
		/// <param name="newExpirationDate">nowa data ważności</param>
		public void Modify(BosPrice newPrice, DateTime? newExpirationDate)
		{
			var data = GetData();
			data.MainData.PriceType = newPrice.Type;
			data.MainData.PriceLimit = newPrice.NumValue;
			data.MainData.ExpirationDate = newExpirationDate;
			Account.api.Connection.OrderReplace(data);
		}
 /// <summary>
 /// Wysłanie do systemu nowego zlecenia na zakup bieżącego instrumentu.
 /// </summary>
 /// <param name="price">Limit ceny: BosPrice.PKC/PCR/PCRO... lub po prostu kwota.</param>
 /// <param name="quantity">Liczba walorów, jaką zamierzamy kupić.</param>
 public void Buy(BosPrice price, uint quantity)
 {
     Buy(price, null, quantity, null);
 }
 /// <summary>
 /// Wysłanie do systemu nowego zlecenia na sprzedaż bieżącego instrumentu.
 /// </summary>
 /// <param name="price">Limit ceny: BosPrice.PKC/PCR/PCRO... lub po prostu kwota.</param>
 /// <param name="activationPrice">Ewentualny limit aktywacji (null, jeśli bez stop'a).</param>
 /// <param name="quantity">Liczba walorów, jaką zamierzamy sprzedać.</param>
 public void Sell(BosPrice price, decimal?activationPrice, uint quantity)
 {
     Sell(price, activationPrice, quantity, null);
 }
 /// <summary>
 /// Wysłanie do systemu nowego zlecenia na zakup bieżącego instrumentu.
 /// </summary>
 /// <param name="price">Limit ceny: BosPrice.PKC/PCR/PCRO... lub po prostu kwota.</param>
 /// <param name="activationPrice">Ewentualny limit aktywacji (null, jeśli bez stop'a).</param>
 /// <param name="quantity">Liczba walorów, jaką zamierzamy kupić.</param>
 public void Buy(BosPrice price, decimal?activationPrice, uint quantity)
 {
     Buy(price, activationPrice, quantity, null);
 }
 /// <summary>
 /// Wysłanie do systemu nowego zlecenia na sprzedaż bieżącego instrumentu.
 /// </summary>
 /// <param name="price">Limit ceny: BosPrice.PKC/PCR/PCRO... lub po prostu kwota.</param>
 /// <param name="activationPrice">Ewentualny limit aktywacji (null, jeśli bez stop'a).</param>
 /// <param name="quantity">Liczba walorów, jaką zamierzamy sprzedać.</param>
 /// <param name="expirationDate">Data ważności zlecenia (null, jeśli tylko na bieżącą sesję).</param>
 public void Sell(BosPrice price, decimal?activationPrice, uint quantity, DateTime?expirationDate)
 {
     Order(BosOrderSide.Sell, price, activationPrice, quantity, expirationDate);
 }
		/// <summary>
		/// Wysłanie do systemu nowego zlecenia na sprzedaż bieżącego instrumentu.
		/// </summary>
		/// <param name="price">Limit ceny: BosPrice.PKC/PCR/PCRO... lub po prostu kwota.</param>
		/// <param name="activationPrice">Ewentualny limit aktywacji (null, jeśli bez stop'a).</param>
		/// <param name="quantity">Liczba walorów, jaką zamierzamy sprzedać.</param>
		public void Sell(BosPrice price, decimal? activationPrice, uint quantity)
		{
			Sell(price, activationPrice, quantity, null);
		}
		/// <summary>
		/// Wysłanie do systemu nowego zlecenia na zakup bieżącego instrumentu.
		/// </summary>
		/// <param name="price">Limit ceny: BosPrice.PKC/PCR/PCRO... lub po prostu kwota.</param>
		/// <param name="quantity">Liczba walorów, jaką zamierzamy kupić.</param>
		public void Buy(BosPrice price, uint quantity)
		{
			Buy(price, null, quantity, null);
		}
		/// <summary>
		/// Wysłanie do systemu nowego zlecenia z podanymi parametrami. W tej wersji metody numer rachunku,
		/// na który zostaje przeznaczone to zlecenie, wybierany jest automatycznie na podstawie typu instrumentu.
		/// <para>Zobacz też metody klasy BosInstrument: Order, Buy, Sell - które od razu określają, 
		/// którego instrumentu dane zlecenie ma dotyczyć i ewentualnie prezyzują też stronę transakcji (kupno/sprzedaż)</para>
		/// </summary>
		/// <param name="instrument">Instrument, którego walory chcemy kupić/sprzedać.</param>
		/// <param name="side">Zlecenie kupna (BosOrderSide.Buy) czy sprzedaży (BosOrderSide.Sell).</param>
		/// <param name="price">Limit ceny, jaki wstawiamy do zlecenia (BosPrice.PKC/PCR/PCRO... lub po prostu kwota).</param>
		/// <param name="activationPrice">Ewentualny limit aktywacji zlecenia (null, jeśli aktywowane od razu, bez stop'a).</param>
		/// <param name="quantity">Liczba walorów, jaką zamierzamy kupić/sprzedać.</param>
		/// <param name="minimumQuantity">Minimalna liczba walorów, jaka musi się zrealizować, albo zlecenie będzie anulowane.
		/// Podając tutaj to samo, co w polu "quantity", uzyskujemy zlecenie typu "WuA".</param>
		/// <param name="visibleQuantity">Liczba walorów ujawniana w arkuszu ofert ("WUJ").</param>
		/// <param name="immediateOrCancel">Czy to zlecenie typu "WiA" (to, co nie wykona się natychmiast, jest od razu anulowane).</param>
		/// <param name="expirationDate">Data ważności zlecenia (null, jeśli tylko na bieżącą sesję).</param>
		public static void Create(BosInstrument instrument,
			BosOrderSide side, BosPrice price, decimal? activationPrice,
			uint quantity, uint? minimumQuantity, uint? visibleQuantity, bool immediateOrCancel, DateTime? expirationDate)
		{
			var account = Bossa.Accounts[instrument.Type];
			Create(account, instrument, side, price, activationPrice,
				quantity, minimumQuantity, visibleQuantity, immediateOrCancel, expirationDate);
		}
		/// <summary>
		/// Wysłanie do systemu nowego zlecenia z podanymi parametrami (pozostałe przyjmują 
		/// domyślną wartość null/false, a numer rachunku wyznaczany jest na podstawie typu instrumentu).
		/// <para>Zobacz też metody klasy BosInstrument: Order, Buy, Sell - które od razu określają, 
		/// którego instrumentu dane zlecenie ma dotyczyć i ewentualnie prezyzują też stronę transakcji (kupno/sprzedaż)</para>
		/// </summary>
		/// <param name="instrument">Instrument, którego walory chcemy kupić/sprzedać.</param>
		/// <param name="side">Zlecenie kupna (BosOrderSide.Buy) czy sprzedaży (BosOrderSide.Sell).</param>
		/// <param name="price">Limit ceny, jaki wstawiamy do zlecenia (BosPrice.PKC/PCR/PCRO... lub po prostu kwota).</param>
		/// <param name="activationPrice">Ewentualny limit aktywacji zlecenia (null, jeśli aktywowane od razu, bez stop'a).</param>
		/// <param name="quantity">Liczba walorów, jaką zamierzamy kupić/sprzedać.</param>
		/// <param name="expirationDate">Data ważności zlecenia (null, jeśli tylko na bieżącą sesję).</param>
		public static void Create(BosInstrument instrument,
			BosOrderSide side, BosPrice price, decimal? activationPrice, uint quantity, DateTime? expirationDate)
		{
			Create(instrument, side, price, activationPrice, quantity, null, null, false, expirationDate);
		}
 /// <summary>
 /// Wysłanie do systemu nowego zlecenia na zakup/sprzedaż bieżącego instrumentu.
 /// <para>Preferowana metoda - zamiast "BosOrder.Create(...)" - bo od razu określa, jakiego instrumentu dotyczy.
 /// Nr rachunku, na który zostaje przeznaczone to zlecenie, wybierany jest automatycznie na podstawie typu instrumentu.</para>
 /// <para>Zobacz też sąsiednie metody: "Buy(...)" i "Sell(...)" - które od razu precyzują, czy ma to być zlecenie kupna, czy sprzedaży.</para>
 /// </summary>
 /// <param name="side">Zlecenie kupna (BosOrderSide.Buy) czy sprzedaży (BosOrderSide.Sell).</param>
 /// <param name="price">Limit ceny, jaki wstawiamy do zlecenia (BosPrice.PKC/PCR/PCRO... lub po prostu kwota).</param>
 /// <param name="activationPrice">Ewentualny limit aktywacji zlecenia (null, jeśli aktywowane od razu, bez stop'a).</param>
 /// <param name="quantity">Liczba walorów, jaką zamierzamy kupić/sprzedać.</param>
 /// <param name="minimumQuantity">Minimalna liczba walorów, jaka musi się zrealizować, albo zlecenie będzie anulowane.
 /// Podając tutaj to samo, co w polu "quantity", uzyskujemy zlecenie typu "WuA".</param>
 /// <param name="visibleQuantity">Liczba walorów ujawniana w arkuszu ofert ("WUJ").</param>
 /// <param name="immediateOrCancel">Czy to zlecenie typu "WiA" (to, co nie wykona się natychmiast, jest od razu anulowane).</param>
 /// <param name="expirationDate">Data ważności zlecenia (null, jeśli tylko na bieżącą sesję).</param>
 public void Order(BosOrderSide side, BosPrice price, decimal?activationPrice,
                   uint quantity, uint?minimumQuantity, uint?visibleQuantity, bool immediateOrCancel, DateTime?expirationDate)
 {
     BosOrder.Create(this, side, price, activationPrice,
                     quantity, minimumQuantity, visibleQuantity, immediateOrCancel, expirationDate);
 }