Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9540a15585 | ||
|
|
e8a467d5f1 | ||
|
|
61556eb534 |
No files matched your search
@@ -4,6 +4,12 @@ weight = 3
|
||||
sort_by = "weight"
|
||||
insert_anchor_links = "right"
|
||||
+++
|
||||
## 2.0.5
|
||||
### User Visible Changes
|
||||
- Fixed a bug in the handling of rejected QHO orders
|
||||
- Implemented stricter position limit enforcement
|
||||
- Fixed a bug that could cause server failure when trying to attach to already attached orders
|
||||
|
||||
## 2.0.4
|
||||
### User Visible Changes
|
||||
- Fixed performance regression in order manager
|
||||
|
||||
@@ -207,7 +207,12 @@ OrderOpResult OrderServices::check_is_attachable() {
|
||||
// have either no parent or a dead parent.
|
||||
if (_owner->parent_key() != null_order_key()) {
|
||||
auto current_parent = _data->owner.lookup_order(_owner->parent_key());
|
||||
bts_assert(current_parent);
|
||||
|
||||
// If we cannot find a parent that must mean the parent was
|
||||
// removed by the order clean up process so it must be dead and
|
||||
// therefore its fine to attach
|
||||
if (current_parent == nullptr)
|
||||
return OrderOpResult{};
|
||||
|
||||
switch (current_parent->status()) {
|
||||
case ORDER_STATUS_PENDING_WORKING:
|
||||
|
||||
@@ -445,6 +445,7 @@ OrderOpResult NativeOrder::on_activate(Price p, Quantity q,
|
||||
// Early return so we skip the expensive report_state()
|
||||
// call. It is OK to spkip it because we are bound to report
|
||||
// our state once the excange aknowledges the order.
|
||||
update_working_position();
|
||||
return OrderOpResult{};
|
||||
}
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ bool QHOWorkingStateWorker::_analyze_moving_out(){
|
||||
QueueHolderOrder::TerminationReason::UNEXPECTED_CHILD_CANCEL);
|
||||
return true;
|
||||
}
|
||||
if(order_man.has_cancelled_order()){
|
||||
if(order_man.has_errored_order()){
|
||||
_porder->_cancel_order(QueueHolderOrder::TerminationReason::CHILD_ERROR);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -82,6 +82,13 @@ OrderOpResult SpreaderOrder::on_update(Price price, Quantity quantity){
|
||||
_report_state();
|
||||
return OrderOpResult {};
|
||||
}
|
||||
OrderOpResult SpreaderOrder::on_update(const api::orderman::Update& update){
|
||||
if(update.has_custom())
|
||||
return OrderOpResult{api::orderman::ORDER_ERROR_INVALID_OP,
|
||||
"Spreader parameter update is not supported"};
|
||||
else
|
||||
return on_update(Price(update.price()),Quantity(update.quantity()));
|
||||
}
|
||||
OrderOpResult SpreaderOrder::on_cancel(){
|
||||
if (!_active) return OrderOpResult{api::orderman::ORDER_ERROR_OP_NOT_SUPPORTED};
|
||||
LOG(OrderMan, Info, "SpreaderOrder.on_cancel key:{}", key().value());
|
||||
|
||||
@@ -115,6 +115,9 @@ public:
|
||||
// called when the user (or a higher level order)
|
||||
// updates the order's price or quantity
|
||||
OrderOpResult on_update(Price, Quantity) override;
|
||||
// called when the user (or a higher level order)
|
||||
// updates the order's params (including possibly price or quantity)
|
||||
OrderOpResult on_update(const api::orderman::Update&) override;
|
||||
// called when the user (or higher level order) cancels an order
|
||||
OrderOpResult on_cancel() override;
|
||||
// detach means to let the lower level orders lose from the higher
|
||||
|
||||
@@ -1 +1 @@
|
||||
set(sources ../../externals/linux/include/google/protobuf/descriptor.proto;../../externals/linux/include/google/protobuf/timestamp.proto;../lib/api/apicore.proto;../lib/api/apigateway.proto;../lib/api/apioptions.proto;../lib/api/services/AdminService.proto;../lib/api/services/AlgoDefinitionService.proto;../lib/api/services/AlgoService.proto;../lib/api/services/ApiUnitTestService.proto;../lib/api/services/AuthService.proto;../lib/api/services/ErrorReportService.proto;../lib/api/services/HelloService.proto;../lib/api/services/MBOService.proto;../lib/api/services/MarketDataAuxiliaryService.proto;../lib/api/services/MarketDataRelay.proto;../lib/api/services/OrderService.proto;../lib/api/services/OutOfProcessURLListener.proto;../lib/api/services/PersistenceService.proto;../lib/api/services/PositionService.proto;../lib/api/services/ShellDiagnosticService.proto;../lib/api/services/ShellLatencyService.proto;../lib/api/services/SyntheticSecurityService.proto;../lib/domain_model/Security.proto;../lib/md/protos/co2.proto;../lib/sparkproto/SparkProtos.proto;api/build.sh;api/node_modules/exit/test/fixtures/create-files.sh;api/node_modules/protobufjs/cli/node_modules/acorn-jsx/node_modules/acorn/bin/update_authors.sh;api/node_modules/watch/release.sh;api/quiet_build.sh;api/src/DynamicService.ts;api/src/ServiceContext.ts;api/src/bts_assert.ts;ui/src/Access.fs;ui/src/Accounts/ClipLimits.fs;ui/src/Accounts/ProductLimits.fs;ui/src/Accounts/SecurityLimits.fs;ui/src/Accounts/State.fs;ui/src/Accounts/Types.fs;ui/src/Accounts/View.fs;ui/src/App.fs;ui/src/Cmd.fs;ui/src/Controls/Button.fs;ui/src/Controls/DataGrid.fs;ui/src/Controls/Fields.fs;ui/src/Controls/Modal.fs;ui/src/Controls/ReactGrid.fs;ui/src/Controls/Table.fs;ui/src/Controls/nbsp.fs;ui/src/Global.fs;ui/src/Imports.fs;ui/src/Lens.fs;ui/src/Login/Login.fs;ui/src/Nav.fs;ui/src/State.fs;ui/src/Types.fs;ui/src/Users/State.fs;ui/src/Users/Types.fs;ui/src/Users/View.fs;ui/src/Util/EnumUtils.fs;ui/src/Util/JSMap.fs;ui/src/obj/Debug/netstandard2.0/ui.AssemblyInfo.fs)
|
||||
set(sources ../../externals/linux/include/google/protobuf/descriptor.proto;../../externals/linux/include/google/protobuf/timestamp.proto;../lib/api/apicore.proto;../lib/api/apigateway.proto;../lib/api/apioptions.proto;../lib/api/services/AdminService.proto;../lib/api/services/AlgoDefinitionService.proto;../lib/api/services/AlgoService.proto;../lib/api/services/ApiUnitTestService.proto;../lib/api/services/AuthService.proto;../lib/api/services/ErrorReportService.proto;../lib/api/services/HelloService.proto;../lib/api/services/MBOService.proto;../lib/api/services/MarketDataAuxiliaryService.proto;../lib/api/services/MarketDataRelay.proto;../lib/api/services/OrderService.proto;../lib/api/services/OutOfProcessURLListener.proto;../lib/api/services/PersistenceService.proto;../lib/api/services/PositionService.proto;../lib/api/services/ShellDiagnosticService.proto;../lib/api/services/ShellLatencyService.proto;../lib/api/services/SyntheticSecurityService.proto;../lib/domain_model/Security.proto;../lib/md/protos/co2.proto;../lib/sparkproto/SparkProtos.proto;api/build.sh;api/node_modules/cssstyle/scripts/run_tests.sh;api/node_modules/exit/test/fixtures/create-files.sh;api/node_modules/protobufjs/cli/node_modules/acorn-jsx/node_modules/acorn/bin/update_authors.sh;api/node_modules/watch/release.sh;api/quiet_build.sh;api/src/DynamicService.ts;api/src/ServiceContext.ts;api/src/bts_assert.ts;ui/src/Access.fs;ui/src/Accounts/ClipLimits.fs;ui/src/Accounts/ProductLimits.fs;ui/src/Accounts/SecurityLimits.fs;ui/src/Accounts/State.fs;ui/src/Accounts/Types.fs;ui/src/Accounts/View.fs;ui/src/App.fs;ui/src/Cmd.fs;ui/src/Controls/Button.fs;ui/src/Controls/DataGrid.fs;ui/src/Controls/Fields.fs;ui/src/Controls/Modal.fs;ui/src/Controls/ReactGrid.fs;ui/src/Controls/Table.fs;ui/src/Controls/nbsp.fs;ui/src/Global.fs;ui/src/Imports.fs;ui/src/Lens.fs;ui/src/Login/Login.fs;ui/src/Nav.fs;ui/src/State.fs;ui/src/Types.fs;ui/src/Users/State.fs;ui/src/Users/Types.fs;ui/src/Users/View.fs;ui/src/Util/EnumUtils.fs;ui/src/Util/JSMap.fs;ui/src/obj/Debug/netstandard2.0/ui.AssemblyInfo.fs)
|
||||
Reference in new issue
Block a user