/
order.pretty-printed.sc
106 lines (97 loc) · 5.27 KB
/
order.pretty-printed.sc
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
@category = "Order"
package order() {
// defined at defs\order.sc: 12.5
/** Factory creating market orders
*
* Market order intructs buy or sell given volume immediately
*/
@python.order.factory("order.market.Order_Impl")
def Market(/** function defining side of orders to create */ side = side.Sell(),
/** function defining volume of orders to create */ volume = constant(1.0)) : IOrderGenerator
// defined at defs\order.sc: 23.5
/** Factory creating limit orders
*
* Limit orders ask to buy or sell some asset at price better than some limit price.
* If a limit order is not competely fulfilled
* it remains in an order book waiting to be matched with another order.
*/
@python.order.factory("order.limit.Order_Impl")
def Limit(/** function defining side of orders to create */ side = side.Sell(),
/** function defining price of orders to create */ price = constant(100.0),
/** function defining volume of orders to create */ volume = constant(1.0)) : IOrderGenerator
// defined at defs\order.sc: 38.5
/** Factory creating fixed budget orders
*
* Fixed budget order acts like a market order
* but the volume is implicitly given by a budget available for trades.
* Internally first it sends request.EvalVolumesForBudget
* to estimate volumes and prices of orders to sent and
* then sends a sequence of order.ImmediateOrCancel to be sure that
* cumulative price of trades to be done won't exceed the given budget.
*/
@python.order.factory("order.meta.fixed_budget.Order_Impl")
def FixedBudget(/** function defining side of orders to create */ side = side.Sell(),
/** function defining budget on which it may send orders at one time */ budget = constant(1000.0)) : IOrderGenerator
// defined at defs\order.sc: 54.5
/** Factory creating Immediate-Or-Cancel orders
*
* Immediate-Or-Cancel order sends an underlying order to the market and
* immediately sends a cancel request for it.
* It allows to combine market and limit order behaviour:
* the order is either executed immediately
* at price equal or better than given one
* either it is cancelled (and consequently never stored in the order queue).
*/
@python.order.factory("order.meta.ioc.Order_Impl")
def ImmediateOrCancel(/** factory for underlying orders */ proto = Limit()) : IOrderGenerator
// defined at defs\order.sc: 68.5
/** Factory creating StopLoss orders
*
* StopLoss order is initialised by an underlying order and a maximal acceptable loss factor.
* It keeps track of position and balance change induced by trades of the underlying order and
* if losses from keeping the position exceed certain limit (given by maximum loss factor),
* the meta order clears its position.
*/
@python.order.factory("order.meta.stoploss.Order_Impl")
def StopLoss(/** maximal acceptable loss factor */ maxloss = constant(0.1),
/** underlying orders to create */ proto = Limit()) : IOrderGenerator
// defined at defs\order.sc: 82.5
/** Factory creating WithExpiry orders
*
* WithExpiry orders can be viewed as ImmediateOrCancel orders
* where cancel order is sent not immediately but after some delay
*/
@python.order.factory("order.meta.with_expiry.Order_Impl")
def WithExpiry(/** expiration period for orders */ expiry = constant(10.0),
/** underlying orders to create */ proto = Limit()) : IOrderGenerator
// defined at defs\order.sc: 94.5
/** Factory creating iceberg orders
*
* Iceberg order is initialized by an underlying order and a lot size.
* It sends consequently pieces of the underlying order of size equal or less to the lot size
* thus maximum lot size volume is visible at the market at any moment.
*/
@python.order.factory("order.meta.iceberg.Order_Impl")
def Iceberg(/** maximal size of order to send */ lotSize = constant(10.0),
/** underlying orders to create */ proto = Limit()) : IOrderGenerator
// defined at defs\order.sc: 107.5
/** Factory creating orders with floating price
*
* Floating price order is initialized by an order having a price and an observable that generates new prices.
* When the observable value changes the order is cancelled and
* a new order with new price is created and sent to the order book.
*/
@python.order.factory("order.meta.floating_price.Factory_Impl")
def FloatingPrice(/** observable defining price of orders to create */ floatingPrice = const(10.0),
/** underlying orders to create */ proto = price.Limit()) : IOrderGenerator
// defined at defs\order.sc: 120.5
/** Factory creating Peg orders
*
* A peg order is a particular case of the floating price order
* with the price better at one tick than the best price of the order queue.
* It implies that if several peg orders are sent to the same order queue
* they start to race until being matched against the counterparty orders.
*/
@python.order.factory("order.meta.peg.Factory_Impl")
def Peg(proto = price.Limit()) : IOrderGenerator
}