/// <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. /// <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 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 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. /// 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="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 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. /// <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 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); }