Compare commits

...
Author SHA1 Message Date
John Colvin 259c78f067 cleanup: Remove empty file (clearly added by accident) 2024-02-08 19:04:13 -06:00
John Colvin 0dd55a26f1 cleanup: Remove superfluous 'daemon' arg check
This arg doesn't seem to have a purpose. It was prob leftover from
testing or something
2024-02-08 19:04:13 -06:00
John Colvin 63e6f69fa6 cleanup: Remove redundant 'provide_command_line' call
'Configuration.initialize' already does this
2024-02-08 19:04:13 -06:00
John Colvin 21c9a36cce cleanup: Use top level statements in PubSubServer
This is the way
2024-02-08 19:04:13 -06:00
John Colvin 7a6e9bc3c8 fix rem locator 2024-02-08 19:04:12 -06:00
John Colvin d09ed6a8dd Add more descriptive logs (via stdout) during initialization
The C++ configure/initialize routines were particularly opaque
2024-02-08 19:04:12 -06:00
John Colvin 9382807fe8 fix: Fix improper 'OfType' linq cast
Previously, animations were expressed through polymorphism (derived from the
base class CellAnimation), but the new impl uses composition. This 'OfType' call
was leftover from the polymorphism implementation, an attempt to linq cast
elements of base class (CellAnimation) to BackgroundAnimation.
2024-02-08 19:04:12 -06:00
John Colvin 131640e3d8 cleanup: Remove static service Locator class
It relied on a static singleton 'ServiceContext'. Replace references with a
properly scoped (i.e., non-static) ServiceContext
2024-02-08 19:04:12 -06:00
John Colvin 397f21a90a refactor: Reduce code (simplify) in BTS.init
Remove the 'args' parameter, since the cmd line can be obtained from
Environment.GetCommandLine anyways
2024-02-08 19:04:12 -06:00
John Colvin db90f6f7b9 Add proper cli to DataStreamPublisher
Using CommandLineParser nuget pkg
2024-02-08 19:04:12 -06:00
John Colvin c187e6ce0e check point (bc i don't trust googledrive sync yet) 2024-02-08 19:04:12 -06:00
John Colvin b6d13002d6 gitpod: Install pcap 2024-02-08 19:04:12 -06:00
John Colvin 7fdc408cf8 gitpod: Install all deps in the same 'init' cmd
Otherwise, these procs run in parallel in different terminals, which is jarring
to watch. Furthermore, installing deps in parallel stress-tests the apt package
manager, and is likely not the way it was intended to be used.
2024-02-08 19:04:12 -06:00
John Colvin 74048ec221 gitpod: Install ssh 2024-02-08 19:04:12 -06:00
John Colvin 8a14648d01 gitpod: Install lttng
For diagnostic tracepoints
2024-02-08 19:04:12 -06:00
John Colvin 4e9da4e943 gitpod: Install rapidjson
Emumba's deribit-connector lib depends on this
2024-02-08 19:04:12 -06:00
John Colvin 38b2ac362a gitpod: Install ccache 2024-02-08 19:04:12 -06:00
John Colvin dc73796987 gitpod: Activate python venv with bash script (not fish) 2024-02-08 19:04:12 -06:00
John Colvin 231bc346ae gitpod: Use docker image 'gitpod/dotnet'
This should have everything we need, including dotnet 8!
2024-02-08 19:04:12 -06:00
John Colvin 8361f33af2 gitpod: Remove unnecessary 'if' checks in init cmds 2024-02-08 19:04:12 -06:00
John Colvin 2c95a5f8b8 externals: Change repo url to use read-only access token 2024-02-08 19:04:12 -06:00
John Colvin 7e4bc590e7 dev: Fix gitpod.yml (prepend img w/ dockerhub url) 2024-02-08 19:04:12 -06:00
John Colvin 2d88ac3894 dev: Add gitpod.yml for cloud workspaces 2024-02-08 19:04:11 -06:00
John Colvin d4f02480df DataStreamCore Json stuff 2024-02-08 19:04:11 -06:00
John Colvin b0d90fc0e2 Tweak Bts.DataStream.Websocket DataSync, etc. 2024-02-08 19:04:11 -06:00
John Colvin e54628fda7 Remove unused 'JsonRpcErrorCode'? 2024-02-08 19:04:11 -06:00
John Colvin 240c4e8661 Add/modify JsonRpc stuff 2024-02-08 19:04:11 -06:00
John Colvin 1b7e54e334 Fix JsonExtensions? 2024-02-08 19:04:11 -06:00
John Colvin 55f9b3c8dc fix: Fix erroneous lock usage 2024-02-08 19:04:11 -06:00
John Colvin 30bbf9550d refactor: Add handy WebsocketExtensions
* IsSocketStateOpen
* IsClosedProperly
2024-02-08 19:04:11 -06:00
John Colvin 5c0fa54089 editorconfig: Use standard c# capitalization rules
* Use 'PascalCase' for public members (instead of 'snake_case')
* Use 'camelCase' for private members (instead of '_snake_case')
2024-02-08 19:04:11 -06:00
John Colvin 22af2d6777 build: Remove version part of RuntimeIdentifiers
This fixes a warning that arose as a side effect from upgrading to net8.0
2024-02-08 19:04:11 -06:00
John Colvin d0bed28278 docker: Fix clang-17 2024-02-08 19:04:11 -06:00
John Colvin 4fca5f4df5 docker: Install gdb (for c++ debugging)
VS Code debugger depends on this
2024-02-08 19:04:11 -06:00
John Colvin 370d84432d build: Upgrade DataStreamWebsocketClient/Server to net8.0 2024-02-08 19:04:11 -06:00
John Colvin 9f9274ae30 build: Upgrade ExpressionTests/Tester to net8.0 2024-02-08 19:04:11 -06:00
John Colvin 2590e2bbb0 docker: Remove kitware 'rc' (release candidate) apt repo
No reason to keep it. Probably shouldn't have been added in the first place
2024-02-08 19:04:11 -06:00
John Colvin c9a1c908e1 docker: Make clang-17 the default clang 2024-02-08 19:04:11 -06:00
John Colvin e6ed3931f9 docker: Install clang 17 2024-02-08 19:04:11 -06:00
John Colvin 377dafdf3b build: Upgrade c# to net8.0 (DataStreamSuite) 2024-02-08 19:04:11 -06:00
John Colvin a617227417 check pt: Before going to Chi (11/07/23, random scripts, etc.) 2024-02-08 19:04:10 -06:00
John Colvin 1fb3b88c31 check pt: Before going to Chi (11/07/23) 2024-02-08 19:04:10 -06:00
John Colvin 5ccdaae235 add util: StringStreamEnumerable 2024-02-08 19:04:10 -06:00
John Colvin 56675e3aa4 add websocket server config, README 2024-02-08 19:04:10 -06:00
John Colvin 6c139a42e3 refactor: Change WebsocketServerConfig.port to uint32
It should always be a number between 1-65535
2024-02-08 19:04:10 -06:00
John Colvin 70f8085980 feat: Add Bts.DataStream.Websocket/Server 2024-02-08 19:04:10 -06:00
John Colvin 8db13cfeb2 refactor: Add WebsocketGatewayObservable
An IObservable wrapper for IWebsocketConnectionGateway
2024-02-08 19:04:10 -06:00
John Colvin fc1ea873dd refactor: Remove nullability constraint in GetValueOrDefault 2024-02-08 19:04:10 -06:00
John Colvin 6db0306a18 refactor: Use events to avoid circular deps for ws sync/gateway 2024-02-08 19:04:10 -06:00
John Colvin 1356db8906 refactor: Let caller specify nullability of T in json parse fn 2024-02-08 19:04:10 -06:00
John Colvin 7f1ee5c363 refactor: Get rid of redundant UniversalNumericComparer 2024-02-08 19:04:10 -06:00
John Colvin 8084063976 refactor: Reorganize NumericComparer, support all types 2024-02-08 19:04:10 -06:00
John Colvin 649eca98f1 DataStreamWebApp check pt (works w/ default launchProfile) 2024-02-08 19:04:10 -06:00
John Colvin 9f9bb65eff feat: Add JsonRpc types for websocket paradigm 2024-02-08 19:04:10 -06:00
John Colvin f43e3de5bb Some ish that works (datastream webapp) 2024-02-08 19:04:09 -06:00
John Colvin 48e3cf844d Add reference to spark_api for datastream web server 2024-02-08 19:04:09 -06:00
John Colvin 914b5b5ebf docker: Update default compiler versions
Via update-alternatives
2024-02-08 19:04:09 -06:00
John Colvin 998ca2690b cleanup: Remove leftover legacy files 2024-02-08 19:04:09 -06:00
John Colvin 04721f6248 build: Upgrade c# to net8.0 (spark_websocket, Spark.Admin.WebApp) 2024-02-08 19:04:09 -06:00
John Colvin 622729bf1b docker: Upgrade dotnet 7 -> 8 2024-02-08 19:04:09 -06:00
John Colvin 5cd8ad79a3 Check pt before trip to NC 2024-01-18 2024-02-08 19:04:09 -06:00
John Colvin 133261fc41 build: Upgrade c# to net8.0 2024-02-08 19:04:09 -06:00
John Colvin 0f66ffec53 Add bones for Bts.DataStreamWebApp.Client 2024-02-08 19:04:09 -06:00
John Colvin e09debe58a Add bones for Bts.DataStreamWebApp.Server 2024-02-08 19:04:09 -06:00
John Colvin 9212c6d097 Line ending changes in yacc/lex generated code
I recently upgrade the YaccLexTools nuget to 1.2.2, perhaps these new
line endings are related to that.
2024-02-08 14:28:36 -06:00
John Colvin 8660dea85a build: Downgrade new DataStream code from net8 -> net7
The AddColumnsStream, SortStream, and requisite yacc/lex grammar were
originally added to a new branch, off of development, which is on net8.
I forgot to change it to net7 when I cherry-picked the commits for the
regular development branch.

It's wasn't quite as simple as flipping net8 -> net7 in csproj files,
because I was eager to use new language features only available in net8!
Namely, primary constructors and collection expressions.
2024-02-08 14:24:31 -06:00
John Colvin d0ddc1d57b Resurrect SortStream
Add ColumnSortExpressions grammar (lex/yacc)
2024-02-08 10:04:53 -06:00
John Colvin fe1e953030 Resurrect AddColumnStream
Add ColumnExpressions grammar (lex/yacc)
2024-02-08 10:04:53 -06:00
John Colvin dab17af5a9 build: Upgrade YaccLexTools to 1.2.2 2024-02-08 00:51:16 -06:00
John Colvin 7fb7b1e4af Fix PriceStatsStream
* Store subscription IDisposable in class (we need to control the life of the subscription)
* Flip typo '_dirty = false' -> '_dirty = true'
2024-02-04 22:14:00 -06:00
John Colvin bc5bcbf11e fix: Bootstrap MarketDataClient.price_ticker/stats w/ init state
Bugs (fixed):
  * MarketDataClient.price_ticker, and price_stats streams don't fire update
    with initial state (they only tick as subsequent changes are observed)
2024-02-04 15:33:20 -06:00
Taha Afzal 287ee291cc Adding a stream that send a TCP packet to the echo server and monitors the n_sends and n_recvs 2024-01-25 13:37:41 -05:00
Taha Afzal 2bceda01ae Added code in BlueDataUtility to create schema from data 2024-01-22 16:28:23 -05:00
John Colvin c39a270115 fix: Support all exchs in QueryServer::get_names 2024-01-17 11:15:01 -05:00
Taha Afzal 6e3f9f99c0 Merge branch 'development' of bitbucket.org:bluetradesys/spark into development 2024-01-17 10:08:17 -05:00
John Colvin b53d9d7d4c refactor: Remove 'Platform' (md source) config
Good riddance. Improper 'PlatformMap' config was often the reason market
data mysteriously wouldn't show up in the client. Especially with new
exchanges. We should keep all md source/connection configuration in one
place (one proto message), to avoid any confusion.
2024-01-17 01:42:57 -05:00
Taha Afzal cc3e289345 KeyValueToRelationalStream added 2024-01-16 19:08:40 -05:00
John Colvin 60a8b4f8c7 Gitignore all .tmp dirs (at any level) 2024-01-15 13:34:35 -05:00
John Colvin c5e0a93869 Gitignore all .venv* dirs (at any level) 2024-01-15 13:33:05 -05:00
John Colvin 3a3216421b Remove unnecessary file temp.cpp 2024-01-15 13:33:05 -05:00
Taha Afzal 8cbbbc6da3 Merging 2024-01-13 23:45:51 -05:00
John Colvin 25117c5bb7 Append application name to "logging" dir
So we can run datastream procs alongside sparkd on the same machine without
log file conflicts
2024-01-12 14:22:02 -05:00
John Colvin 8c95b43524 devcontainer: Name mount dir w/ 'devcontainerId'
To ensure it is unique on the main host (i.e., outside the container). Get rid
of devcontainer_initialize.sh, all it did was run "mkdir". Something this
trivial can be inlined in the devcontainer.json (less indirection this way).
2024-01-12 11:41:40 -05:00
John Colvin 1324e2aad1 Gitignore the '.devcontainer' dir (not the json file)
We actually do track a 'devcontainer.json' file (to keep as a template). We
just don't keep it in the '.devcontainer' dir, for the same reason we don't
track the '.vscode' dir: so devs can tailor it to their specific needs.
2024-01-12 11:41:40 -05:00
John Colvin 6fad8b754b docker: Install kitware-archive-keyring to keep key in sync (for cmake) 2024-01-12 11:41:40 -05:00
Taha Afzal f872fe9d56 AsyncTCPConnection_APM.cs now send onData with Disconnection if it detects teh other side has ShutDown 2024-01-11 17:02:41 -05:00
Taha Afzal d50e8cda50 Adding AsyncTCPConnectionAcceptor_APM and AsyncTCPConnector_APM to create ITCPConnection 2024-01-11 16:10:51 -05:00
Taha Afzal 694f8b8d11 AsyncTCPConnection_APM works now 2024-01-09 14:34:15 -05:00
Taha Afzal 047267ad1b AsyncTCPConnection_APM completed (not hooked yet) 2024-01-06 11:34:46 -05:00
Taha Afzal 5b4b41d4eb Adding MongoDB astream integration 2024-01-02 00:44:52 -05:00
Taha 3e25b4918f Adding 3 AsyncTCPCOnnections for APM, TAP, and SocketAsyncEventArgs 2024-01-02 00:43:40 -05:00
Taha Afzal 1ceea4af5a Changing TCPUtils to use SocketAsyncEventArgs instead of TAP functions, simple client<->server works with echoing messages 2023-12-20 11:32:53 -05:00
Taha Afzal cdc7da8c59 Adding sec_name col to bbo 2023-12-18 12:57:04 -05:00
Taha Afzal f1e26b984a Merge branch 'development' of bitbucket.org:bluetradesys/spark into development 2023-12-18 12:42:35 -05:00
Taha Afzal a7189628b1 Adding EMA, SMA and RenkoStreams 2023-12-18 12:42:14 -05:00
John Colvin 32433577ec fix build (client): Move a few includes inside 'if' ppd 2023-12-14 11:31:31 -05:00
John Colvin ed5ef1b7c4 fix build: Remove a few RequiresPreviewFeatures attrs
Features which are now standard in .Net
2023-12-14 11:16:19 -05:00
Mohammad Arham ac7c38d0e2 Merge branch 'development' of bitbucket.org:bluetradesys/spark into development 2023-12-13 21:06:41 -08:00
Mohammad Arham b887f90b99 added book levels to mdrecorder 2023-12-13 21:06:19 -08:00
John Colvin 9a0ef90700 fix build (windows): Update fmt to v10.1.1
Manage this dep with vcpkg now (instead of externals)
2023-12-13 13:27:29 -05:00
John Colvin 5086e81578 build: Add vcpkg as submodule 2023-12-13 12:34:14 -05:00
Mohammad Arham 2230f8d748 emty string can also be default linfopath 2023-12-11 06:49:34 -08:00
Mohammad Arham 1fa66f4815 defaults updated to make glbx work on onix 2023-12-11 06:47:49 -08:00
Mohammad Arham e5d19ceb8d assert if channerls per thread < 1 2023-12-11 06:47:03 -08:00
Mohammad Arham edda571509 added glbx config just to enable glbx 2023-12-11 06:45:36 -08:00
Mohammad Arham 55f20e5a09 Added entry for cme/onix in mdgateway 2023-12-11 06:43:05 -08:00
Taha Afzal 619b49ee6c Changing the stream subscription structure 2023-11-15 12:30:43 +00:00
Taha Afzal ab32055416 Adding C++ stream tables (and tests) 2023-11-14 21:53:54 +00:00
Taha Afzal 2ae3ded65e src/DataStreamSuite/DataStream/Primitives/FileStreams/PlaybackStream.cs 2023-11-14 18:15:53 +00:00
Taha Afzal 4acb1e268a Merging 2023-11-14 18:14:18 +00:00
Mohammad Arham d45c79c44b Merge branch 'development' of bitbucket.org:bluetradesys/spark into development 2023-11-02 07:46:49 -07:00
John Colvin cba32be99d fix build: Use relative path in csproj references
The build was broken because Spark.csproj was looking for SharedStreams
at some hardcoded path on taha's comp
2023-10-26 14:37:56 -04:00
John Colvin 292fa54dda fix: Get rid of hardcoded path to dll
Use Assembly.Location instead

Bugs (fixed):
  * PubSubServer throws an exception on startup because it can't find
    dll at hardcoded path
2023-10-26 14:31:20 -04:00
John Colvin 3b059ebdfa fix: Format arguments properly in DataStream code gen
Previously, all arguments were formatted as "Bts.DataStream.Argument"
(from the default ToString)
2023-10-26 14:24:32 -04:00
John Colvin d0d3c9de4e feat: Allow line-comments in DataStream parser
Supports c#/c++ style line comments (i.e., that begin with '//')

TODO: block comments
2023-10-26 12:59:44 -04:00
John Colvin 633163518a fix: Fix divide token typo (should be fwd slash) 2023-10-26 12:59:44 -04:00
John Colvin 0a466052e0 cleanup: Remove old submodules (again)
* docker/linux
* docker/windows
2023-10-26 10:52:15 -04:00
John Colvin 7e139ddf0a cleanup: Remove old submodule docker\linux (again) 2023-10-26 10:48:47 -04:00
John Colvin dcac260efe fix (hack): Pass lines as array to cloud stream
Rather than a single multi-line string. This hack will have to do
until we implement multi-line strings in the parser.
2023-10-25 17:42:59 -04:00
Taha 81ea106ce3 Fixing the DSQA query box font color 2023-10-23 15:18:44 -04:00
Taha 88bf04e5f1 TimeSeries and TimeBucketStreams, Stream offloading etc 2023-10-23 14:18:31 -04:00
Taha 33030b1212 Market data streams work now 2023-10-16 00:01:29 -04:00
Taha 140c0c4152 MDStream uses MarketDataClient instead of MDConsumer now 2023-10-03 18:35:23 -04:00
Taha 7d63718602 MDStream uses MarketDataClient instead of MDConsumer now 2023-10-03 18:35:23 -04:00
John Colvin 9cb94fabdb fix: Add cross-type NumericComparer for BooleanExpressions
Bugs (fixed):
   * FilterStream throws exception when comparing numeric arguments
2023-10-02 22:02:35 -04:00
John Colvin e37a39f9fc chore: Add SharedStreams to default loaded assemblies cfg 2023-10-02 21:03:54 -04:00
John Colvin 7e307504cb chore: Remove redundant reference from csproj 2023-10-02 20:53:26 -04:00
John Colvin d01809e49c refactor: Move ProtoHelper to spark_api
So it can be used by other csprojs (was previously stuck in Spark)
2023-10-02 20:45:32 -04:00
John Colvin 292ed2dc0e refactor: Convert WebsocketServerParams to proto 2023-10-02 20:45:32 -04:00
John Colvin 623fce6e8f build: Enable nullable in proto generated cs 2023-10-02 20:45:32 -04:00
John Colvin 7d6d4c03b0 build: Update IronPython to v3.4.1 2023-10-02 20:45:32 -04:00
John Colvin 4962556a6c build: Update protobuf-net to v3.2.26
Also update System.Collections.Immutable to v7.0.0 to new deps
2023-10-02 20:45:32 -04:00
John Colvin 5ad9d9a0e6 build: Update System.Reactive to v6.0.0 2023-10-02 20:45:12 -04:00
John Colvin a091a95f50 build: Add .cmd wrapper script for build_data_stream.py 2023-10-02 19:38:38 -04:00
John Colvin 0bd06da929 build: Upgrade Google.Protobuf to 3.24.3
Now all csprojs are on the same Google.Protobuf version. Previously,
DataStreamSuite projs were on this (newer) version, while Spark projs
were on 3.21.12
2023-10-02 19:38:38 -04:00
Taha af9dd0c1fe PubSub Streams to get list of tags etc 2023-10-02 19:38:38 -04:00
John Colvin fd9eaa65ed build: Add script to build DataStreamSuite and cpp deps 2023-09-30 13:54:58 -04:00
John Colvin 1c744329e5 chore: Add SharedStreams.csproj bones 2023-09-30 13:08:03 -04:00
Taha f8c9148609 Adding tests 2023-09-30 12:59:02 -04:00
Taha fa4da63c24 Streams can be published across PubSub now 2023-09-30 12:59:02 -04:00
Taha 7bb7f1a5e2 PubSub is working now 2023-09-30 12:53:51 -04:00
Taha 3fa37397d9 AsyncTCPCOnnection2 done 2023-09-30 12:52:37 -04:00
Taha d75f97ba1f Both SImpleTCPClient and SimpleTCPServer use non async calls now 2023-09-30 12:52:37 -04:00
Taha 404698152e Merging, and adding test project 2023-09-30 12:52:37 -04:00
John Colvin 9311c27f47 feat: Resurrect DataStream primitives
They were originally commented out because the expression parsing utils
weren't ready (now they are).
2023-09-29 13:10:50 -04:00
John Colvin 1dfc028554 fix (temp): Comment out TestPublisher in Program.Main 2023-09-29 13:10:50 -04:00
John Colvin 931c681174 fix build (DataStreamSuite): Change path sep to '\' in Build.targets
Csharp protobuf generation was failing, albeit inconsistently, with a
mysterious error message about normalizing relative/absolute paths.
2023-09-29 13:10:50 -04:00
John Colvin f4568c3bb7 docker: Fix typo in README 2023-09-29 13:10:50 -04:00
John Colvin 126e3571df docker: Restructure/clean up Dockerfile
Break up large RUN steps (where many apt pkgs are installed at once) to
smaller incremental ones. If 'docker build' fails on a particular RUN
step, it can be re-run from the last successful step, so smaller steps
better preserve progress.
2023-09-29 13:10:49 -04:00
John Colvin 6759ce3a2d docker: Install latest cmake & node
The versions in the default apt repo are too old (need cmake >= 3.23,
node >= 16.0.0)
2023-09-29 13:10:49 -04:00
John Colvin 300a9b4eff docker: Use ubuntu:latest instead of transient 22.10
'latest' guarentees we're on an LTS release
2023-09-29 13:10:49 -04:00
John Colvin 52bb54252d gitignore: Add *.Generated.cs, *.lst
The Yacc code generator emits these files
2023-09-29 13:10:49 -04:00
John Colvin b416209ca7 refactor: Add DataStream cfg protos
Translated from Edge config
2023-09-29 13:10:49 -04:00
John Colvin bcd8aa3d80 refactor: Return fake data from myGetAllTagsStream
Until we port the actual impl from Edge
2023-09-29 13:10:49 -04:00
John Colvin ed0be9162b refactor: Move PrimitiveManager to DataStreamCore
So DSQA can reference it
2023-09-29 13:10:49 -04:00
John Colvin 54a6dca401 chore: Clean up leftover DataStreamGrammar dir 2023-09-29 13:10:49 -04:00
John Colvin 248e37577f feat: Add DataStreamExpressions
All lex/yacc scanners/parsers are now generated with a proper dotnet
nuget pkg, YaccLexTools.

* Implements BooleanExpressionFilter with the new Parser.
2023-09-29 13:10:49 -04:00
John Colvin ac1ede5986 refactor: Move a few low-level DataStream types to DataStreamCore
So the lex/yacc generators can reference them
2023-09-29 13:10:49 -04:00
John Colvin d1f5ae86fd chore: Get rid of BooleanExpressionsInterpreter csproj 2023-09-29 13:10:49 -04:00
John Colvin 094ea67e43 feat: Impl BooleanExpressions 2023-09-29 13:10:49 -04:00
John Colvin ca95ab7a24 feat: Add ArithmeticExpressions csproj 2023-09-29 12:54:14 -04:00
John Colvin e4f276be2a refactor: Consolidate redundant HighPerformanceTimer classes
Move the one in Spark csproj to spark_core, and reference spark_core
in all the DataStreamSuite csprojs that need it.
2023-09-21 23:48:57 -04:00
John Colvin a18521674e fix: Only init static DataStreamLoadFileConfig once 2023-09-21 23:48:57 -04:00
John Colvin d366ccc9c9 fix: Add simple null check 2023-09-21 23:48:57 -04:00
John Colvin 92e4b0a793 feat: Open gui when DSQA runs 2023-09-21 23:48:57 -04:00
John Colvin 56f7518186 chore: Uncomment DataStream Primitives code
It builds now that all the deps are in place
2023-09-21 23:48:57 -04:00
John Colvin 99ff8ac8dd chore: Comment out refs to PublishedTagsStream
For the DataStream port

TODO: Port PublishedTagsStream from edge
2023-09-21 23:48:57 -04:00
John Colvin 0754b48d44 chore: Comment out refs to SitesCfg
For the DataStream port

TODO: Translate SitesCfg to protobuf to integrate w/ modern config
2023-09-21 23:48:57 -04:00
John Colvin 081e96bca6 build: Add GuiUtilities csproj
For the DataStream port (DSQA depends on this proj)
2023-09-21 23:48:57 -04:00
John Colvin 8665bfc2d2 fix build (wip): Disambiguate HighPerformanceTimer ref 2023-09-21 23:48:57 -04:00
John Colvin 725471a238 fix build: Add using System.Runtime to fix TimeSpan ref
This Windows type must have moved namespaces since the Edge days
2023-09-21 23:48:57 -04:00
John Colvin d09c6ba543 refactor: Replace outdated DataGrid refs w/ DataGridView
Windows replaced the former with the latter in dotnet core 3.1
2023-09-21 23:48:57 -04:00
John Colvin 80c4542942 refactor: Replace old BlueEventLog w/ (Spark) Log 2023-09-21 23:48:57 -04:00
John Colvin 4446eb0412 chore: Get rid of redundant DataPacket.cs 2023-09-21 23:48:57 -04:00
John Colvin 71f642aef5 chore: Progress twds building DSQA 2023-09-21 23:48:57 -04:00
John Colvin 700bc45998 chore: Add DSQA (work-in-progress) 2023-09-21 23:48:57 -04:00
John Colvin 7cc7dd652f chore: Add missing DataStreamExpression.parser(.cs) 2023-09-21 23:48:57 -04:00
John Colvin 9fdffdc648 chore: Remove redundant init calls 2023-09-21 23:48:57 -04:00
John Colvin a3406279f9 fix build: Don't inherit build props/targets in WebApp build
The Directory.Build.props/targets files were recently moved up to the
'src' dir (from 'src/client') for the new DataStreamSuite sln. Evidently
this broke the WebApp build.
2023-09-18 05:03:11 +00:00
John Colvin 3ccda24e20 fix: Add missing venue cases in AdminWebApp
Coinbase and OKX
2023-09-18 05:02:12 +00:00
John Colvin 10085a4976 fix build: Don't copy 'sparkd.lic' in cmake install tgt
This was a license file for the emumba-deribit lib. We don't need it now
that the license check has been disabled.
2023-09-17 21:20:50 +00:00
John Colvin 78f41127fe chore: Remove artifact from old web build (added by accident) 2023-09-17 20:09:59 +00:00
John Colvin 8c35d63ab8 chore: Remove empty dirs (added by accident) 2023-09-06 18:24:04 +00:00
Taha 797816be7e Merging changes 2023-09-04 16:25:40 -04:00
John Colvin c4216d2272 build: Configure DataStreamSuite cpp to only build on Windows 2023-09-03 14:16:33 -04:00
John Colvin 431dad7551 fix: Init logging/config in DataStreamPublisher entry pt 2023-09-03 14:16:33 -04:00
John Colvin 7a5025d9d9 build: Add spark_core and spark_api to DataStreamSuite sln
Although outside of the DataStreamSuite dir, they should be included
because some csprojs in the sln depend on them.
2023-09-03 13:53:07 -04:00
John Colvin cc2959249e build: Add lexer/parser.cs files to src ctrl
Move all lexer/parser files into a single dir, DataStreamGrammar, for
organizational purposes and to avoid dependency conflicts when
generating code. Note that we'll only need to regen cs if we modify the
parser/lexer files, which seems unlikely.
2023-09-03 13:53:07 -04:00
John Colvin 86a1695286 Add update-synth-strategy fn to SyntheticSecurityClient 2023-09-01 23:24:35 -04:00
John Colvin 4c1cbbe8fe build: Remove unnecessary WorkingDirectory attrs
From the GenerateLexer/Parser targets
2023-09-01 12:48:18 -04:00
John Colvin 5081153db9 fix build: Don't explicitly include generated parser/lexer cs files
Since the files are generated in the source dir (not the build dir),
they are automatically included in the build. This removes a few
warnings abt duplicate symbols.
2023-09-01 12:46:21 -04:00
John Colvin 846ed05f76 chore: Remove redundant props in nested Directory.Build.props 2023-09-01 12:40:08 -04:00
John Colvin 3e9afea40a refactor: Rename DataStream ExpressionSyntax/Parser -> Boolean
The DataStream name was causing confusion. The lexer/parser are both
part of BooleanExpressions csproj, so the Boolean name is appropriate.
2023-09-01 12:38:27 -04:00
John Colvin cfa35fb5ce fix build: Add dummy classes for DataStreamSuite 2023-09-01 01:39:15 -04:00
John Colvin 9e221cabc3 build: Add BooleanExpressionsInterpreter csproj
For the DataStream port

* Add Lexer/Parser build targets
* Update externals w/ lexer/parser generator deps
2023-09-01 01:28:40 -04:00
John Colvin 23c83c0fb6 fix: Skip 1st arg (exe-path) when parsing cmd line
This only applies to Spark.exe, where the args are obtained via
Environment.GetCommandLineArgs, rather than directly from a 'main' fn.
The former prepends the [Spark] exe path to the argv array from 'main',
which the CommandLine parser does not expect.
2023-08-29 00:31:02 -04:00
John Colvin 5368f25ed8 feat: Generate rich version w/ GitVersion.MsBuild pkg
Run one of our dotnet exes w/ '--version' to print info to console
2023-08-29 00:21:54 -04:00
John Colvin bee76289ca chore: Format csproj & fsproj files 2023-08-28 12:25:47 -04:00
John Colvin 1fcfc2886c chore: Add displayName, description to cmake preset 2023-08-24 14:40:54 +00:00
John Colvin 83c35f55a3 build: Make DataStreamSuite build cross-platform 2023-08-24 14:40:15 +00:00
John Colvin 2f9f0108ef build: Rename cmake scripts by platform client/server spec
Now that we've added another cmake preset (data-stream-suite) some
scripts (GetLinuxClient*.cmake) are shared by multiple presets.
2023-08-24 14:32:44 +00:00
John Colvin 75a1165923 build: Remove dotnet build tgt from CMakeLists
Calling 'dotnet build' from CMakeLists doesn't feel natural; it's
simpler to just run it from the cmd line, or in a script.
2023-08-24 04:22:40 +00:00
John Colvin 2d394b77f4 chore: Remove redundant flags from CMakeLists
They're already defined in CMakePresets
2023-08-24 04:22:40 +00:00
John Colvin 59e5727f71 fix build (api serv linux): Use cmake shared lib suffix var
This Makes code platform independent. The build was broken because it
 was trying to copy a ".dll" file on Linux.
2023-08-24 04:22:40 +00:00
John Colvin f5d2e98d4f fix build (api serv linux): Fix cfg in CMakePresets
The api server linux config shouldn't inherit the spark (windows)
config; no reason to tether them together.
2023-08-24 04:11:47 +00:00
John Colvin 481f33c462 fix build (api serv linux): Fix link lib typo 'fmt' -> 'fmtd' 2023-08-24 04:04:39 +00:00
John Colvin 513bbeeaae fix build (api serv linux): Revert primary ctr syntax
This is a new feat in cs lang version 12, which is only in preview mode.
Reverting the syntax change bc I couldn't get it to build on Linux.
2023-08-24 04:04:39 +00:00
John Colvin 0cade21f1d build: Remove libspark from spark_client.sln
Libspark's inclusion in the sln file has become redundant now that
its bins are copied to the dotnet build dir as part of the CMake build
process. Unlike msbuild, dotnet doesn't integrate nicely with c++. It
seems better to keep c++ projects out of the sln.
2023-08-23 02:41:35 -04:00
John Colvin 7b284b40f7 fix build: Remove problematic generator expression
Just copy libspark.dll over to the dotnet build dir for now.
TODO: additionally copy pdb file for debug builds
2023-08-23 02:39:43 -04:00
John Colvin e1b6971667 build: Greatly simplify build_spark.py
Make it a thin wrapper around dotnet/cmake clis
2023-08-23 00:46:21 -04:00
John Colvin ecbae62d07 feat: Add bones for DataStreamSuite
TODO (Taha): Migrate source files from edge
2023-08-22 15:04:08 -04:00
John Colvin 8182b4b289 dev: Simplify sparkd build instructions
Restructure in style similar to Spark and Api Server build instructions
2023-08-22 14:38:39 -04:00
John Colvin a644174601 dev: Add instructions to build spark in README 2023-08-22 14:38:39 -04:00
John Colvin cf34c13f03 build: Replace build_api_server.py w/ cmake/dotnet clis
Add instructions to build the Api Server in README
2023-08-22 14:38:39 -04:00
John Colvin 126e84e4e8 build: Remove 'jobs' arg from CMake build presets
Modern CMake uses an appropriate number of jobs by default (I believe
the number of cores on the cpu)
2023-08-22 14:38:39 -04:00
John Colvin 5ffc83a237 build: Init SPARK_ENABLE_API_SERVER reguardless of platform 2023-08-22 14:38:39 -04:00
John Colvin 3082f5c8d9 build: Only build Admin Web App on Linux 2023-08-22 14:38:39 -04:00
John Colvin f1cde451d8 build: Copy libspark to dotnet bin dirs in CMakeLists 2023-08-22 14:38:39 -04:00
John Colvin 6f0e0e5172 build: Add Spark.Api.Server to CMakePresets 2023-08-22 01:29:45 -04:00
John Colvin b2d5ab5e03 chore: Add SyntheticSecurityClient to WebsocketDataSync
TODO (Arham): Integrate SyntheticSecurityClient w/ the websocket api
2023-08-21 15:35:03 -04:00
John Colvin c3e098e27d feat: Add SyntheticSecurityClient (for websocket api) 2023-08-21 15:05:37 -04:00
John Colvin a930d2165a refactor: Move SyntheticTuple to spark_api proj
Also clean struct up a bit and rename 'SyntheticSecurityTuple'
2023-08-21 15:05:37 -04:00
John Colvin 05cdfce9ce fix: Add null checks to account for bad analytics exp params
The Spark client was throwing null ref exs after merging prod to
developement, likely because the param protos stored in db were invalid.
2023-08-11 11:42:29 -04:00
John Colvin 61c9d6b2d6 fix build: Sand rough edges after merge 2023-08-05 00:09:16 -04:00
John Colvin 7545d3fd5c Merge remote-tracking branch 'origin/spark_crypto.prod' into development 2023-08-04 13:40:04 -04:00
John Colvin 04e0297e86 refactor: Simplify 'render_piq' by using common code
No need to re-invent the 'render_cells' wheel
2023-07-31 14:50:44 -04:00
John Colvin 562706b968 fix: Don't assume ladder row-data is sorted by price
Bugs (fixed):
   * Ladder assert-crashes when rendering volume-at-price

   Cause: The render routine expected items to be sorted by price, and
   asserted as much (indirectly). In hindsight, this expectation placed
   an unnecessary burden on the caller.
2023-07-31 14:20:08 -04:00
John Colvin 4195207a71 fix: Replace non-existent StaticResource w/ BTSColor
Bugs (fixed):
   * The Activity Log window crashes immediately opened.

   Cause: WPF throws an Exception because it fails to resolve the
   StaticResources 'TextBox.BackgroundBrush', and
   'TextBox.ForegroundBrush', as they are defined in Colors.xaml, which
   is not imported by LogViewer.xaml.

   I replaced the StaticResources w/ BTSColor extension (rather than
   include Colors.xaml), because it is less error prone, and allows us
   to keep colors organized in 1 place: BTSColors.cs.

   I'm not sure how long the bug was around. It likely slipped through
   the cracks because the ActivityLog window isn't used often.
2023-07-28 14:16:46 -04:00
John Colvin 71eb89b6a1 fix: Check 'HasQuantityDisplay' before accessing prop
Bugs (fixed):
   * The PNL Summary window throws a null ref ex when the first row is
     populated.

     Cause: The SecurityMetadataImmutable's internal QuantityDisplay is
     null. In other words, the mutable SecurityMetadata obj around which
     it wraps has a null QuantityDisplay, which is not allowed since
     Immutable protos (such as 'QuantityDisplayImmutable') must be
     constructed w/ a non-null instance of their mutable counterpart.

* Implement same fix (pre-emptively) in ManualFillRow, and
  OrderCompletedEventPredicate.
2023-07-28 14:01:57 -04:00
John Colvin 94e4a0b725 fix: Change bus data type to nullable immutable
Bugs (fixed):
   * The InterpTheosServerPublisher throws a null ref during startup when it
     accesses 'UsageList' from the VolSurfaceUsageTag data.

     Cause: Immutable protos instantiated w/ the default ctr have an
     invalid state, because the mutable (reference type) instance around
     which they wrap is null. Since an immutable type's props are trivial
     wrappers for this mutable instance, they throw a null ref if the
     mutable instance is null.
2023-07-28 12:02:50 -04:00
John Colvin 40d1fe20e3 diag: Add detailed error logs to notification serv order handler
Maintain a circular buffer of the last N updates. Then if/when an
exception occurs, log the update sequence that led up to it.
2023-07-26 15:30:55 -04:00
John Colvin 2ed23159ca style: Clean up jenkins build script
* Get rid of double backslashes in quoted paths to improve readability
* Call 'activate.bat' instead of 'activate' (official python docs say to
  use the former)
* Add docs
2023-07-26 15:26:30 -04:00
John Colvin faa8438adf build: Make jenkins build script independent of working dir
This alleviates an unneccessary burden on callers (previously, it had to
be run from the repo root dir).
2023-07-26 11:59:03 -04:00
John Colvin 0b35c2ccde fix: Add lock, try/catch in notification serv order handler
Brandon has been experiencing a crash on startup. The stack trace shows
this handler is throwing a duplicate-key ex on 'dictionary.Add' (unclear
why).
2023-07-26 00:55:50 -04:00
John Colvin 98eea0ef09 chore: Remove unused iface member 2023-07-26 00:13:22 -04:00
John Colvin 4bf237aebe fix (pre-emptive): Guard against null/empty prices in LadderRender 2023-07-25 14:27:13 -04:00
John Colvin da927adef4 fix: Check price is within ladder's range before rendering
Bugs (fixed):
  The render routine was indirectly asserting that each item's price was
  >= the ladder's min price. That seems like an inappropriate burden to
  put on the caller. Now we filter these items out in the routine.
2023-07-25 14:24:16 -04:00
John Colvin cf587e26d5 fix: Remove bad assert abt tickdiff in LadderRender
* The test condition was wrong in the first place
* Instead of assert/crashing, log a warning
2023-07-25 14:22:15 -04:00
John Colvin 9e4354fb55 fix buid: Don't goto ERROR just bc venv already exists
This seems like a typo
2023-07-18 23:40:18 -04:00
John Colvin e6bb4c73a8 fix build (jenkins): Upgrade pip via 'python -m pip'
For some reason 'pip install --upgrade pip' works on my laptop, but fails on
the Jenkins box.
2023-07-18 22:53:32 -04:00
John Colvin e43a2a4818 build: Add build script for new Jenkins (on aws) 2023-07-18 22:25:56 -04:00
John Colvin cde0f44b7d build: Default to Release cfg for 'publish' target 2023-07-18 22:25:06 -04:00
Taha b07a1e2c74 Fixing the issues, where the theos are only published out by the vol surface owner 2023-07-18 20:40:59 -04:00
Taha Afzal 8376fce5fe Merge branch 'spark_crypto.prod.vol_order' into spark_crypto.prod 2023-07-14 17:01:29 +00:00
Taha Afzal d9e5c846c2 Adding more logs to VolAlgo 2023-07-14 16:57:55 +00:00
Taha Afzal 65736c13ef VolAlgo completed 2023-07-14 03:54:14 +00:00
Taha Afzal 071c28e925 VolAlgo reflects its state correctly now 2023-07-10 03:20:05 +00:00
Taha Afzal 8355e3e1be VolAlgo code complete - need to test 2023-07-09 04:21:42 +00:00
John Colvin f9a6e0963c chore: Remove Spark.Admin.WebApp
These files were added by accident (leftover from switching branches
from development -> spark_crypto.prod)
2023-07-06 14:52:57 +00:00
John Colvin b2879837c6 chore: Remove devcontainer.json 2023-07-06 12:26:48 +00:00
John Colvin 0d03ddb009 Merge remote-tracking branch 'origin/spark_crypto.prod' into spark_crypto.tick_hotfix 2023-07-06 12:26:28 +00:00
John Colvin a6dfa4ae80 fix: Don't show decimal BTC Futs/Spd qtys
They tick in multiples of 10, so decimal precision isn't needed
2023-07-05 18:20:53 -04:00
John Colvin e66ec82ba8 hotfix: Setup default cfg for new Deribit price ticks 2023-07-05 18:19:49 -04:00
John Colvin 9ce5e971c6 fix: Fix typos in BTSColor paths in xaml 2023-07-05 18:11:40 -04:00
John Colvin 3e7cc49ebb hotfix: Format text w/ RegionalTickFactors in PriceEntryControl 2023-07-05 18:11:40 -04:00
John Colvin d07e68b6e2 hotfix: Use 1st leg's min price tick rule for Deribit combos 2023-07-05 18:11:40 -04:00
John Colvin 619ece2313 refactor: Consolidate impl for 'round_to_tick' overloads
Also add a 'decimal' overload for RegionalTickFactors. This is more work
for Deribit tick hotfix.
2023-07-05 18:11:40 -04:00
John Colvin 1dda9566f3 hotfix: Use '.' separator if tick unit is multiple of base 2023-07-05 18:11:06 -04:00
Taha 3704d1ed16 InterptheosServerPublisher is now opulated the newly added vol field in the PrecomputedTheoPoint proto 2023-07-05 14:41:31 -04:00
John Colvin a524ca02a5 refactor: Change tick arithmetic to use int64
The tick count is "price / tick_size" and tick_size is usually < 1, so
the extra bits may be needed to avoid arithmetic overflow
2023-07-05 12:02:28 -04:00
John Colvin 3c97f2552b fix build: Don't use libfmt or ranges in win cpp
I can't deal with this anymore. My build is suddenly broken on Windows
(for spark_crypto.prod branch). I assume they updated the compiler
in a way that isn't backwards compatible. Thanks Windows.
2023-07-05 11:58:14 -04:00
John Colvin 15b1d55ef1 fix build: Disable Binance md code on win 2023-07-05 11:58:14 -04:00
John Colvin 4e42c9f01b test: Refactor tick tests for RegionalTickFactors
Gives us some peace of mind about the dynamic ticks hotfix for Deribit
2023-07-05 11:58:14 -04:00
John Colvin 76775f821a hotfix: Support dynamic ticks in order ticket 2023-07-05 11:58:14 -04:00
John Colvin e7088f6b1c hotfix: Support dynamic ticks in ladder
Deribit now provides dynamic price ticks (a list of ticks per range).

https://www.deribit.com/kb/4-july-2023
https://www.deribit.com/kb/deribit-on-screen-options-tick-size-reduction
2023-07-05 11:58:14 -04:00
Taha Afzal f2c3ff4be6 Adding vol to PrecomputedTheoPoint 2023-07-05 15:16:45 +00:00
Taha 1fb42ade59 Adding perf logs on the front end 2023-07-05 10:50:13 -04:00
Taha 129650e9d4 Only the skew owner publishes theos to the server 2023-07-05 10:50:13 -04:00
John Colvin 170a44ac04 fix: Check sign to tick in correct direction
Don't assume it's positive and blindly tickup
2023-07-03 22:34:46 -05:00
Taha Afzal 7e04f02327 Merge branch 'spark_crypto.prod.autofit' into spark_crypto.prod 2023-07-04 03:21:28 +00:00
Taha Afzal abda2dbf97 VolSurfaces and achived theo history size is not mantained at runtime 2023-07-04 03:13:46 +00:00
Taha Afzal ad1a45cf49 ArchivedTheos are truncated on a server start 2023-07-04 03:13:46 +00:00
John Colvin e9abdd0ff2 chore: Remove unused fn 'gen_prices' 2023-07-03 12:30:03 -05:00
John Colvin 9254002318 fix: Check HasPrice/QuantityDisplay before accessing prop 2023-07-03 12:24:20 -05:00
John Colvin 596780b7f4 chore: Remove unused 'unit_quantity' prop 2023-07-03 12:22:37 -05:00
John Colvin 7ba061ac20 hotfix: Add cfg to account for new deribit tick format 2023-07-02 16:58:53 -05:00
John Colvin f8e6b73714 fix: Add missing venues to switch statement 2023-06-26 17:34:52 +00:00
John Colvin c01593d119 fix (ui colors): Cherry-pick synth editor dark theme from dev 2023-06-26 12:26:38 -04:00
John Colvin dd53c149c0 fix: Fix typo in default cfg 'SPOT' -> 'SECURITY_TYPE_SPOT' 2023-06-26 15:39:47 +00:00
John Colvin 04b4efe1e1 Update externals
Addresses more trivial build errors after upgrading to C++ 20
2023-06-26 15:24:46 +00:00
John Colvin 81bafbe68d fix build: Address trivial werrors after upgrading to C++ 20
All werrors were about implicit 'this' captures in lambdas
2023-06-26 15:24:46 +00:00
John Colvin 7ee95c55ab build: Upgrade CLI11 to v2.3.2 2023-06-23 15:35:06 +00:00
John Colvin 87d67feff4 build: Upgrade (Linux) c++ to stdlib 20 2023-06-23 15:33:40 +00:00
John Colvin d21ceddbb6 build: Upgrade (Windows) c++ to stdlib 20 2023-06-23 15:33:40 +00:00
John Colvin 4434df3d09 fix: Account for duplicate sec keys in 'normalize_drivers' 2023-06-23 15:33:40 +00:00
John Colvin 35916881c8 fix: Invalidate 'My Windows' module content on open (hover)
Bugs (fixed):
  * My Windows module popup is always empty

    Cause: The list of favorite windows is only evaluated on startup
    (before the list has been properly initialized). Furthermore, even
    if the list was initialized, it must be re-evaluated to account for
    newly added/removed windows.
2023-06-23 15:33:40 +00:00
John Colvin 5230d6bab5 build: Clean up build_spark.py 2023-06-23 15:33:40 +00:00
John Colvin 68c3418c04 build (refactor): Upgrade libfmt from ~8.0.1 to 10.0.0 2023-06-23 15:33:40 +00:00
John Colvin 7bce9f8a7f fix: Fix typo 'groups' -> 'currencies' 2023-06-21 11:07:47 -04:00
John Colvin a5b988738f chore: Add 'requests' module to py venv
This module is used to download files. It is required for the new
'install_fmt.py' script in externals.
2023-06-21 11:07:47 -04:00
John Colvin 53a4b61884 chore: Remove unused cmake var 2023-06-21 11:07:47 -04:00
John Colvin 7be111dc36 refactor: Use upper case http method name in ccapi params 2023-06-21 11:07:47 -04:00
John Colvin 0c5bd66cca refactor: Improve logging sec parsing logs (binance futs) 2023-06-21 11:07:47 -04:00
John Colvin b699c5a310 refactor: Simplify json impl w/ macros 2023-06-21 11:07:46 -04:00
John Colvin af8850f4c0 fix: Gracefully handle REQUEST_STATUS msgs (from ccapi) 2023-06-21 11:07:46 -04:00
John Colvin 10e359d6b5 refactor: Remove unnecessary template param 2023-06-21 11:07:46 -04:00
John Colvin b360881b8b chore: Impl 'descriptor' switch case for all exchs 2023-06-21 11:07:46 -04:00
John Colvin b250dc31d3 chore: Subscribe to BTC/USDC currencies in deribit md cfg 2023-06-21 11:07:46 -04:00
John Colvin 995df189ae chore: Add OKX to symbols.conf 2023-06-21 11:07:46 -04:00
John Colvin 93739e7010 improvement: Show Venue/SecType names in logs (not numeric val) 2023-06-21 11:07:46 -04:00
John Colvin bc42498d61 fix build: Disable ccapi/ftx
It appears that ccapi's ftx execution management code is broken (not that
it really matters, bc it's ftx). We prob should have already disabled this
disgraced exchange anyways.
2023-06-21 11:07:46 -04:00
John Colvin 2b95507c49 build: Better organize CMakeLists per-platform/project 2023-06-21 11:07:46 -04:00
John Colvin ca8c3a18d7 build: Generate only necessary cs files for protos
Prior to this commit, proto files were added to csprojs via the Proto3
target. This target generated 4 files per proto:
  .cs, .immutable.cs, .client.pb.cs, and server.pb.cs
For the (many) proto files that don't define services (just normal messages),
the .client/server.pb.cs files were unnecessary.

This commit splits proto-generation into 2 targets:
  * ProtoService - same as the old 'Proto3' target (generates 4 files per
    proto as described above).
  * Proto - a new target that generates only .cs, and .immutable.cs files
2023-06-21 11:07:46 -04:00
John Colvin e49066ffa7 fix build: Fix cacheVariables in CMakePresets 2023-06-21 11:07:45 -04:00
John Colvin e3cd910acd build: Use CMakePresets in build_spark.py 2023-06-21 11:07:45 -04:00
John Colvin cb47177b8e build: Remove unused 'link_build_dir' arg 2023-06-21 11:07:45 -04:00
John Colvin fba00c9d51 fix build: Remove unused fn 'notnulld'
This fn broke the Spark release build due to an '#if DEBUG' ppd
2023-06-21 11:07:45 -04:00
John Colvin af0b7d9146 fix build: Set cmake policy CMP0076 before target_sources
* Removes warning when configuring build on Windows
* Moves 'vs_filters.cmake' to 'cmake' dir (w/ other cmake scripts)
2023-06-21 11:07:45 -04:00
John Colvin e0a8c476f6 build: Increase sparkd parallel jobs to 8 2023-06-21 11:07:45 -04:00
John Colvin 5acb8100de devcontainer: Define env var 'XDG_CONFIG_HOME' 2023-06-21 11:07:45 -04:00
John Colvin 1c133e87e7 Update externals to get ccapi v5.45.2 2023-06-21 11:07:45 -04:00
John Colvin 8a8419576d build: Add 'Debug (ccapi diag)' configuration preset
Simply a clang debug build w/ ccapi log level set to 'Trace' (instead of
'Debug')
2023-06-21 11:07:45 -04:00
John Colvin 4a28723adb chore: Organize ccapi compile defs in CMakeLists 2023-06-21 11:07:45 -04:00
John Colvin e482408f29 fix: Add 'notional' filter class to model binance md json 2023-06-21 11:07:45 -04:00
John Colvin 4dcc98ab1f improvement: Check for empty str when parsing numbers (json) 2023-06-21 11:07:45 -04:00
John Colvin ace0fc35a2 refactor: Don't log error in Price::from_json
These logs get noisy fast
2023-06-21 11:07:45 -04:00
John Colvin c7d1eb00dc refactor: Add TimeSpan, TimeStamp arithmetic 2023-06-21 11:07:45 -04:00
John Colvin 949c8e0a32 build: Enable boost-beast for ccapi 2023-06-21 11:07:45 -04:00
John Colvin c2419b491a fix: Ensure ccapi log filenames aren't deallocated
Logs are committed asynchronously, and since ccapi log filenames are
passed by value, we must store them somewhere
2023-06-21 11:07:45 -04:00
John Colvin 786322f397 feat: Add Okx md (ccapi) 2023-06-21 11:07:45 -04:00
Taha 09e2a1764f Only the user with control over the volsurface can save it 2023-06-15 11:44:34 -04:00
John Colvin a780668bce fix: Ensure tick up/down values are within min/max bounds 2023-06-15 11:43:58 -04:00
John Colvin 5b79aeaa14 ui: Enforce min auto-fit period (30 secs) 2023-06-15 11:37:18 -04:00
John Colvin 049c006b5f ui: Disable driver/atm pts moved auto-fit ui 2023-06-15 11:37:18 -04:00
John Colvin 6fdc344472 feat: Add 'acquire ownership' button to vs context menu 2023-06-15 11:37:18 -04:00
John Colvin cb09b93553 chore: Rename ns bts.reactive -> Spark.Core.Reactive 2023-06-15 11:37:18 -04:00
John Colvin 21447d32e5 fix (vs ui): Only log 'is_dirty' changes for editable cols 2023-06-15 11:37:18 -04:00
Taha 28b03e1cd2 Only the user with control over the volsurface can save it 2023-06-14 22:23:45 -04:00
Taha a7acb89c15 Fixing merge conflict 2023-06-14 15:57:42 -04:00
John Colvin 35289710ba fix: Ensure tick up/down values are within min/max bounds 2023-06-14 14:20:47 -04:00
Taha 4677acfb39 Merge branch 'spark_crypto.prod.autofit' of bitbucket.org:bluetradesys/spark into spark_crypto.prod.autofit 2023-06-14 13:55:03 -04:00
Taha ac05d0d69e AutoFitter reads the settings from the settings now 2023-06-14 13:54:53 -04:00
John Colvin 25a9b6b433 fix: Ensure tick up/down values are within min/max bounds 2023-06-14 13:49:49 -04:00
John Colvin b78713ad0d ui: Enforce min auto-fit period (30 secs) 2023-06-14 12:59:40 -04:00
John Colvin 1f3d0e879c ui: Disable driver/atm pts moved auto-fit ui 2023-06-14 12:59:39 -04:00
John Colvin baad4dc68e feat: Add 'acquire ownership' button to vs context menu 2023-06-14 12:22:57 -04:00
John Colvin ef7c0c7a30 chore: Rename ns bts.reactive -> Spark.Core.Reactive 2023-06-14 11:39:06 -04:00
Taha 3b3c4a2a35 Merge branch 'spark_crypto.prod.autofit' of bitbucket.org:bluetradesys/spark into spark_crypto.prod.autofit 2023-06-14 10:21:55 -04:00
John Colvin ef9fc66a31 fix (vs ui): Only log 'is_dirty' changes for editable cols 2023-06-14 09:44:42 -04:00
John Colvin 212d9c853b fix: Init auto fit vals in vs settings editor 2023-06-14 09:09:34 -04:00
Taha 7815b18b6b Merge branch 'spark_crypto.prod.autofit' of bitbucket.org:bluetradesys/spark into spark_crypto.prod.autofit 2023-06-13 22:34:12 -04:00
Taha 05126074d4 Enabling AutoFit 2023-06-13 22:34:07 -04:00
John Colvin 3611d2c1f3 fix: Enable tick up/down buttons for nullable uint32 ctrl 2023-06-13 15:43:33 -04:00
John Colvin b5ad4b8104 feat: Add auto-fit ui for vs settings 2023-06-13 15:43:33 -04:00
Taha 43d7c0a2b5 Comments 2023-06-12 13:43:42 -04:00
Taha 12e361cec7 AutoFit based on a timer works now 2023-06-11 21:59:46 -04:00
John Colvin a4b0f026f4 style: Don't use implicit ptr -> bool conversion
Check 'ptr == nullptr' instead.
2023-06-07 13:16:22 -04:00
John Colvin 59f65c32d8 refactor: Change if/else blocks to switch expression 2023-06-07 13:16:22 -04:00
John Colvin ccec77f7d1 refactor: Fix typo 'uitilities' -> 'utilities' 2023-06-07 13:16:22 -04:00
John Colvin 1deeb85d22 improvement: Filter Deribit instrument reqs by regex cfg 2023-06-07 13:16:21 -04:00
John Colvin 648a32147a refactor: Eliminate SecurityID dependency on JsonReader
It's a fundamental type, included by many source files. The fewer
dependencies the better.
2023-06-07 13:16:21 -04:00
John Colvin 806ddfc156 Update externals so ccapi Deribit sends heartbeats 2023-06-07 13:16:21 -04:00
John Colvin 05b5f22204 fix: Capture cfg by value in thread lambda
Bugs (fixed):
  * A race crash occurs during startup, seems related to starting emumba
2023-06-07 13:16:21 -04:00
John Colvin 4f09d2cff1 refactor: Move Emumba deribit cfg to own proto 2023-06-07 13:16:21 -04:00
John Colvin e1234fe583 fix: Fix typo in log helper script 'show_last_run.sh'
So it actually applies the 'num_lines' override arg
2023-06-07 13:16:21 -04:00
John Colvin aa64dacd65 fix: Abort '_add_spread' if any leg secs missing
Bugs (fixed):
  * Sparkd crashes occassionally during startup. The last logs suggest
    it is related to adding Deribit spreads to shared mem.
2023-06-07 13:16:21 -04:00
John Colvin 10b062ebce fix build: Fix typo in CMakePresets cfg profiles 2023-06-07 13:16:21 -04:00
John Colvin e057057173 chore: Add replay/recording cfg to md_dev/prod profiles 2023-06-07 13:16:21 -04:00
John Colvin 82cec2672a fix build: Fix typo in Venue enums in default confs 2023-06-07 13:16:21 -04:00
John Colvin 50184cd6ff docker: Add hostRequirements, shm to devcontainer
The shm-size should be more than sufficient for general market data (the
default size of 64MB wasn't cutting it)
2023-06-07 13:16:21 -04:00
John Colvin e64dc49a64 fix build: Respect cfg path order in gen'd defaults
The path order represents the value-inheritance hierarchy. This way,
values from files earlier in the path take precedence over those from
later files.
2023-06-07 13:16:21 -04:00
John Colvin 010bd53723 fix: Include 'id' member in equals impl 2023-06-07 13:16:20 -04:00
John Colvin 50ae7ca7f9 feat: Add Deribit md (ccapi) 2023-06-07 13:16:20 -04:00
John Colvin 995bbef878 refactor: Add currencies to SecurityCriteria proto 2023-06-07 13:16:20 -04:00
John Colvin 8c325e30be improvement: Validate SecurityCriteriaClause proto
To ensure 'SecurityCriteriaClause::include' calls are reasonably cheap
2023-06-07 13:16:20 -04:00
John Colvin 6bb9b24210 feat: Add 'name_regexps' to SecurityCriteriaClause
This will allow us to filter out securities (instruments) at Deribit
(and likely other venues) BEFORE requesting their metadata. This
will be particularly useful when reacting to instrument state changes
(i.e., when a new instrument is added), which occur one instrument at
a time, and only provide the instrument's name.
2023-06-07 13:16:20 -04:00
John Colvin df1c558c33 refactor: Shorten SecurityCriteriaClause var names
* Drop 'security_' prefix (considering the class name, it is redundant)
* Change 'descs' -> 'names'
2023-06-07 13:16:20 -04:00
John Colvin 357d245a4c fix: Use JsonReader::read rather than nlohmann::get
The former is a more robust solution (logs exceptions, primitive string
conversion, etc.)
2023-06-07 13:16:20 -04:00
John Colvin d43863ab59 refactor: Change BoolName cstrings to strings 2023-06-07 13:16:20 -04:00
John Colvin 89188acc7d refactor: Define 'fmt' fns for a few md types 2023-06-07 13:16:20 -04:00
John Colvin 86a9fc0c83 chore: Add 'fmt' impl for domain::Security
This allows us to pass domain::Security to the LOG macro.
2023-06-07 13:16:20 -04:00
John Colvin 15579acd2a fix build (web): Add missing Venue switch cases 2023-06-07 13:16:19 -04:00
John Colvin 411009c996 Update externals to get ccapi v5.45.1 2023-06-07 13:16:19 -04:00
John Colvin 17a4cce68b refactor: Change 'Currency' from enum to string
It is an unnecessary burden to ensure the enum represents the union set
of currencies available at all suppported venues. The benefits of using
an enum are slim to none (it is practically unreferenced in code), so
the burden isn't justified.
2023-06-07 13:16:19 -04:00
John Colvin adb36795a8 chore: Rename a few .conf files to snake case 2023-06-07 13:16:19 -04:00
John Colvin 691545b71a refactor: Remove redundant sec type field
The Security class already has a 'type' fn that treats the type as a
function of the security variant. This is better than the 'type' field
in SecurityCommon, because it's naturally in sync with the variant.
2023-06-07 13:16:19 -04:00
John Colvin 31c7fa4f2c fix (pre-emptive): Return 'UNSPECIFIED' if sec-type variant empty 2023-06-07 13:16:19 -04:00
John Colvin 86009c3cdb refactor: Reduce Binance US dependency on Binance
There is some common code, but it seems like a good idea to keep
exchange-specific md impls modular/independent
2023-06-07 13:16:19 -04:00
Taha Afzal c9392dd306 Adding multiple accounts to CCAPIExecutionGateway 2023-06-06 18:30:38 +00:00
Taha Afzal ac8a6094fb Cleaning up corrid generation 2023-06-06 18:30:38 +00:00
Taha Afzal 6dbe497013 Bug fixes 2023-06-06 18:30:38 +00:00
Taha Afzal 274aa9b17d Error on order entry handled 2023-06-06 18:30:38 +00:00
Taha Afzal d47e61ca57 CCAPISingleOrderManager state machine fixed 2023-06-06 18:30:38 +00:00
Taha Afzal 3078b918d2 CLeaning up 2023-06-06 18:30:38 +00:00
Taha Afzal 95e9a6e8aa Sending RFQs now (combo creation not done) 2023-06-06 18:30:38 +00:00
Taha Afzal 1a3cf1dbea OpenOrders are reported bck now 2023-06-06 18:30:38 +00:00
Taha Afzal 0d705eed1f PositionRequest cleaning up and consolidating multiple messages (corresponding to different currencies) into one 2023-06-06 18:30:38 +00:00
Taha Afzal 1d28526792 Querying Positions and passing them to the client now 2023-06-06 18:30:38 +00:00
Taha Afzal 3ecf3dd048 OpenPositions and WorkingOrders queried from Deribit now 2023-06-06 18:30:38 +00:00
Taha Afzal 64ff79a38d Passing config to connection config to CCAPIDeribitOrderMux 2023-06-06 18:30:38 +00:00
Taha Afzal aba478f3dc Adding meaningful correlation ids 2023-06-06 18:30:38 +00:00
Taha Afzal 1025881ec8 Stable CCAPI based Deribit execution using per instrument subscription - improvements needed 2023-06-06 18:30:38 +00:00
Taha Afzal 6d95a645e3 Deribit's option position request hooked up 2023-06-06 18:30:38 +00:00
Taha Afzal 4769f66eea Adding some logs to SharedMemory and SharedList 2023-06-06 18:30:38 +00:00
John Colvin 82c126362d fix build: Fix a few path errors in publish target 2023-05-31 22:13:52 -04:00
Taha fd2ba70031 Culling the logs 2023-05-29 11:35:49 -04:00
Taha ab410c339f Order Tickets from the sheets are defaulted correctly now 2023-05-29 10:32:29 -04:00
Taha Afzal 9093c72646 Merge branch 'temp_arham' into spark_crypto.websocket-api.ccapi 2023-05-09 03:56:35 +00:00
arhamGIT 3a220b8320 Merge branch 'temp_arham' of bitbucket.org:bluetradesys/spark into temp_arham 2023-05-08 23:40:44 -04:00
arhamGIT ac20f7c9dd front end changes to make coinbase work 2023-05-08 23:40:28 -04:00
Taha Afzal 578146905e coinbase working 2023-05-09 03:31:20 +00:00
arhamGIT 7f07f5a69b Merge branch 'temp_arham' of bitbucket.org:bluetradesys/spark into temp_arham 2023-04-26 12:33:50 -04:00
arhamGIT 3dd7d0999e merge 2023-04-26 12:33:32 -04:00
Taha Afzal 5076770d15 coinbase sec names showing in shrd mem 2023-04-26 16:27:34 +00:00
Taha Afzal 791446c514 changed to merge proto updates 2023-04-25 15:38:37 +00:00
Taha Afzal 66370bd541 Merge branch 'spark_crypto.websocket-api.ccapi' of bitbucket.org:bluetradesys/spark into spark_crypto.websocket-api.ccapi 2023-04-24 23:24:25 +00:00
Taha Afzal cce8973e87 temp changes to make binance work 2023-04-24 23:19:15 +00:00
John Colvin 37dcd32c6b fix (cli): Fix config --query output indentation
There are 2 spaces per indent level
2023-04-20 00:46:23 -04:00
John Colvin d772958272 diag: Show file/line in Config logs 2023-04-20 00:46:23 -04:00
John Colvin c85e221e9f build: Automatically run build_spark.py in venv 2023-04-20 00:46:23 -04:00
John Colvin 28e95df5c6 refactor: Rename 'STOCK' -> 'SPOT' 2023-04-20 00:46:23 -04:00
John Colvin 8d84355d57 chore: Add Binance BTC qty formatting to default conf 2023-04-20 00:46:23 -04:00
John Colvin 5c25f9a3e5 refactor: Rename Venue/SecType enums according to conventions
https://protobuf.dev/programming-guides/style/#enums
2023-04-20 00:46:23 -04:00
John Colvin c0980809c5 chore: Format .conf files
* Indent with 2 spaces
2023-04-20 00:46:23 -04:00
John Colvin e946c6427e chore: Rename Ports.conf -> ports.conf
This is consistent with proto file naming conventions recommended by
Google (snake_case)
2023-04-20 00:46:23 -04:00
John Colvin 58ccbe2b19 chore: Consolidate default md conf into one file 2023-04-20 00:46:22 -04:00
John Colvin 7519c0b63a build: Update dotnet fable to 4.0.6 2023-04-20 00:46:22 -04:00
John Colvin 947c071cee build: Remove unused cmake def 2023-04-20 00:46:22 -04:00
John Colvin 54018fcce7 refactor: Clean up 'PlatformLoader'
* Rename 'SymbolLoader'
* Consolidate complicated filter logic into one 'load' overload

refactor: Get rid of unnecessary PlatformConfig
2023-04-20 00:46:22 -04:00
John Colvin 4b85eb33f8 chore: Remove redundant Symbols.conf file 2023-04-20 00:40:56 -04:00
John Colvin 592cf54e94 chore: Remove irrelevant test for config fallback url
The 'fallback url' was removed from config a few months ago (this test should
have been removed with it)
2023-04-20 00:40:56 -04:00
John Colvin b8368bf9fa chore: Remove unused args/code
* Removes several 'if' blocks whose predicates were effectively compile-time
  constants (i.e., unnecessary).
2023-04-20 00:40:50 -04:00
John Colvin 7d19ea84ab chore: Remove redundant fn 'get_thread_name' 2023-04-18 23:57:24 -04:00
John Colvin 14651341c4 fix: Fix 'Replace' fn so it ONLY replaces val if key exists
Bugs (fixed):
  * Spark (client) crashes anytime an order is canceled. Other changes
    to existing orders can cause the crash as well, but cancelling does
    so every time.

  * Cause: The IObservable<Update<T, TKey>> 'Naggle' ext fn was broken.
    Specifically, the KeyedValueCollection.Replace fn that 'Naggle' uses
    was broken. Instead of only replacing values with existing keys, it
    would add new keys as well.
2023-04-18 10:36:46 -04:00
John Colvin 681fbc6915 fix: Add 'spot' to sec type filter for preset algos 2023-04-18 00:12:46 -04:00
John Colvin 37d7f51d19 fix: Fix color-name typo in xaml 2023-04-17 23:53:51 -04:00
John Colvin 48eb0a2c9b fix: Use qty display settings in order ticket bbo header 2023-04-16 12:53:04 -04:00
John Colvin 6d2cd54deb fix: Init config w/ (optional) server arg in cli 2023-04-16 00:29:31 -04:00
John Colvin 2ec956b430 fix: Normalize cfg url path sep to '/' on Windows
Bugs (fixed):
  * All client config overrides are ignored (even the '-configserver'
  cli arg). Config overrides on the server appear to work, but they
  aren't forwaded to the client.

  Cause: cURL doesn't like the Window's path separator '\'
2023-04-16 00:13:42 -04:00
John Colvin 4f22ae04fe diag: Add verbose logs during config init 2023-04-16 00:13:42 -04:00
John Colvin 7da82d8444 cli (spark): Add 'sparkd' opt, integrate w/ CommandLineParser
This replaces the old '-configserver' arg, which will continue to be
supported for backwards compatabilty.
2023-04-14 15:16:32 -04:00
John Colvin d8611536ee fix build script: Fix venv path 2023-04-14 15:16:32 -04:00
John Colvin c94ffd1a56 cli: Add spark.console.cmd (alias for Spark.Console.exe) 2023-04-14 15:16:32 -04:00
John Colvin cddf081e19 fix (cli): Read %~dp0 before SHIFT
I just discovered that, when SHIFT is run (the first time), the value of
%~dp0 changes from the script's parent dir to the current working dir
2023-04-14 13:18:28 -04:00
John Colvin 94071b4889 refactor: Move Spark cmd opts to own file 2023-04-14 13:18:28 -04:00
John Colvin d7518cffe1 fix: Don't round ccapi book qtys to int 2023-04-14 17:07:25 +00:00
John Colvin fa26ecaf67 fix: Fix typo 'BINANCE' -> 'BINANCE_US' 2023-04-14 17:07:25 +00:00
John Colvin c2eaf00aaa improvement (cli): Add spot & option to sec type choices 2023-04-14 17:07:25 +00:00
John Colvin 74be3ec9b9 improvement (cli): Dump md json via nlohmann/json
This is much easier to read than previous json format, which we
generated ourselves, though a bit more verbose.
2023-04-14 16:55:29 +00:00
John Colvin 967e3100d2 fix (cli): Fix shared mem dump path 2023-04-14 16:55:29 +00:00
John Colvin b1d1243eae refactor: Change lib::domain::Book qty type to float 2023-04-14 16:55:29 +00:00
John Colvin 72edd99cb0 chore: Get rid of old/unused code from Spartan 2023-04-14 16:55:29 +00:00
John Colvin a512460396 diag: Log when quickbus starts/stops
Something is broken wrt port config on sparkd, and possibly spark
(client) as well. This might help track down the bug.
2023-04-14 16:54:17 +00:00
John Colvin 48ff593c2e chore: Remove unused fns
Also stop exporting PlatformLoader type since it isn't used outside of cpp
2023-04-13 13:59:14 +00:00
John Colvin d8fc99bca4 chore: Remove CMakeDeps that were accidentally added back 2023-04-13 13:59:13 +00:00
Taha Afzal 6a04759fe8 Merge branch 'spark_crypto.websocket-api.ccapi' of bitbucket.org:bluetradesys/spark into spark_crypto.websocket-api.ccapi 2023-04-12 10:28:44 -05:00
Taha Afzal 2cc07b71bd Added some documentation to order_flow.txt 2023-04-12 14:21:27 +00:00
Taha Afzal 40bf117f6c Execution config fixed 2023-04-12 02:34:37 +00:00
Taha Afzal 20209ef429 Merge branch 'spark_crypto.websocket-api.ccapi' of bitbucket.org:bluetradesys/spark into spark_crypto.websocket-api.ccapi 2023-04-11 16:38:47 +00:00
Taha Afzal c30a7a29fd Merging sim_execution 2023-04-11 15:34:20 +00:00
Taha Afzal c6ae2ea038 temp changes to make ws work 2023-04-11 14:16:40 +00:00
Taha Afzal f95715beec Merge branch 'spark_crypto.websocket-api.ccapi' of bitbucket.org:bluetradesys/spark into spark_crypto.websocket-api.ccapi 2023-04-10 15:57:38 +00:00
Taha Afzal 0e85f4b9d5 Merge branch for 'spark_crypto.websocket-api.linux' into spark_crypto.websocket-api.ccapi 2023-04-10 15:55:46 +00:00
John Colvin ab78ae867a dev: Add docs for building/intellisense in VS Code
TODO: Add docs for building Spark on Windows
2023-04-10 11:55:13 -04:00
John Colvin 5e60f38b9b build: Change CMakePresets build/install dirs to historic paths
<build|install>/<clang|gcc>/<debug|release>
2023-04-10 11:10:37 -04:00
John Colvin 8f4b4be6db build: Fix CMakePresets build
Also drop 'spark_' in 'spark_admin_web_app_bundle' target. It's just too
long
2023-04-10 11:10:37 -04:00
John Colvin 696195aefd docker: Rename repo 'bluetradingsystems/sparkd-dev'
The previous name, 'johncolvin/bluetradingsystems', was chosen in a
misguided effort to adhere to a naming convention recommended by Docker
Hub (https://docs.docker.com/docker-hub/repos/create/). In hindsight,
this convention isn't well suited to our use case. Our images are shared
by multiple users (e.g., sparkd dev users all use the same sparkd-dev
image), so it doesn't make sense to name the repository after an
arbitrary user.
2023-04-08 12:18:39 -05:00
John Colvin 36f0a544e9 fix (pre-emptive): Include <map> in header that uses std::map
The build wasn't broken, so any deps on members that use map must have
included 'map' themselves
2023-04-08 00:52:23 -04:00
John Colvin f23242b18c improvement: Only prepend venv to PATH once per shell
Even if build_spark.cmd is called repeatedly from the same shell. This
prevents PATH from growing too long (w/ repeating venv path entries)
2023-04-08 00:46:07 -04:00
John Colvin 75dd6d659b chore: Remove old config defaults dir 2023-04-08 00:07:29 -04:00
John Colvin a23d8228b4 chore: Remove unused spark_server.sln 2023-04-07 23:58:24 -04:00
John Colvin 59f3d54597 docs: Fix typo in readme 2023-04-07 23:57:44 -04:00
John Colvin 8b3166582d refactor: Rename run_spark.cmd -> spark.cmd, add build-type arg 2023-04-07 23:55:12 -04:00
John Colvin fd13316b8e dev: Add c_cpp_properties.json and README for intellisense on win 2023-04-07 12:14:49 -04:00
John Colvin 5991ab03ec Removing docker/windows submodule (was accidentally added back) 2023-04-07 12:14:49 -04:00
John Colvin b9bc6184d4 diag: Add sym/type/exch to invalid sec channel log 2023-04-07 12:14:49 -04:00
John Colvin aab3e836c3 fix: Add Spot -> Stock sec type conversion switch case 2023-04-07 12:14:49 -04:00
John Colvin ed0fc60900 build: Clean up build_spark.py a bit 2023-04-07 12:14:48 -04:00
John Colvin 6764ae268e Removing docker/linux submodule (was accidentally added back) 2023-04-07 12:14:48 -04:00
John Colvin 6d3d9ddacf fix build: Fix merge errors (mostly trivial stuff) 2023-04-07 12:13:44 -04:00
Taha ccd76ec284 Symbols.conf 2023-04-06 21:48:34 -04:00
Taha Afzal d52ea0e997 Adding macro to stop MarketDataConfigUtils from building into windows 2023-04-07 01:41:06 +00:00
John Colvin 15e23fe486 fix: Remove 'run_emumba' from md/Run.cpp
MarketDataGateway manages emumba/deribit connections now

Bugs (fixed):
  * An spdlog exception is thrown because the run_emumba thread spawns a
    2nd emumba_logger.

    Cause: The first emumba logger is spawned by the EmMDListener
    instantiated in MarketDataGateway. We shouldn't be starting emumba
    connections in 2 places.
2023-04-06 15:26:19 -04:00
John Colvin d9e5b11026 fix: Disable MDPublisher thread (at least for now) 2023-04-06 15:07:46 -04:00
John Colvin 21c19c94c2 fix: Fix typo in config defaults 2023-04-06 14:58:59 -04:00
John Colvin c31d9d6c72 Merge remote-tracking branch 'origin/spark_crypto.dev' into spark_crypto.websocket-api.linux 2023-04-06 14:44:22 -04:00
John Colvin a7e89b075b Merge remote-tracking branch 'origin/spark_crypto.ccapi' into spark_crypto.websocket-api.linux 2023-04-06 12:55:53 -04:00
arhamGIT c0bb26e56f Merge branch 'spark_crypto.websocket-api.linux' of bitbucket.org:bluetradesys/spark into spark_crypto.websocket-api.linux 2023-04-06 08:36:12 -04:00
arhamGIT 1e3e57b990 misc color changes 2023-04-06 08:35:46 -04:00
John Colvin f50430e9e2 fix: Fwd ports in start_docker script 2023-04-06 00:02:53 -04:00
John Colvin 4891250959 docs: Add directions to create container from terminal 2023-04-06 00:02:53 -04:00
John Colvin ad1b89ff88 docs: Add links to dev container docs in README 2023-04-05 23:50:38 -04:00
John Colvin 49053d31c2 chore: Remove docker build script
It's just as easy to run the docker build cmd manually
2023-04-05 23:05:50 -04:00
John Colvin 651ebdbb41 docs: Remove unnecessary sample code in README 2023-04-05 23:04:03 -04:00
arhamGIT 0b50d5b5f0 dark theme in create synthetic 2023-04-05 13:52:45 -04:00
John Colvin 9e3f16d8bc fix build: Update externals so prod builds in new docker 2023-04-05 11:45:24 -04:00
John Colvin a3f194d708 build (web): Upgrade web build to net7.0 2023-04-05 11:39:37 -04:00
John Colvin d21de803f6 docker: Check if aliases.fish exists before sourcing it 2023-04-04 23:52:10 -04:00
John Colvin bb81151392 docker: Remove unused opt from build script 2023-04-04 23:52:10 -04:00
John Colvin 2b277b84a2 docker: Improve devcontainer_post_create.sh
* Create fish config dir if it doesn't exist
* Ensure git is run from a dir inside the repo
* Add basic logs
2023-04-04 23:52:10 -04:00
John Colvin 2bf4502d06 docker: Add set_user/start_docker scripts
Leave the image's default user as 'root' so we can modify the non-root user's
uid/gid. This is a common technique used in containers to gain file permissions
in mounted dirs.

The default user's uid/gid can't be changed because a bash process runs under
their ownership as long as the container is up. A user's uid/gid cannot be
changed while that user owns a process (at least not via 'usermod').
2023-04-04 23:52:10 -04:00
John Colvin 94d1b9d784 improvement: Fwd ports in devcontainer, don't stop on close 2023-04-04 00:30:04 -04:00
John Colvin ceee66d5f2 fix build: Add compile def 'SHARED_MEMORY_PREFIX' for win build 2023-04-03 19:30:14 -04:00
Taha Afzal 2e9a968752 Merge branch 'spark_crypto.websocket-api.linux' of bitbucket.org:bluetradesys/spark into spark_crypto.websocket-api.linux 2023-04-03 11:14:30 -05:00
John Colvin 6c2989b139 refactor (docker): Replace usermod cmds w/ opts in 'useradd' 2023-04-03 11:52:19 -04:00
John Colvin 6c2bfee616 fix (docker): Set default user without specific group
Bugs (fixed):
  * The default user does not have sudo permission in the container,
    unless the user is specified explicitly in the 'docker exec' cmd
    (via -u <user>).

    Cause: When the default user is specified with a specific group
    (in this case, its namesake 'bts'), it is excluded from all other
    groups, including 'sudo'.
2023-04-03 11:43:37 -04:00
John Colvin 30c5ea7fb2 chore: Name devcontainer scripts after associated json prop 2023-04-03 10:49:58 -04:00
John Colvin a6831b5548 chore: Add devcontainer.json to bootstrap devcontainers 2023-04-03 10:49:58 -04:00
John Colvin b42943fe8d chore: Rename Docker image 'spark-dev' -> 'sparkd-dev'
This is a more accurate and appropriate name than 'spark-dev' because
the image is designed to build/run Sparkd and the Spark Api Server (both
of which are daemons, hence the appropriateness of the 'd' suffix). It
isn't designed to build/run the front-end desktop application, Spark.
2023-04-03 10:28:51 -04:00
John Colvin 06c833e96c fix: Use correct prefix in md cleanup
Bugs (fixed):
  * Assert crash in MDSource.h "Marketdata heartbeats are bad..."

  Cause: The MD cleanup procedure, which is supposed to delete md files
  from shared memory (from previous runs), wasn't deleting anything.
  The file globbing pattern it was using (to determine which files to
  delete) never produced any matches because it had the wrong prefix. As
  a result, market data would often be loaded with a stale heartbeat
  timestamp from a previous run.

  Note: This occurred as a side effect of making the shared memory prefix
  configurable when we ported the api server over to Linux (so the api
  server and sparkd could run on the same container/machine whilst
  maintaining independent shared memory files).
2023-04-03 10:28:51 -04:00
John Colvin 9aff02b225 chore: Remove unused docker scripts 2023-04-03 10:28:51 -04:00
John Colvin 4229a523a8 docker: Init devcontainer bashrc and config.fish 2023-04-03 10:28:51 -04:00
John Colvin 82e9e6b6bf docker: Change default docker_user to "bts"
This way we can all use the same dev image. It also means one less
variable in our containers that paths/scripts need to account for.
VS Code can automatically update the remote user's uid in the container
to avoid permission issues in mounted dirs.
2023-04-03 13:48:43 +00:00
John Colvin 904a6db1d0 fix: Add Mercury default conf
The quickbus was essentially broken when running on the 'default'
defaults, for lack of a better word, because the ingoing/outgoing queues
in BrokerProxy would be initialized with size 0.
2023-04-03 13:48:16 +00:00
John Colvin 2a9f03741e chore: Move docker files into main repo
Changes to Docker-related files/configuration don't occur in a vacuum.
They are made in coordination with changes to the main repository, so it
doesn't make sense to track them separately.

Note: Removing the 'windows' Docker files completely. No one has has
used them in a long, long time. The client build would be broken in
there anyways, the image is based on .NET Framework 3.5!
2023-04-03 13:48:16 +00:00
John Colvin fd3de056c1 style (cli): Clean up 'key-code' cmd
* Rename 'key-code' -> 'key' (better grammar for the sub cmds)
* Rename 'key-gen' -> 'gen'

Now the 'key' cmds are 'sparkd key gen/encrypt/decrypt'
2023-03-31 05:00:07 +00:00
John Colvin 978a1e8566 dev: Integrate Docker w/ VS Code devcontainers
Hopefully this resolves all of the trouble/confusion in setting up
sparkd Docker containers
2023-03-31 04:59:58 +00:00
Taha Afzal 36e1771579 Merge branch 'spark_crypto.websocket-api.linux' of bitbucket.org:bluetradesys/spark into spark_crypto.websocket-api.linux 2023-03-28 16:05:06 -05:00
John Colvin 0d23fd50f5 improvement: Indent protos in sparkd config cmd
So proto values are indented relative to the key, which is the type name
2023-03-28 10:45:03 -04:00
John Colvin 367c9c1c7c chore: Include metrics.h in MDSource.h
This file was broken, as it defines methods that depend on metrics.h.
However, the build wasn't broken because references to such methods
are in files that happen to include metrics.h themselves.
2023-03-28 00:45:07 -04:00
John Colvin 78f5526ce7 refactor: Add spark_test, Spark.Console to Spark.Api.Server sln 2023-03-28 00:45:07 -04:00
John Colvin a1d7ebd260 improvement: Lower 'finit_spark_lib' log level to Diag 2023-03-28 00:45:07 -04:00
John Colvin 3fda1cb369 improvement: Add null check for rule_desc in cfg lookup
It is possible rule_desc is null given an inappropriate field_name arg
2023-03-28 00:45:07 -04:00
John Colvin 2c2a68022b improvement: Spruce up 'config' cli
It's naturally a bit messy because we expose the c++ cli to csharp, so
it can be invoked via Spark.Console (cs) or sparkd
2023-03-28 00:45:07 -04:00
arhamGIT bb321926bc names wkng in subs, examples working 2023-03-27 11:40:51 -05:00
John Colvin 45c35ba1b2 fix build: Fix install path issues in cmake 2023-03-26 13:44:25 -04:00
John Colvin 77c61d5e3f fix build: Run dotnet tool restore when building webapp 2023-03-26 13:44:25 -04:00
John Colvin 12962ed5ca Update docker/linux, and externals
* Fixes a few build dep issues
* Adds [docker] user in container, rather than image
* Automatically installs emumba libs when creating/starting new docker
  containers
* Binds sparkd ports to the host so containers don't need to share the
  host's network stack (allows us to run sparkd in containers in WSL)
* Adds flag to start_docker.sh to allow mounting existing dirs
* Improves start_docker.sh help text
2023-03-26 13:44:22 -04:00
John Colvin f472db002c feat (sparkd cli): Bring back 'web' cmd 2023-03-25 11:46:23 -04:00
John Colvin 6939f32f69 refactor: Rename 'web' -> 'Admin.WebApp' in CMakeLists 2023-03-25 11:43:29 -04:00
John Colvin 0107d934e5 fix: Resolve req paths correctly in Admin WebApp 2023-03-25 11:00:45 -04:00
Taha Afzal ce9880a9b1 changed samples 2023-03-21 12:44:43 -04:00
Taha Afzal 317f17d7da added examples 2023-03-21 12:39:58 -04:00
Taha Afzal 7da128da6b removed allow all headers 2023-03-21 01:16:02 -04:00
Taha Afzal f603866860 changed config to make on titan 2023-03-21 01:14:56 -04:00
John Colvin dc2d525955 fix build: Reorder link libraries
For some reason, it the previous order of link libs caused an unresolved
external symbol related to open ssl (looks like a version macro)
2023-03-20 13:26:44 -04:00
John Colvin e97335189a refactor: Rename Spark.Admin.Console -> WebApp
This is a more appropriate name (it is a web app after all), especially
now that we've renamed sparkcmd -> Spark.Console (a literal console
app). The old name implies a parallel between the two apps that doesn't
exist.
2023-03-20 13:26:44 -04:00
John Colvin 81ce58268f improvement: Clean up Spark.Console
* Reword cli verbs, opts, and help text
* Rename files, folders, and namespaces
* Run code formatter
2023-03-20 13:26:44 -04:00
John Colvin 7dace3fc1d refactor: Rename sparkcmd -> Spark.Console
This is a more conventional name for a companion console app
2023-03-20 13:26:44 -04:00
John Colvin f4794bea33 improvement: Add sparkd (config-server) opt to configcheck cli 2023-03-20 13:26:44 -04:00
John Colvin b044ff3b2a chore: Transcribe more proto2 defaults to .conf files
After upgrading to proto3
2023-03-20 13:26:44 -04:00
John Colvin cd7856c46e fix build (spark): Add DeploymentType proto to spark_core 2023-03-20 13:26:44 -04:00
John Colvin 3be0ee6072 refactor: Move LazyObservable to Spark.Core.Reactive 2023-03-20 13:26:44 -04:00
John Colvin 198d26fda1 refactor: Move ObservableExtensions to Spark.Core.Reactive 2023-03-20 13:26:44 -04:00
John Colvin 8b26ac4456 chore: Remove unused code 2023-03-20 13:26:44 -04:00
John Colvin d6f172e953 refactor: Move KeyedValueSet to Spark.Core.Collections
Also rename to 'KeyedValueCollection'
2023-03-20 13:26:44 -04:00
John Colvin 91ee9b739a refactor: Move ChangeDictionary to Spark.Core.Collections 2023-03-20 13:26:44 -04:00
John Colvin b568128180 improvement: Set sys cfg build_type to release (if not debug)
For completeness sake
2023-03-20 13:26:44 -04:00
John Colvin 53a87530ee refactor: Remove erroneous 'qualifier' field from SystemConfig 2023-03-20 13:26:44 -04:00
John Colvin 450de301a9 build: Generate tsconfig file in the build dir
It never should have been dumped in the source directory in the first
place.
2023-03-20 13:26:44 -04:00
John Colvin 462b0f4eda build: Get rid of redundant py CMake utils 2023-03-20 13:26:44 -04:00
John Colvin 17402ce94a refactor: Replace os::bts_data_path w/ SystemConfig::data_path 2023-03-20 13:26:44 -04:00
John Colvin b7fae8a6f5 fix: Init quickbus node cfg w/ proper defaults 2023-03-20 13:26:44 -04:00
John Colvin 4058a98290 refactor: Rename .conf files w/ snake_case
To be consistent w/ corresponding .proto files
2023-03-20 13:26:44 -04:00
John Colvin 06d7693ed6 fix: Set hardcoded defaults for quickbus cfg
Remove these hardcoded vals once config defaults have been properly
refactored
2023-03-20 13:26:44 -04:00
John Colvin 2b01f3d902 fix: Ensure shared mem block size isn't 0 2023-03-20 13:26:44 -04:00
John Colvin d231ee50b7 chore: Fill in tedious defaults for jetfix cfg 2023-03-20 13:26:43 -04:00
John Colvin 815546d5ab fix build: Link appropriate libs for api server build 2023-03-20 13:26:43 -04:00
John Colvin 3fda0e4427 build: Add api server (dotnet) build tgt to CMakeLists 2023-03-20 13:26:43 -04:00
John Colvin a1eec029ac build: Only add sparkd related tgts if BUILD_SPARKD is true 2023-03-20 13:26:43 -04:00
John Colvin 2bbe92dbab build: Add option to enable/disable building docs
We only need to build the docs for proper releases
2023-03-20 13:26:43 -04:00
John Colvin b3d0040faa build: Replace CMAKE_BUILD_TYPE refs w/ generator expressions
To support multi-config generators (e.g., Ninja MultiConfig)
2023-03-20 13:26:43 -04:00
John Colvin c3e924be17 build (sparkd): Build server_layout target by default
The 'server_layout' was recently excluded from the default build target,
'all', because it depends on sparkd. The was done so we could optionally
configure cmake to build libspark without sparkd, as the new websocket
api server only depends on the former.
2023-03-20 13:26:43 -04:00
John Colvin dc5574e660 build: Use generator expression in tsconfig path
This is the modern CMake way. It makes the code cleaner, and supports
multi-config generators
2023-03-20 13:26:43 -04:00
John Colvin 5c19b391b1 chore: Add 'bin' dir to gitignore
The IDE (vscode) generates a 'bin' dir in the Spark.Admin.Console proj.
Presumably, this happens because the out dir is specified as a command
line arg, rather than defined in a proj file, as is the case w/ the
Spark client build.
2023-03-20 13:26:43 -04:00
John Colvin 79cb3162f2 build: Stop tracking CMakeDeps files
Not sure why these files were tracked in the first place, but cmake
automatically detects changes to the source file glob. Perhaps they were
originally added because it didn't work on some older version of CMake.
2023-03-20 13:26:43 -04:00
John Colvin e49254356a chore: Update 'tsconfig.g' path in .gitignore
Should've done this when the 'src/web' was renamed 'Spark.Admin.Console'
2023-03-20 13:26:43 -04:00
John Colvin 3192ef5561 build: Link cmake out dir to dotnet out dir
So dotnet intellisense knows where to find generated source files
2023-03-20 13:26:43 -04:00
John Colvin 8158bcb4f3 fix: Remove symlink reguardless of source path's existence 2023-03-20 13:26:43 -04:00
John Colvin b03cb94d60 build: Fix typo in msbuild prop 2023-03-20 13:26:43 -04:00
John Colvin 0f968c65b6 Fix client build after porting api server to linux 2023-03-20 13:26:43 -04:00
John Colvin 6b92773e87 build: Add quiet_exec.sh to build deps
This script probably won't ever change. Nevertheless, it is a dependency
of the admin console build.
2023-03-20 13:26:43 -04:00
John Colvin 870e1b7301 build: Use webpack mode equiv for debug/release build types 2023-03-20 13:26:43 -04:00
John Colvin 477a2f6da3 build (refactor): Rename build_web -> build_admin_console 2023-03-20 13:26:43 -04:00
John Colvin 85fe84406d chore: Clean up build_web.py a bit 2023-03-20 13:26:43 -04:00
John Colvin e8096a4db9 refactor (build): Consolidate web build into Spark.Admin.Console sln 2023-03-20 13:26:43 -04:00
John Colvin e68e673835 refactor (build): Remove redundant CWD class 2023-03-20 13:26:43 -04:00
John Colvin 53274e865a fix (pre-emptive): Fix CWD pop_path default value
In Python, default param values are evaluated once (not each time the fn
is called). This meant that, unless 'pop_path' was explicitly specified
in the CWD ctr, it wasn't necessarily the current working directory.
2023-03-20 13:26:43 -04:00
John Colvin 64df20cb36 refactor: Remove unused config-fallback path
This seems to have been here since the dawn of Spark. It is only
initialized via the -ConfigFallback option in the sparkd cli, an option
that no one ever uses (the cli provides no documentation for it either).
2023-03-20 13:26:43 -04:00
John Colvin 1977ad8ad4 build (web): Upgrade web build to net7.0 2023-03-20 13:26:43 -04:00
John Colvin a7e63d02e9 refactor: Use 'preferred_separator' when normalizing path
So callers don't have to provide the platform-dependent separator arg
2023-03-20 13:26:43 -04:00
John Colvin 593be8d069 diag: Log error on login fail 2023-03-20 13:26:43 -04:00
John Colvin f7e173f902 refactor: Enable MDConsumerInterop for api server build 2023-03-20 13:26:43 -04:00
John Colvin 7eefae4c42 diag: Add config logs
This may be temporary, but we should keep them until we know the new
proto3 configs are solid
2023-03-20 13:26:43 -04:00
John Colvin 7bb0951169 feat: Add dump-books/securities cmds to api server cli 2023-03-20 13:26:43 -04:00
John Colvin 787fb879d2 refactor: Make TickUtils public 2023-03-20 13:26:43 -04:00
John Colvin c23dafcb89 refactor: Overload subscription fns w/ filter delegate
Makes the impl more robust, as there is no reason the filter must be
tied to a specific type of filter object
2023-03-20 13:26:43 -04:00
John Colvin 111278b63b refactor: Make SecurityCriteriaExtensions public 2023-03-20 13:26:43 -04:00
John Colvin 2008478378 fix (pre-emptive): Fix typo (check val == 1, not 0)
Bugs (fixed):
   The IObservable.StopAfter ext fn never actually stops the sequence
   (even after the timeout expires).
2023-03-20 13:26:43 -04:00
John Colvin d5de60bc21 refactor: Move TableFormatter into spark_core 2023-03-20 13:26:43 -04:00
John Colvin 76172d0a5f fix: Align first item with others in TableUpdate description 2023-03-20 13:26:43 -04:00
John Colvin 1893df1f5c improvement: Lookup key rather than iterate through items 2023-03-20 13:26:43 -04:00
John Colvin a07fa26bfe fix: Pass BlitUserSymbol by val to cpp
This is a csharp/cpp interop method. The csharp delegate, which is passed
to and eventually invoked from cpp, accepts this param by value already,
but for some reason the corresponding cpp delegate accepts that same
param by ref. While working to enable the api server build on Linux, I
discovered this delegate was receiving bogus data from cpp. The problem
went away when I changed the cpp delegate param to be passed by value,
rather than ref.
2023-03-20 13:26:43 -04:00
John Colvin 41447067a2 fix: Pass non primitive args by ptr in native interop 2023-03-20 13:26:43 -04:00
John Colvin 1dd3d39a21 fix: Add nullcheck in FlattenTableSeries 2023-03-20 13:26:43 -04:00
John Colvin 4f772a1d57 build: Don't explicitly set GENERATED True for gen'd protos
CMake does this automatically now (as of version 3.20). Also, for some
reason unbeknownst to me, cmake doesn't clean the generated proto files
when they are explicitly marked as such.
2023-03-20 13:26:43 -04:00
John Colvin 97bd49d221 fix (py): Ensure 'PathOrNone.path' is actually Path or None 2023-03-20 13:26:43 -04:00
John Colvin b4374cec6b build: Add script to build api server 2023-03-20 13:26:43 -04:00
John Colvin 7e5c1218a3 build: Make app-data, shared mem paths configurable via CMake
This allows sparkd and the api server to run simultaneously in the same
docker, w/ independent data (on disk)
2023-03-20 13:26:43 -04:00
John Colvin 475970659c fix: Rename Logging.conf lowercase to match .proto
Now that we run csharp on Linux, case sensitivity matters
2023-03-20 13:26:43 -04:00
John Colvin e0706dde01 refactor: Move DeploymentType cfg to its own file 2023-03-20 13:26:43 -04:00
John Colvin 986ea74e63 fix: Call Enumerable.FirstOrDefault explicitly in overload
Bugs (Fixed):
  * StackOverflow ex is thrown in EnumerableExtensions.FirstOrDefault
    (custom overload by us) when the 'predicates' param is empty

   Cause: Our FirstOrDefault overload was calling itself (recursively),
   rather than System.Linq.Enumerable.FirstOrDefault
2023-03-20 13:26:43 -04:00
John Colvin fa0e6f7c10 fix: Get rid of 'Press any key to cancel' prompt
Console.Read throws an exception when running on linux. Furthermore, the
process can still be killed w/ ctrl+c so this doesn't remove any
functionality.
2023-03-20 13:26:43 -04:00
John Colvin ea5156122c refactor: Init ServiceContext & login outside of data sync
The login process is asynchronous, so it doesn't really fit in the
(synchronous) 'WebsocketDataSync.init' fn. This also reduces some state
in WebsocketDataSync, which is always a good thing, as it makes the
ServiceContext member readonly, and allows it to assume the user is
already logged in.
2023-03-20 13:26:41 -04:00
John Colvin 97b974a31f refactor: Clean up ServiceContext a bit 2023-03-20 13:23:49 -04:00
John Colvin ef98682620 refactor: Add IServiceProvider interface to Spark.Api
Designed to resemble Microsoft's well-known interface,
System.IServiceProvider
2023-03-20 13:23:49 -04:00
John Colvin d70eb158c4 build: Upgrade Google.Protobuf to v3.21.12 2023-03-20 13:23:49 -04:00
John Colvin 6fc34e922a build: Remove unused msbuild Item Proto3Excel 2023-03-20 13:23:49 -04:00
John Colvin fe65554c7a build: Add linux/windows OS conditions to msbuild props 2023-03-20 13:23:49 -04:00
John Colvin 78d9b678a8 build: Consolidate Proto3 output paths to OutDir & CSName
Unf, CSName is necessary because protoc converts .proto filenames to
TitleCase when generating .cs files. The other generated files
(client.pb.cs, server.pb.cs and immutable.pb.cs) don't have this problem
because they are generated with our own custom plugin.py, which gives us
control over the generated filename.
2023-03-20 13:23:49 -04:00
John Colvin 88302c9470 build: Upgrade TargetFramework to net7.0
We've been using several net7.0 preview features for a while now. Now that a
stable net7.0 release is available, it is time upgrade officially. This also
aids the effort to build csharp on Linux, where these preview features didn't
work out of the box. Lastly, trying to make these preview features work would
be a waste of time, as namespaces/interfaces in the official release have
changed in a way that isn't backwards compatible w/ the preview features.
2023-03-20 13:23:49 -04:00
John Colvin ac6c9e5c46 fix: Fix typo (make prop static) 2023-03-20 13:23:49 -04:00
John Colvin b1de323151 build: Use lower case exts in msbuild Directory.Build files
This is necessary now that we are building csharp on Linux, where, unlike
Windows, paths are case-sensitive.
2023-03-20 13:23:49 -04:00
John Colvin 24e57872ce build: Add Spark.Api.Server sln
This sln contains the csprojs needed to run the websocket api server on
linux. Like the spark_client sln, it also depends on libspark.
2023-03-20 13:23:49 -04:00
John Colvin ddd3f301b3 chore: Remove obsolete proto messages 2023-03-20 13:23:49 -04:00
John Colvin 7007fc9d6b chore: Remove obsolete proto option 'cc_enable_arenas' 2023-03-20 13:23:49 -04:00
John Colvin 7ca407fc42 chore: Translate proto2 default vals to .conf files
All proto2 config was just upgraded to proto3, which doesn't support
default values
2023-03-20 13:23:49 -04:00
John Colvin 5217e8801e Update externals to get new proto v21.12 (windows) 2023-03-20 13:23:48 -04:00
John Colvin ddd50cd916 build: Remove unused build prop 'protogen'
This was only needed to generate proto2 csharp classes, which were all
just upgraded to proto3
2023-03-20 13:23:48 -04:00
John Colvin 9ae3ababfa build: Remove proto2 target/props from cs build
Don't need them now that all cfgs have been upgraded to proto3
2023-03-20 13:23:48 -04:00
John Colvin 753cac0e7a refactor: Make proto-generated c# classes public
Two partial class defs are generated per proto. While the 'main' def was
already public, the shorter one in 'immutable.cs' was not.
2023-03-20 13:23:48 -04:00
John Colvin 6c3c9ebbcb refactor: Convert ui cfg to proto3 2023-03-20 13:23:48 -04:00
John Colvin 3aaa25a3e8 refactor: Convert toggles cfg to proto3 2023-03-20 13:23:48 -04:00
John Colvin 3fc0bce1de chore: Remove unused file 2023-03-20 13:23:48 -04:00
John Colvin fdb4544cb5 refactor: Convert various proto2 cfgs to proto3 2023-03-20 13:23:48 -04:00
John Colvin f5741d8095 refactor: Convert system/logging cfg to proto3 2023-03-20 13:23:48 -04:00
John Colvin 539d1cfeae build: Add option to use clang-13 explicitly 2023-03-20 13:23:48 -04:00
John Colvin c1ed79757c Upgrade linux protobuf from 3.19 -> 4.21.12 2023-03-20 13:23:48 -04:00
John Colvin c37727f482 Update externals to get emumba-deribit v3.3.1 2023-03-20 13:23:48 -04:00
John Colvin b25cd39481 fix build (linux): Update externals to support clang13, gcc12
Fixes the Release build (Debug was okay)
2023-03-20 13:23:48 -04:00
arhamGIT 5f93bed074 order update working 2023-03-20 16:13:50 -04:00
John Colvin bf87c46fcd fix build: Remove inappropriate ThreadStatic attr
This has likely been incorrect for a while. The problem surfaced after
upgrading to net7.0, as the new framework emits a warning (CA2259) when the
attribute is associated with a non-static field.
2023-03-07 16:30:59 -05:00
John Colvin 222d4b266e build: Disable warning cs8981
This is a new warning, introduced in net7.0, that disallows lowercase
class names. Our spark_crypto.prod branch currently uses protoc v3.19.1,
which is incompatible with this new warning, as it generates
classes with lowercase names. We can re-enable the warning when we
upgrade protoc to 3.21.12 (this has been done in the api server branch).
2023-03-07 16:25:21 -05:00
John Colvin d593eaf058 build: Upgrade TargetFramework to net7.0
We've been using several net7.0 preview features for a while now. Now that a
stable net7.0 release is available, it is time upgrade officially. This also
aids the effort to build csharp on Linux, where these preview features didn't
work out of the box. Lastly, trying to make these preview features work would
be a waste of time, as namespaces/interfaces in the official release have
changed in a way that isn't backwards compatible w/ the preview features.
2023-03-07 16:17:39 -05:00
arhamGIT ef9502c81b order entry working 2023-03-03 17:17:23 -05:00
arhamGIT 4b2c2de990 id changed to string 2023-03-02 10:32:08 -05:00
arhamGIT 79dc76c5df added entry point for taha 2023-02-28 10:14:28 -05:00
Taha Afzal eaa6493ce1 Deribit production markets can work with SimExecution 2023-02-27 20:54:43 -05:00
Taha Afzal 9fd0df2a13 SimExecution can be turned on from config now 2023-02-27 15:44:58 -05:00
arhamGIT fdbc64dfc5 basic order(lim/mark/ib) entry/deletion working 2023-02-27 13:45:45 -05:00
Taha Afzal d272612c6c Removed SimExecutionGateway's dependency on MDClient 2023-02-26 23:04:08 -05:00
Taha Afzal 77408c8c5e Fixed Self matching 2023-02-26 22:29:10 -05:00
Taha Afzal 09958eb333 SimExecutionGateway can not reflect the trades permenantly in the books 2023-02-24 11:06:26 -05:00
Taha Afzal fdb7bbdac2 SimExecutionGateway can now deal with books with 0 qty levels 2023-02-23 15:51:36 -05:00
Taha Afzal a7f24e84e4 Fills are now generated for SimExecutionGateway 2023-02-23 14:21:07 -05:00
Taha Afzal 7e5c71f337 SimExecutionGateway almost working 2023-02-23 13:43:09 -05:00
arhamGIT 62c20c96b4 forgot one file from last commit 2023-02-21 09:21:55 -05:00
arhamGIT 6b491ec209 strig list working 2023-02-21 09:16:43 -05:00
arhamGIT d009deea0e added list comprehension 2023-02-20 09:15:41 -05:00
Taha Afzal bed6feae3f Simplified SimExecutionGateway by combining order actions and matching into one 2023-02-19 00:49:30 -05:00
Taha Afzal d508d34a3a Completed books/order matching tests for SimExecutionGateway 2023-02-14 23:17:49 -05:00
Taha Afzal 5904bab03e Fixing bug with order crossing market in SimExecutionGateway 2023-02-14 16:21:57 -05:00
Taha Afzal fc9519cde3 Tests completed for working orders in the book (for SimExecution) 2023-02-14 10:06:53 -05:00
Taha Afzal 2dc823a6ac Added all the stateless book/order matching functions, and a few test cases 2023-02-13 20:09:47 -05:00
arhamGIT 390d901463 hooked subscriptions up 2023-02-13 11:50:27 -05:00
Taha Afzal ae9366f44a Adding comments and cleaning SimExecutionGateway 2023-02-12 21:27:54 -05:00
Taha Afzal db344656e5 Adding matching logic to SimExecutionGateway 2023-02-09 22:45:58 -05:00
Taha Afzal ac31deed5b Fixed Jetfix conf, and added some logs to SimExecutionGateway 2023-02-08 14:08:38 -05:00
John Colvin a0bd207d93 feat (internal): Add price stats to md client 2023-02-08 00:33:10 -05:00
John Colvin d62f88691c feat (internal): Add price ticker to md client 2023-02-08 00:23:41 -05:00
John Colvin b7c018b664 chore: Remove generated csproj file that was added by accident 2023-02-08 00:23:41 -05:00
John Colvin 55d021ccb1 fix build (publish): Copy libspark.dll to publish dir
Bugs (fixed):
  * Spark.exe generated by the installer crashes immediately on launch because
    it cannot find the libspark.dll.

  Cause: Sure enough, libspark.dll isn't in the install folder
  (AppData\Roaming\bts\Spark)

* Build libspark explicitly
* Fix libspark.dll copy src path
2023-02-07 16:41:11 -05:00
Taha Afzal 60cde0712f Streamlining MarketDataGateway further - all sources are started independently of each other now, with their own GeneralMarketDataListener 2023-02-07 11:59:11 -05:00
arhamGIT 83127523b9 Merge branch 'spark_crypto.websocket-api' of bitbucket.org:bluetradesys/spark into spark_crypto.websocket-api 2023-02-07 10:51:40 -05:00
arhamGIT 86c824e28d changed made to make js client work 2023-02-07 10:51:29 -05:00
arhamGIT 0349ff95bf book subscription working 2023-02-07 10:51:09 -05:00
Taha Afzal c20f017069 Simplified MarketDataGateway to deal with multiple market data producers as start-and-forget 2023-02-06 21:27:41 -05:00
John Colvin f62c867a20 feat (internal): Add trades md client 2023-02-06 19:42:43 -05:00
John Colvin b403cacb93 refactor: Simplify TradesSource SecurityCriteria filter 2023-02-06 19:42:43 -05:00
John Colvin 4499a3751f refactor: Move TradesSource to spark_api
So it can be used in the new websocket api
2023-02-06 19:42:43 -05:00
John Colvin 6d887cb72f refactor: Get rid of redundant Product struct 2023-02-06 19:42:43 -05:00
John Colvin 10e13dd51d refactor: Rename 'market_data' -> 'books' 2023-02-06 18:18:53 -05:00
Taha Afzal 5122038d21 Fixing windows side build 2023-02-06 15:21:51 -05:00
Taha Afzal 3039df56a0 Hooking up SimExecutionGateway to GeneralMarketDataListener 2023-02-06 14:04:57 -05:00
arhamGIT 85edf68ff0 secuirties working 2023-02-06 09:43:47 -05:00
arhamGIT 259ac99cdd books working 2023-02-06 09:25:12 -05:00
arhamGIT 39c3a34158 Merge branch 'spark_crypto.websocket-api' of bitbucket.org:bluetradesys/spark into spark_crypto.websocket-api 2023-02-06 09:21:04 -05:00
arhamGIT dde8223052 books working 2023-02-06 09:05:32 -05:00
Taha Afzal 4dc675eb9c Getting rid of Jetfix's platform, using Security.proto's exchange 2023-02-05 20:24:29 -05:00
John Colvin 2548f27527 feat (internal): Add manual fills to orders client 2023-02-04 10:36:31 -05:00
John Colvin ff03f092f5 chore: Remove useless white space 2023-02-04 10:36:31 -05:00
John Colvin 53ef67869b refactor: Support null filters in orders client 2023-02-04 00:35:43 -05:00
John Colvin d48f34d109 feat (internal): Add fills to OrdersClient 2023-02-04 00:35:42 -05:00
John Colvin a2d9c39325 feat (internal): Add securities to md client 2023-02-04 00:32:29 -05:00
John Colvin 0c4f684036 improvement: Include qty display w/ BookTuple
This is needed to properly format json for websocket api
2023-02-04 00:09:24 -05:00
John Colvin e587c8dbd7 refactor: Rename IncrementalMarketDataClient w/out Incremental 2023-02-04 00:09:24 -05:00
John Colvin 069ab45164 improvement: Provide order updates w/ corresponding root order 2023-02-04 00:09:24 -05:00
John Colvin 7b7de6f8fc refactor: Move long 'RootDependent' lambda into own class 2023-02-04 00:09:23 -05:00
John Colvin 9ed3b2aecb refactor: Return IConnectableObservable in TableUpdate.Cache
We were hiding the fact that an IConnectableObservable was being used
internally. Even worse, we were discarding the IDisposable returned from
its 'Connect' fn.
2023-02-04 00:09:23 -05:00
John Colvin ecf3f922df refactor: Replace OrderSecurity refs w/ OrderRecordTuple
The latter type was introduced to support the websocket server. Unlike
the old 'OrderSecurity' types, it has no wpf deps, and can thus be built
on Linux
2023-02-04 00:04:43 -05:00
John Colvin 1aa283fc8c chore: Make AlgoID type public
It's referenced by outside projects, namely Spark. The build would have
been broken were it not for the 'InternalsVisibleTo' attribute.

TODO: Remove all 'InternalsVisibleTo' attributes (they smell hacky)
2023-02-04 00:04:43 -05:00
John Colvin bfbf640986 refactor: Move AccountSecurityKey to spark_api 2023-02-04 00:04:43 -05:00
John Colvin b6cd470ca6 refactor: Move AlgoDefinitionMetadata to spark_api
Part of larger effort to move deps from Spark to linux compatible projs
2023-02-04 00:04:43 -05:00
John Colvin d826cff9d7 chore: Remove unused code 2023-02-04 00:04:42 -05:00
John Colvin ff65a5ca5b refactor: Get rid of old MarketDataClient in sdk examples 2023-02-04 00:04:42 -05:00
arhamGIT 9e012a2b3a Merge branch 'spark_crypto.websocket-api' of bitbucket.org:bluetradesys/spark into spark_crypto.websocket-api 2023-02-02 11:29:04 -05:00
arhamGIT a6f1c51539 changes suggested by john for sub hdlr 2023-02-02 11:27:13 -05:00
John Colvin 655f27543b refactor: Include security w/ book data 2023-02-01 15:16:08 -05:00
John Colvin 762baca586 improvement: Add Errors enum mapped to exit code 2023-02-01 15:16:08 -05:00
John Colvin ec769b49f6 feat (internal): Add expirations to SecurityCriteria 2023-02-01 15:16:08 -05:00
John Colvin 5153e8725c refactor: Replace terse null/empty checks w/ is_null_or_empty 2023-02-01 15:16:08 -05:00
John Colvin f79f2cc5b9 chore: Add NotNullWhen(false) attr to 'is_null_or_empty' 2023-02-01 15:16:08 -05:00
John Colvin cdf4f341d4 fix: Consider SecurityCriteria 'defined' if callputs non-empty 2023-02-01 15:15:04 -05:00
John Colvin f649c26304 chore: Remove superfluous fn 2023-02-01 15:14:23 -05:00
John Colvin 3a8d759a26 refactor: Move OrderFactory to own file, merge w DynamicOrderHelper 2023-02-01 15:14:23 -05:00
John Colvin 29ca6e98fb refactor: Replace ShowOrderTicket tag's anon tuple w/ proper type 2023-02-01 15:14:22 -05:00
John Colvin 328dd9b2d3 feat (internal): Add OrdersClient 2023-02-01 15:14:22 -05:00
John Colvin a1e58e5498 feat (internal): Add AdminClient 2023-02-01 15:14:22 -05:00
John Colvin ef43aebc5d refactor: Remove misplaced admin-related fns from OrderFactory 2023-02-01 15:14:22 -05:00
John Colvin 9a3304201e refactor: Consolidate sync_with/never_duplicate fns 2023-02-01 15:14:22 -05:00
John Colvin cd88710385 refactor: Move order utils from spark to spark_api
This is part of a larger effort to decouple business logic from windows
and the ui. Some utils are immediately needed for the websocket api.
2023-02-01 10:07:43 -05:00
John Colvin 2b3e4a4579 refactor: Move DisplayNameHelper to spark_core 2023-02-01 10:07:43 -05:00
John Colvin 05731cb9a2 refactor: Add OrderPriceComparer spark_api proj 2023-02-01 10:07:42 -05:00
arhamGIT 01eeadaf42 added changed suggested by john 2023-02-01 03:29:22 -05:00
arhamGIT b4721882ec log.notnull instead of customs, removed helpers 2023-02-01 00:15:11 -05:00
arhamGIT 3e894d0e27 used LoggerContext instead of custom task 2023-02-01 00:08:07 -05:00
arhamGIT 4e42125398 changed Programs.cs to use task.wait 2023-01-31 23:58:11 -05:00
arhamGIT 664cc37a03 fixed small bug 2023-01-31 23:46:51 -05:00
arhamGIT f4a0da3518 code for book subcription building 2023-01-30 09:11:54 -05:00
Taha Afzal cc8c181728 Establishign the connection bw listener and sim execution 2023-01-27 17:13:06 -05:00
John Colvin 5339d4ff93 refactor: Impl 'market_data' fn w/ SecurityCriteria filter 2023-01-27 14:36:38 -05:00
John Colvin a31368f08d refactor: Make 'subscribe_md' fn criteria param nullable
It was already checking for null, just needed to add the '?' to convey
this to callers. Also improve the method by checking if SecurityCriteria
'is_defined' before applying the filter.
2023-01-27 14:36:38 -05:00
John Colvin 136938ba1e refactor: Add NotNullWhen attr to 'is_defined' ext
So static analysis tools recognize that the 'criteria' param must be
non-null when 'is_defined' returns true
2023-01-27 14:36:38 -05:00
John Colvin 09316b630d refactor: Make SecurityCriteria/Clause public 2023-01-27 14:36:38 -05:00
John Colvin 99a661089f refactor: Move Book into own file 2023-01-27 13:48:19 -05:00
arhamGIT f26cb80e5f changes for marketdataclient 2023-01-27 13:47:15 -05:00
Taha Afzal dde8524ecb Renaming some general classes and moving them out of cc 2023-01-26 23:22:36 -05:00
Taha Afzal cda3d18838 Simulted Exchange base classes added 2023-01-26 20:02:10 -05:00
arhamGIT fae0325e87 added dummy function 2023-01-26 14:21:14 -05:00
Taha Afzal 118ca7248d Merge branch 'spark_crypto.ccapi' of bitbucket.org:bluetradesys/spark into spark_crypto.ccapi 2023-01-25 17:01:51 -05:00
Taha Afzal afa194ac54 Fixing the live vs replay priority (In short, if an exchange is configured for both live and replay, live gets precedence. Also, replay market data is not recorded 2023-01-25 17:01:32 -05:00
John Colvin 3538712692 fix (mview): Raise prop changed for qty '_text' props
Bugs (fixed):
  * Quantities for Deribit futures are all 0

    Cause: The row wasn't refreshing qty '_text' props when the quantities
    changed
2023-01-24 23:24:37 -05:00
Taha Afzal 604c34384c Adding Deribit to the default MarketDataConfigs 2023-01-24 22:01:33 -05:00
Taha Afzal c18f1baafa Merge branch 'spark_crypto.ccapi' of bitbucket.org:bluetradesys/spark into spark_crypto.ccapi 2023-01-24 21:08:56 -05:00
Taha Afzal 8e04920ab9 Starting Deribit from MarketDataGateway 2023-01-24 21:08:24 -05:00
arhamGIT aa3147a4a6 Merge branch 'spark_crypto.dev' of bitbucket.org:bluetradesys/spark into spark_crypto.dev 2023-01-24 13:34:19 -05:00
arhamGIT f7ab968e1b added flow comments 2023-01-24 10:32:44 -05:00
arhamGIT 5ce3d9d1a9 updated datasync 2023-01-24 10:32:43 -05:00
arhamGIT e2a9c91d3f added comments 2023-01-24 10:32:43 -05:00
arhamGIT 78a8652e7a separated logic into three classes needs comments 2023-01-24 10:32:43 -05:00
arhamGIT e9c536df96 sockethandler done, need to give cons back to gtwy 2023-01-24 10:32:43 -05:00
arhamGIT 94429a1fbc merged trydisconnecting with other function 2023-01-24 10:32:43 -05:00
arhamGIT f2728dcf78 thread safe socket added 2023-01-24 10:32:43 -05:00
John Colvin cbfd18c371 ui (orderbook): Use qty display cfg in right panel 2023-01-24 00:51:54 -05:00
John Colvin 60a31eb102 chore: Remove unnecessary BTS_EXPORTs 2023-01-24 00:51:54 -05:00
John Colvin 7c1e95d35d ui (mview): Only show merged qty by default
Hide direct/implied qty cols
2023-01-24 00:51:54 -05:00
John Colvin 90a046d539 feat (ui): Use fractional qtys in md
Changing quantities from ints to floats introduces new rounding/display issues
(unlike with ints, we can't just call 'ToString()' and expect consistent
formatting). Formatting settings are needed, such as num-decimal-places and
display-multiplier, and they must be configurable per SecurityCriteria.

Fortunately, such configuration already exists in the form of SecurityMetadata
config (we tackled the same issue for order-entry). In order to integrate this
(newer) config with market data, references to the (older)
SymbolUIConfiguration (used once upon a time for DJ work), had to be replaced.
2023-01-24 00:51:53 -05:00
John Colvin 935a6f846c fix build (client): Disable cpp that isn't needed on win 2023-01-24 00:51:44 -05:00
John Colvin b02f814c65 fix (ui): Remove context menu items that do nothing
They were accidentally brought over from Edge. Their functionality
hasn't been implemented in Spark.
2023-01-23 01:34:55 -05:00
John Colvin 8c42aa93a2 chore: Remove unused code 2023-01-23 01:34:55 -05:00
John Colvin 357bc5ad44 fix (ui): Format perp futs 'Perp' suffix (not bogus exp) 2023-01-23 01:34:55 -05:00
John Colvin 07fb9e8eb7 ui (pnl): Use 'default_text' foreground in popup titles
Previously, the foreground for some popups was a hardcoded dark gray,
which became hard-to-read following the Dark Theme changes.
2023-01-23 01:34:55 -05:00
Taha Afzal d641eba252 Removing some unused headers from includes 2023-01-22 18:38:31 -05:00
John Colvin 9f9fc4c8ab fix (analytics-exps): Wait for sym list before loading selection
Bugs (fixed):
   * The selected symbols aren't restored with the workspace

   Cause: The selected symbols were getting loaded once, in the ctr, before the
   list of symbols had been properly initialized. The view automatically
   deselects items that aren't in the ItemsSource.
2023-01-22 12:23:03 -05:00
John Colvin 2aef052398 ui (pnl): Use gray font color when pnl is zero 2023-01-22 12:23:03 -05:00
John Colvin 1c2027506a refactor: Clean up NullableColor/FontWeightProto 2023-01-22 12:23:03 -05:00
John Colvin c3274b2008 refactor: Rename argb_color -> to_uint
This is a more appropriate name
2023-01-22 00:11:28 -05:00
John Colvin 99aef9e86e refactor: Get rid of redundant prop 'NullableColorProto.argb'
It was a relic of the past. Although different fns are called in the props'
getters ('rgb_color' vs 'argb_color'), both ultimately return the same value.
2023-01-22 00:09:38 -05:00
Taha Afzal 77697f4312 Fixing windows C++ build 2023-01-21 22:16:35 -05:00
Taha Afzal 247d8b7ee8 Merging 2023-01-21 20:57:59 -05:00
Taha Afzal 06bed8747f Adding Replay to MarketDataGateway 2023-01-21 20:38:37 -05:00
John Colvin 8e9233022e fix (mini-ob): Return root element in CancelColumn.view_factory
Bugs (fixed):
  * Mini Orderbook crashes immediately when opened

  Cause: The (cell) view_factory fn wasn't returning the cell's root
  element, and was instead returning the root's child element.
  As a result, when the row attempted to add this element to its visual
  tree, the following exception was thrown:

    System.ArgumentException: Specified Visual is already a child of
    another Visual or the root of a CompositionTarget.
2023-01-21 13:41:04 -05:00
John Colvin 954dc582dc fix build: Make non-class fns in cpp files static
The build was broken bc a fn w/ signature 'eq(double, double)' was
defined twice, in TaskingEyeAlgo.cpp and CCAPISingleOrderManager.cpp.
2023-01-20 15:08:21 -05:00
John Colvin df510f0e3b Merge origin/spark_crypto.ccapi.fractional_qty_md 2023-01-20 15:08:19 -05:00
Taha Afzal ef9b3b0544 Adding config protobuf for MD Replay 2023-01-20 11:35:58 -05:00
Taha Afzal b8b3a57e8e Putting recording behind config 2023-01-19 23:09:28 -05:00
Taha Afzal d18020a45c Merging spark_crypto.md_recording 2023-01-19 15:31:36 -05:00
Taha Afzal e652c1cd24 Fixing the build (as per John) 2023-01-18 13:11:25 -05:00
Taha Afzal 8f5d6ccd51 Organized the common md recording functions 2023-01-17 23:36:04 -05:00
Taha Afzal cbe4a488b9 Adding error handling for file based replay 2023-01-17 22:09:17 -05:00
Taha Afzal 8ce3ef69d0 Odds and Ends with replay 2023-01-17 17:09:02 -05:00
Taha Afzal ab9fab13d9 Merging from spark_crypto.cme 2023-01-17 11:25:23 -05:00
Taha Afzal 309b0e64b2 Adding better logs 2023-01-16 21:46:27 -05:00
arhamGIT a6324a9aa2 added flow comments 2023-01-16 13:19:39 -05:00
arhamGIT 64417a6867 updated datasync 2023-01-16 03:21:42 -05:00
arhamGIT 8e16dcde0d added comments 2023-01-16 02:25:18 -05:00
Taha Afzal 2d8f6df0e2 Adding SimExecutionGateway, its not implemented yet 2023-01-15 19:09:21 -05:00
Taha Afzal 10199fb7ad Adding spread support in replay 2023-01-13 16:20:33 -05:00
arhamGIT 6f6ac2866c separated logic into three classes needs comments 2023-01-13 07:21:10 -05:00
arhamGIT 46837facbf sockethandler done, need to give cons back to gtwy 2023-01-13 05:55:12 -05:00
John Colvin 4916211301 refactor: Add BTS_FATAL macros
Essentially just shorthand for 'bts_assert(false)'
2023-01-12 12:50:29 -05:00
John Colvin 1d8c4a0954 chore: Add various MarketDataConfig.conf profiles 2023-01-12 12:50:28 -05:00
John Colvin 64601914b2 feat: Add Binance US market data 2023-01-12 12:50:28 -05:00
John Colvin b3ca5f133e build: Add config profiles to override generated defaults 2023-01-12 12:50:28 -05:00
John Colvin 9c3397d367 build (web): Upgrade node packages
As of now (2022-01-03), only 1 package isn't up-to-date: 'protobufjs'.
It remains locked at version 6.11.3. Anything newer breaks the web build
with mysterious webpack errors that suggest various imports aren't
properly resolved.
2023-01-12 12:50:28 -05:00
John Colvin b3dfce9f91 build (web): Automatically generate protos in venv
Finally, the server can be built outside of the venv (all dependent
build steps activate it automatically)
2023-01-12 12:50:28 -05:00
John Colvin 590d0028c2 chore: Add '!=' operator for Book
The '==' operator had already been defined. Presumably, the '!='
operator was omitted by mistake.
2023-01-12 12:50:28 -05:00
John Colvin 67cf817aa9 chore: Impl to/from_json for domain/md types
So objects of these types can be readily logged in a format that is
comprehensive, familiar, and consistent
2023-01-12 12:50:28 -05:00
John Colvin 35811512a4 chore: Remove FTX from default md conf
FTX is no more
2023-01-12 12:50:28 -05:00
John Colvin c13c85ed44 refactor: Rename 'num_book_levels' -> 'num_depth_levels'
This seems to be a more common nomenclature
2023-01-12 12:50:28 -05:00
John Colvin 5c85dabad8 fix (ccapi logging): Store filename strings in buffer
So they don't point to bogus memory when the log is persisted (async)
2023-01-12 12:50:28 -05:00
John Colvin c134b0f5ca refactor: Move 'AllSameType' to its own header 2023-01-12 12:50:28 -05:00
John Colvin d92ad7e2b6 build: Make ccapi log level configurable via cmake cache var
Default to 'Debug' for debug builds, and 'Warn' for release builds
2023-01-12 12:50:28 -05:00
John Colvin 4547d8cec1 refactor: Add runtime cfg for exch urls
CCApi otherwise harcodes them as pre-processor definitions (compile time).
We can use this runtime cfg to switch between test/prod urls without rebuilding
2023-01-12 12:50:28 -05:00
John Colvin 402a1f50f2 chore: Clean up Symbols.conf a bit 2023-01-12 12:50:28 -05:00
John Colvin bada16ade7 chore: Add documentation for TimeStamp 2023-01-12 12:50:28 -05:00
John Colvin 9794465d88 fix build (gcc): Mark a few constexpr fns inline instead
The gcc compiler correctly detected the impls weren't constant expressions
2023-01-12 12:50:28 -05:00
John Colvin 1f163615c5 style: Run formatter on CMakeLists 2023-01-12 12:50:28 -05:00
John Colvin 4304d7f786 diag: Add output op & fmt impl for SecurityMarketDataStatistics 2023-01-12 12:50:28 -05:00
John Colvin 38a5d95df9 refactor: Change md config to support multiple venues at once 2023-01-12 12:50:28 -05:00
John Colvin 4897195629 feat: Add Binance USDS Futures market data 2023-01-12 12:50:28 -05:00
John Colvin 1416f05fbd chore: Remove unused protos 2023-01-12 12:50:28 -05:00
John Colvin ac1f64c3f5 fix build (sparkd): Add '-g' to cxx debug flags
Technically, the build wasn't broken, just the legacy script 'build_sparkd.py'.
The latest build procedure, which uses CMakePresets, doesn't have this problem.
2023-01-12 12:50:28 -05:00
John Colvin 8fa82840be feat: Add Binance market data
Restructure build configurations so 'dev' builds target venue test urls,
while 'prod' builds target production urls (technically, there is only
one prod build at the moment; it's compiled w/ gcc/release). This is
necessary because the urls ccapi uses are defined at compile time (all
seem to be pre-processor directives defined in ccapi_macro.h).
2023-01-12 12:50:28 -05:00
Taha Afzal af92b8922f MD Recording and Replay is almost done, some cleanup needed - mainly organizing config, better logs and some code comments 2023-01-12 09:59:01 -05:00
arhamGIT f3d1569cb3 merged trydisconnecting with other function 2023-01-12 09:45:59 -05:00
arhamGIT da41a23c0e thread safe socket added 2023-01-11 06:32:07 -05:00
Taha Afzal e79aebbc8a MDRecorder cleanup: 2023-01-09 23:20:46 -05:00
Taha Afzal fcd6038d5d Added implied market data to MDRecorder 2023-01-09 13:36:28 -05:00
Taha Afzal d1fe0a03b5 MDRecorder almost done, need record implied and RFQ requests, as well as exit after an alloted time of recording 2023-01-09 09:38:03 -05:00
Taha Afzal cfdca08cfe CME Template 8 2023-01-06 11:52:30 -05:00
John Colvin d400bf6263 refactor: Rename spartan 'FMT' macro 'TO_STRING'
Avoids conflict with new 'FMT' macro, which is an alias for 'fmt::format'
2023-01-04 13:35:38 -05:00
John Colvin fa438db001 style: Add 'ReflowComments: false' to clang-format
So clang-format doesn't make pretty doxygen comments ugly (it doesn't
seem to know how to format them properly).
2023-01-04 13:35:38 -05:00
John Colvin 31dd34522f chore: Add sec_descs to SecurityCriteria (cpp)
Corresponds to the 'names' field in SecurityCriteria proto
2023-01-04 13:35:38 -05:00
John Colvin f5221910c8 fix: Support Spots in security sort impl 2023-01-04 13:35:38 -05:00
John Colvin 6e7e1980f5 fix (temp): Skip duplicate sec-exp keys in old edge code
It wasn't designed to support multiple exchanges, so Futures with the same
sym/exp from different exchanges yield duplicate sec-exp keys.
2023-01-04 13:35:38 -05:00
John Colvin 11e884e166 fix build (win): Build files in 'core' dir 2023-01-04 13:35:38 -05:00
John Colvin 88943f0857 refactor: Pass ostream to LiveLadderPrinter (don't hardcode cout) 2023-01-04 13:35:38 -05:00
John Colvin a5459a3aff improve: Optimize BookSide::is_sorted 2023-01-04 13:35:38 -05:00
John Colvin e8fa4f23c6 refactor: Move ProtoReader/Printer to 'bts::io' ns 2023-01-04 13:35:38 -05:00
John Colvin df82c0790b fix: Remove leftover test-code flag
It was preventing securities from being propagated to shared memory
2023-01-04 13:35:38 -05:00
John Colvin 81f1d91f5b style: Run clang-format on lib/md dir 2023-01-04 13:35:38 -05:00
John Colvin abf0d45784 improvement: Refactor mdgw/ftx to use SecurityCriteria
So we can subscribe to depth for "FTX Options" or "FTX BTC Futures",
rather than having to list each security explicitly.

This commit also unhooks binance from MarketDataGateway. A new paradigm
is emerging with the FTX impl, and it'll be easier to redo Binance than
try to make the existing impl fit the new mold.

Unfortunately, ccapi doesn't provide all the security metadata we need, such as
the security type and expiration date/time, so we get the list of FTX
securities directly from the exchange.
2023-01-04 13:35:38 -05:00
John Colvin 556e2ab99e refactor (chore): Clean up domain::Security a bit
* Rename 'min_quantity_increment_ammount' -> 'min_quantity_increment' to fix typo
* Remove old 'min_quantity_increment' member (it wasn't referenced anywhere)
* Initialize SecurityCommon w/ reasonable defaults (skipping initialization seems
like a premature performance optimization)
* Add a few members to verbose 'to_string' result
2023-01-04 13:35:38 -05:00
John Colvin 4b60fb5141 chore: Add nifty EnumMacros to replace boilerplate code 2023-01-04 13:35:38 -05:00
John Colvin 5eb9c57ba1 refactor: Use core::TimeStamp instead of chrono in TradeRecord 2023-01-04 13:35:38 -05:00
John Colvin e08b80afee chore: Make AggressorSide implicit convert from 'Value' 2023-01-04 13:35:38 -05:00
John Colvin 9b8e5896a2 chore: Remove unnecessary include 2023-01-04 13:35:38 -05:00
John Colvin 55e8c60a0b chore: Move ContainsKey macro to lib/collections 2023-01-04 13:35:38 -05:00
John Colvin a30b026c9d chore: Tone down IDGenerator logging to Diag 2023-01-04 13:35:38 -05:00
John Colvin cb79cbeb45 chore: Move SecurityCriteria classes into libspark 2023-01-04 13:35:38 -05:00
John Colvin 0e101aaf8b improvement: Show sid in LiveLadderPrinter book output 2023-01-04 13:35:38 -05:00
John Colvin e8244595f3 chore: Add to_string fn to Security
For diagnostic purposes (esp while we integrate more exchanges)
2023-01-04 13:35:38 -05:00
John Colvin 37512eb8d6 chore: Add some basic functionality to core::TimeStamp 2023-01-04 13:35:38 -05:00
John Colvin 567db063f3 fix: Create string in FMT_IMPL macro so it's compatible w/ LOG
Otherwise variables which aren't copied by default become corrupt when they go
out of scope (which happens bc our logging system is async).
2023-01-04 13:35:38 -05:00
John Colvin cc1484a81e chore: Move OSTREAM_FMT_IMPL.h into lib/core 2023-01-04 13:35:38 -05:00
John Colvin 0dc278eed5 chore: Support timezones when parsing iso dates
This is needed because FTX (and perhaps other exchanges) format
expirations with timezones
2023-01-04 13:35:38 -05:00
John Colvin 43ba30365a fix: Update OSTREAM_FMT_IMPL macro
This macro defines 2 template specialization fns, 'parse' and 'format'.

* Change 'format' to be a const method
* Declare return type w/ 'decltype' (per latest official example from fmtlib)
2023-01-04 13:35:38 -05:00
John Colvin 02ac95404d chore: Remove unused files 2023-01-04 13:35:38 -05:00
John Colvin 8388bdf1ec chore: Add missing huobi & binance venues to 'Venue' proto 2023-01-04 13:35:38 -05:00
John Colvin 019c3dd8db chore: Replace magic strings w/ CCAPI macros
These come from ccapi, so the code should never break due to an update
(not necessarily the case with the magic strings).
2023-01-04 13:35:38 -05:00
John Colvin 481380f883 chore: Assign asset & group when parsing ccapi securities 2023-01-04 13:35:38 -05:00
John Colvin 7c66260ff1 chore: Rename 'security_type' -> 'type'
For convenience (it's shorter)
2023-01-04 13:35:38 -05:00
John Colvin ad465b593f chore: Add fns to access SecurityCommon fields from Security
Bc I'm lazy and don't want to write 'security_common' everytime I need to access
these fields
2023-01-04 13:35:38 -05:00
John Colvin 00d702f998 chore: Remove accidental include 2023-01-04 13:35:38 -05:00
Taha Afzal 872f55d6c3 Reducing the logs and couts that were put while interfacing with CC 2023-01-04 13:35:38 -05:00
Taha Afzal 84f4c38336 Enabling spot market dtaa in the UI 2023-01-04 13:35:38 -05:00
Taha Afzal b9b907490a Enabling spot market data 2023-01-04 13:35:38 -05:00
Taha Afzal 8c6835a919 Merging 2023-01-04 13:35:38 -05:00
Taha Afzal 3a6bda4e08 Removing temporary security creation from CCMarketDataListener 2023-01-04 13:35:38 -05:00
Taha Afzal 60f76344c2 UI changes in SecurityExtensions to accomodate FTX 2023-01-04 13:35:38 -05:00
Taha Afzal 1fff7d5bcd Removing #include of a deleted generated header 2023-01-04 13:35:38 -05:00
Taha Afzal d77d3ab6c7 Merging CCListener work from a different branch 2023-01-04 13:35:35 -05:00
arhamGIT 4c91538f22 base websockets working 2023-01-04 04:34:44 -05:00
Taha Afzal 2eca4f7f14 Fixing the build, unused variable 2023-01-03 14:53:03 -05:00
John Colvin 053fa461a2 chore: Remove unnecessary includes 2023-01-03 14:53:03 -05:00
John Colvin aa997466f0 chore: Remove unused files CCApiRequestor.h/cpp 2023-01-03 14:53:03 -05:00
John Colvin fdf4fce5fa refactor: Return error if md cfg invalid rather than assert/crash 2023-01-03 14:53:00 -05:00
Taha Afzal 5746460e8d QueryServer while handling mic's use switch for exchange instead of ifs 2023-01-02 18:44:59 -05:00
John Colvin 569ac8e3e0 fix: Fix typo in 'MarketDataRegistrationError' type name
The 'Registration' part was misspelled 'Regstration'
2023-01-02 18:44:59 -05:00
Taha Afzal d9efbb879d IDGenerator is a thread-safe singleton now 2023-01-02 18:44:59 -05:00
John Colvin 92ff4198ef refactor: Hook up ccapi 'on_securities' callback
Clean up ccapi md code while we're at it
2023-01-02 18:44:59 -05:00
John Colvin 48bd3ab49a chore: Remove Binance-specific md impl from MarketDataGateway
It was creating needless clutter, as it was written before we knew about
ccapi. The new plan is to use a simple adaptor to interface with ccapi
for every exchange md.

Note: There are a handful of files related to the historic Binance impl
in the folder /lib/md/binance. I'm keeping them around for now, since
they are generally independent/isolated, and aren't causing clutter or
compromsing other code. Some of the utils there may come in handy down
the road.
2023-01-02 18:44:59 -05:00
John Colvin 9c7fc000e5 refactor: Replace FTX ccapi impl w/ exchange agnostic one 2023-01-02 18:44:59 -05:00
John Colvin d2454b6b85 chore: Include <string> in MarketDataRegistrationError
Apparently <string> was included in all source files that referenced
MarketDataRegistrationError by coicidence (else the build would have been broken)
2023-01-02 18:44:59 -05:00
John Colvin b4cda81535 build: Add -g to CMAKE_CXX_FLAGS_DEBUG
This flag tells compilers (both clang and gcc) to produce debug info
2023-01-02 18:44:59 -05:00
John Colvin 2d0fae0cbe chore: Sort includes 2023-01-02 18:44:59 -05:00
Taha Afzal 5515404062 CCMarketDataListener now listens to CC and writes data to shared memory 2023-01-02 18:44:57 -05:00
John Colvin 24c4dc1861 fix build (g++-12 rel): Add '-Wnomaybe-uninitialized' flag
For some reason, this warning isn't suppressed in ccapi_date.h, which is
included as a system header (like all headers in externals). According to GCC's
documentation, compiler warnings shouldn't be emitted from system headers.

Disabling the warning for now so we can focus on bigger fish.
2023-01-02 18:42:39 -05:00
John Colvin 3b1a2357cc fix build (client): Change 'WIN32' macros to '_WIN32'
Not sure exactly how this broke, but the WIN32 macro is no longer defined.
2023-01-02 18:42:39 -05:00
John Colvin 35371fe971 refactor: Remove redundant optional.h
It was from a time when Windows std didn't provide the 'optional' header
2023-01-02 18:42:39 -05:00
John Colvin 365394f28b build: Fix build_spark.py (broken since CMakePresets introduced)
Pass additional cmake opts through cli. Specifically, those that were
moved from CMakeLists.txt to CMakePrests.json
2023-01-02 18:42:39 -05:00
John Colvin 88c70a3ea0 build (refactor): Add cmake_utils.py in py/core
So it can be referenced by both client/server build scripts
2023-01-02 18:42:39 -05:00
John Colvin b0eb1175c1 Update docker/linux for ubuntu 22.10 image 2023-01-02 18:42:39 -05:00
John Colvin e90d627125 build (web): Update npm packages 2023-01-02 18:42:39 -05:00
John Colvin c1190d4ef9 build (refactor): Remove unused cmake var SPARK_PYTHON 2023-01-02 18:42:39 -05:00
John Colvin 67487415ad build (refactor): Change some cmake cache vars to options 2023-01-02 18:42:39 -05:00
John Colvin dcf80d7067 build: Fix build_sparkd.py (broken since CMakePresets introduced)
Pass additional cmake opts through cli. Specifically, those that were
moved from CMakeLists.txt to CMakePrests.json
2023-01-02 18:42:39 -05:00
John Colvin 99a778811a fix build: Update externals
Disables a few warnings-as-errors in btree source files
2023-01-02 18:42:39 -05:00
John Colvin eb76f0a6c5 fix build (gcc-12, clang>=11): Update externals
Disables a few warnings-as-errors in catch2 source files
2023-01-02 18:42:39 -05:00
John Colvin b8de813859 build: Replace setup_builds w/ CMakePresets.json
Clean up CMakeLists a bit in the process:
   * Define more cmake vars in CMakePresets
   * Split linux/windows presets into separate files
2023-01-02 18:42:39 -05:00
John Colvin 6b480afd43 build (sparkd): Automatically create py venv in build script 2023-01-02 18:42:39 -05:00
John Colvin 40d21542ae build (sparkd): Pipe 'eval' cmd stdout/err back to shell
So we can actually see the build output
2023-01-02 18:42:39 -05:00
John Colvin a8af5d2523 fix build: Compile with gcc/g++ (version agnostic)
We don't really need a strict dependency on a compiler version, though
best practice is to use the latest gcc (12).
2023-01-02 18:42:39 -05:00
John Colvin bfd12aed63 tools (log): Fix 'pretty' script & rename 'show_last_run' 2023-01-02 18:42:39 -05:00
John Colvin 76936ea50d fix build (gcc): Disable warning stringop-overread
This warning (as error) was introduced with g++ 12
2023-01-02 18:42:39 -05:00
John Colvin 6947aea35e diag: Log emumba cfg parse error code 2023-01-02 18:42:39 -05:00
John Colvin 34be51c648 refactor: Include <limits> in sane_algorithm.h
Although the build was fine, many methods in this header file depend on 'limits'
so it is appropriate to include it. Presumably all references to such methods are
made from source files that include <limits> by coincidence.
2023-01-02 18:42:39 -05:00
John Colvin 56b68b9a24 fix build (gcc): Don't let switch case fall through
Even if the case is simply 'bts_assert(false)'
2023-01-02 18:42:38 -05:00
John Colvin 84e6f010d7 build: Benign changes to remove errors in gcc 12 2023-01-02 18:42:38 -05:00
John Colvin b360f953db build: Benign changes to remove errors in clang 15 2023-01-02 18:42:38 -05:00
Taha Afzal 320427c9c5 Merge branch 'spark_crypto.dev' of bitbucket.org:bluetradesys/spark into spark_crypto.dev 2022-12-25 16:17:12 -05:00
Taha Afzal 5e8543902e Sheet theos change colors for contracts that are in a task 2022-12-25 16:17:01 -05:00
John Colvin edae3c9ab7 build (refactor): Remove 'zip' opt from publish_spark
The slight convenience afforded by this opt doesn't seem worth the
additional complexity. This script produces a self-contained application
folder. Decisions on what to do with that folder (whether or not to zip
it, etc.) are best left upstream.
2022-12-23 11:40:35 -05:00
John Colvin fd9892c6b6 fix: Prevent raw_pb_callback premature garbage collection
Bugs (fixed):
   * Startup crash w/ error message: "A callback was made on a garbage
     collected delegate of type ApiNativeMethods.raw_pb_callback"

   Cause: The callback is only referenced in unmanaged c++. Without references
   in managed code, the Garbage Collector deems the delegate eligible for
   collection before the callback has finished execution.

   Note: The original solution forced a reference in managed code by storing it
   in a class-member 'keepalive' dictionary, whose life isn't bound to the
   [synchronous] scope of the 'send' method. The callback would then remove
   itself from the dictionary in its last line of code. While this reduced the
   chance of such an error occurring, occassional crashes persisted
   (particularly in low-bandwidth environments). I suspect the frequency at
   which garbage-collector threads run is inversely related to the frequency
   at which data arrives from the server, as the latter triggers execution of
   higher-priority threads.

   Steps to repro:
      1. Insert a Thread.Sleep statement (1000 ms should be sufficient) after
         the call that removes the last reference to the delegate (i.e., make
         the thread sleep for a significant amount of time in the callback
         AFTER it becomes eligible for garbage collection).

      2. Build, run, and observe crash on startup.

   Solution: Wrap the callback in another class, and store the wrapper
   in the dictionary rather than the callback itself. The reason why this
   works isn't totally clear, however its effectiveness has been verified
   with the repro (described above).
2022-12-23 11:25:07 -05:00
Taha Afzal 51c89fb8cc Merge branch 'spark_crypto.prod' into spark_crypto.cme 2022-12-21 20:38:42 -05:00
Taha Afzal 45668baaf8 Adding code to Main 2022-12-20 12:17:51 -05:00
Taha Afzal 305cc0e01c Adding simple concrete classes 2022-12-20 12:00:46 -05:00
Taha Afzal f0f365538b Initial check in for Websocker skeleton 2022-12-19 23:45:52 -05:00
Taha Afzal f9bba0baed Merge branch 'spark_crypto.dev' of bitbucket.org:bluetradesys/spark into spark_crypto.dev 2022-12-19 17:41:38 -05:00
John Colvin 306c18065a chore: Add csproj bones for websocket api 2022-12-19 14:25:37 -05:00
Taha Afzal ded674d87c Enabling CME market data, and adding some new logs to track initialization of resources 2022-12-19 14:15:04 -05:00
John Colvin c64c71c98c fix build (sparkd install): Copy plugins to install dir 2022-12-15 12:47:35 -05:00
John Colvin 7de87c1c25 ui (refactor): Consolidate (Repeat)Button colors to one class
The only difference between a RepeatButton and a regular Button is in
the click-behavior (they should look identical).
2022-12-15 12:47:35 -05:00
John Colvin 12716bb6e1 fix: Add a couple null checks 2022-12-15 12:47:35 -05:00
John Colvin 8e68d573ff ui (volsurface): Update oxyplot to get rid of 'dummy' win 2022-12-15 12:47:35 -05:00
Taha Afzal dd66e94bfd Merge branch 'spark_crypto.prod' of bitbucket.org:bluetradesys/spark into spark_crypto.prod 2022-12-09 16:59:50 -05:00
Taha Afzal d399f75648 Decreasing the log rate on the server 2022-12-09 16:59:08 -05:00
John Colvin 937173dd2f ui (volsurface): Update oxyplot to get rid of 'dummy' win 2022-12-09 13:23:44 -05:00
Taha Afzal f1f7a40fba Changing some Sheet UI Defaults 2022-12-09 01:53:08 -05:00
Taha Afzal 5522d364d4 Fixing Sheets and SpreadBox colors 2022-12-09 00:47:47 -05:00
John Colvin 3a218d246e ui: Style ListBoxEx w/ dark theme colors
This control used in grid filters (multi-select)
2022-12-08 13:52:14 -05:00
John Colvin bafc28e3bc ui: Touch up orderbook panel (dark theme) 2022-12-08 13:52:14 -05:00
John Colvin 6d1eb474c4 ui (grid settings): Align column-list cell params
The [vertical] alignment issue was only noticeable in the pnl settings dialog
(its cell params section is taller than those in other settings dialogs), where
the shorter columns list was center aligned with the taller cell params.
2022-12-08 13:52:14 -05:00
John Colvin d172f4ffab ui: Touch up grid settings dialogs (dark theme) 2022-12-08 13:52:13 -05:00
John Colvin c527b6e84f ui: Touch up AlgoStudio (dark theme) 2022-12-08 13:51:55 -05:00
John Colvin b8c7abd6b3 ui: Style TickUpDown ctrls w/ dark theme colors 2022-12-08 13:30:55 -05:00
John Colvin fea8e184c1 style: Sort tag attributes in xaml
* Put attached props before regular (i.e., not attached) props
* Sort alphabetically, with exceptions for props that are logically
  grouped together. For example Width/MinWidth/MaxWidth may be
  adjacent, as they are all 'width' props.
2022-12-08 13:30:55 -05:00
John Colvin 44a7bc0de9 style: Format large xaml files
* Improves readability
* Adds new lines to make navigating through the tags easier
* Mostly just white space changes

fix add empty lines

fix empty lines (reword commit to 'white space changes')

fix white space
2022-12-08 13:30:55 -05:00
arhamGIT 4bad9ef183 ladder lines 2022-12-08 13:30:55 -05:00
arhamGIT 590835c627 ladder changed 2022-12-08 13:30:54 -05:00
arhamGIT 997766df92 partial PNL header fix 2022-12-08 13:30:54 -05:00
arhamGIT cdbf66cd6c grid fixed with new row colors 2022-12-08 13:30:54 -05:00
arhamGIT 4c90eed59e bunch of changes for dark theme 2022-12-08 13:30:54 -05:00
John Colvin d260f8ce2c ui: Hardcode dark theme 2022-12-08 13:30:54 -05:00
Taha Afzal 12d0afb215 Merge branch 'spark_crypto.tasking_eye' of bitbucket.org:bluetradesys/spark into spark_crypto.tasking_eye 2022-12-06 15:21:46 -05:00
Taha Afzal a9040f5f8f For TaskingEye, side is not a part of the algo any more. Therefore selecting the bids and starting an eye, makes it go shoot at the bid, and vice verca for the asks 2022-12-06 15:21:37 -05:00
Taha Afzal 6e6acb5a71 Fix for TaskingEyeAlgo with empty security lists (ie when algo is launched from the ladder) 2022-12-06 15:17:54 -05:00
Taha Afzal 256697d5b0 Side is a parameter of TaskingEyeAlgo, it is inferred from the OrderDefinition (like other algos) 2022-12-06 11:06:44 -05:00
Taha Afzal be9067b22e AlgoWrapper was not publishing the filled fractional qtys, fixed now 2022-12-05 22:59:59 -05:00
Taha Afzal a5874a59f0 AlgoWrapper was not reporting fractional qty fills, this fixes it now via using the get_quantity function in orderman_common.h 2022-12-05 21:56:50 -05:00
Taha Afzal e8405e5638 OrderServiceServer starts calling ServiceBridge's do_work only once it gets the ready signal from ServiceBridge 2022-12-05 14:33:04 -05:00
Taha Afzal ab70c9dfb1 Fixing problem with TaskingEye for fractional shot qtys 2022-12-04 23:21:23 -05:00
Taha Afzal 1e4d8584c7 Merge branch 'spark_crypto.tasking_eye' of bitbucket.org:bluetradesys/spark into spark_crypto.tasking_eye 2022-12-04 20:36:25 -05:00
Taha Afzal 29eef77099 ServiceBridge now periodically publishes the TheoEvent (with a flag indicating such). This helps the algos get the theos without waiting for the next update 2022-12-04 20:36:10 -05:00
Taha Afzal c50e89ae78 Merge branch 'spark_crypto.tasking_eye' of bitbucket.org:bluetradesys/spark into spark_crypto.tasking_eye 2022-12-03 00:28:12 -05:00
Taha Afzal 89917713d6 Tasking eye UI work in the sheets 2022-12-03 00:28:00 -05:00
Taha Afzal 1e0ac46e07 Account name is part of the Tasking Eye Algo now 2022-12-02 23:18:06 -05:00
Taha Afzal 6279b8f5f5 Securities (string of sec_ids unfortunately) is a parameter in Tasking Eye Algo now 2022-12-02 15:44:25 -05:00
Taha Afzal 4007c87e20 Merge branch 'spark_crypto.tasking_eye' of bitbucket.org:bluetradesys/spark into spark_crypto.tasking_eye 2022-12-01 09:50:47 -05:00
Taha Afzal ec0f42e76c Adding timer for the theo publishing time 2022-12-01 09:50:37 -05:00
Taha Afzal 99f63c2a6f Fixed a big with the shot throttle 2022-11-30 21:42:54 -05:00
Taha Afzal 12ac20f756 TaskingEyeAlgo code complete, it is firing orders and correctly (needs more testing and ui integration) 2022-11-30 15:39:00 -05:00
Taha Afzal 9d36d74005 TaskingEyeAlgo correctly subscribes and receives driver books 2022-11-29 13:42:15 -05:00
Taha Afzal da2cc977a0 TaskingEyeAlgo hooked up to theos 2022-11-29 00:11:04 -05:00
Taha Afzal 84e7bdb586 Adding TaskingEyeAlgo 2022-11-28 16:57:12 -05:00
Taha Afzal b062a229c8 Added on_theos to IAlgoOrder, and hooked up the plumbing 2022-11-28 10:54:38 -05:00
Taha Afzal 8680b3d815 Publishing the interp theos to the server is almost done 2022-11-25 22:20:08 -05:00
Taha Afzal 6ab0e4c5a7 Merge branch 'spark_crypto.tasking_eye' of bitbucket.org:bluetradesys/spark into spark_crypto.tasking_eye 2022-11-25 16:36:34 -05:00
Taha Afzal 867bcf97d0 Added InterpTheosServerPublisher, which allows to publish precomputed theos to the server 2022-11-25 16:36:26 -05:00
Taha Afzal 360bf9b37e Added get_driver_sec to ITheoCalculator 2022-11-25 16:22:10 -05:00
Taha Afzal 4d85106fbf Added server method to publish precomputed theos, feed it into a calculator, and publish the calculator as an event 2022-11-23 12:52:01 -05:00
Taha Afzal 64a253b581 Fixed the vol change in day bug (difference of uint64s was being assigned to an int32) 2022-10-26 09:37:25 -04:00
Taha Afzal 5f379c1356 SpreadBox minor button display fixes 2022-10-13 07:32:03 -04:00
Taha Afzal 76c80383ce Merge branch 'spark_crypto.dev' into spark_crypto.prod 2022-10-13 00:55:11 -04:00
Taha Afzal e5a6ea80f0 Making the SpreadBox button click more obvious (ToolStripButtons do not have the button like feel of a click) 2022-10-13 00:54:13 -04:00
Taha Afzal b921e644df Merge branch 'spark_crypto.dev' into spark_crypto.prod 2022-10-13 00:13:42 -04:00
Taha Afzal 1c3fb8c192 Merge branch 'spark_crypto.dev' of bitbucket.org:bluetradesys/spark into spark_crypto.dev 2022-10-13 00:00:40 -04:00
Taha Afzal d530d86a30 Merge branch 'spark_crypto.prod' of bitbucket.org:bluetradesys/spark into spark_crypto.prod 2022-10-12 23:57:08 -04:00
Taha Afzal 9d9229ef56 Merge branch 'spark_crypto.spread_creation' into spark_crypto.dev 2022-10-12 23:43:11 -04:00
Taha Afzal 6f6f3c0800 RFQ qty and sides, sent from the client, are now sent over to Deribit 2022-10-12 23:39:44 -04:00
Taha Afzal 7b234044f6 Added controls in the spreadbox that allow for specifying qty and side for an RFQ 2022-10-12 20:08:24 -04:00
John Colvin d46c82f34c feat (ladder): Add side/qty inputs for rfqs 2022-10-12 15:41:57 -04:00
Taha Afzal 4d5af610f0 Added an 'RFQDialog' tag to SparkTags, that launches athe RFQDialog window 2022-10-12 11:55:19 -04:00
Taha Afzal 1e94466f24 RFQ for new spreads are now routed to emumba's create_combo method 2022-10-11 15:55:55 -04:00
Taha Afzal 3210c0bce4 Combo creation at Deribit is turned on from the UI now (it was disabled with a boolean switch prior to this commit) 2022-10-11 10:53:09 -04:00
Taha Afzal 849f4ac579 Merge branch 'spark_crypto.prod' of bitbucket.org:bluetradesys/spark into spark_crypto.prod 2022-10-10 15:14:40 -04:00
John Colvin 6d56f67697 feat: Add volsurface graph settings dialog
A lot of the vm code was already there, but I cleaned it up a bit. The view was
ported over from edge and also cleaned up/tweaked a bit.
2022-10-10 14:46:34 -04:00
John Colvin c0289719e7 fix (pre-emptive): Add null check in 'DisposeAll' fn
Bugs (fixed):
  * The volsurface graph settings dialog crashes when you click OK/Apply

    Note: This fix is 'pre-emptive' because I saw the bug while working on the
    vs graph settings dialog. That feat will be added shortly in a subsequent
    commit (I wanted to commit the fix first so the bug wouldn't be in the
    official 'feat' revision/commit).

    Cause: A null ref ex is thrown in DisposeAll, because the List of IDisposables
    to dispose contains null items.

    Another way to fix the bug would have been to make sure null items aren't
    added to these Lists in the first place. However, that places the burden (to
    check for null) on the callers' shoulders, and leaves open the potential for
    this bug in every place where 'DisposeAll' is called.
2022-10-10 14:35:29 -04:00
John Colvin a32e969b39 fix (ui): Fix ColorPickerControl/Popup SelectedColor binding
There were a few issues here:
  * The ColorPickerPopup was binding it's own SelectedColor prop to the internal
    ColorPickerControl's SelectedColor prop. The SelectedColor prop is typically also
    bound to some (external) viewmodel's 'color' prop. This is problematic as
    Dependency Properties can only be associated with one 'Write' binding.

  * The code designed to keep various sub-color properties in sync with the
    result color was confusing, and didn't seem to work. For example, the ARGB
    sliders' values didn't match those of the 'result' color.
2022-10-10 14:22:34 -04:00
John Colvin f5899e7781 fix (vs graph): Bind series vm color to correct OxyPlot prop
Bugs (fixed):
  * The VolSurface graph colors don't reflect the settings. They appear to be
    randomly generated.

   Cause: The series vm's color prop was bound to 'TextColor' in the model; it
   should have been bound to 'Color'
2022-10-10 11:17:17 -04:00
John Colvin ed07c956a7 ui: Remove quotes around 'Enter' in col filter prompt
Looks cleaner this way, and isn't clipped given the current width
2022-10-10 11:15:14 -04:00
Taha Afzal 2022ee5a07 Completing Deribit execution test 2022-10-10 11:01:59 -04:00
Taha Afzal a0bc1e8691 Spreader can handle options now 2022-10-09 23:56:38 -04:00
Taha Afzal c1951ac49a Added ability to view md/theo in USD, in the sheets 2022-10-08 21:45:57 -04:00
John Colvin e159e0e77b ui (man fills): Add 'Time Entered' column 2022-10-07 15:04:36 -04:00
John Colvin 6bbd4134ec ui (man fills): Use foreground to indicate buy/sell 2022-10-07 15:04:35 -04:00
John Colvin 8a72b2150a ui (rec rep): Use font weight to indicate price/qty discreps 2022-10-07 15:04:35 -04:00
John Colvin e4d5d1eeb2 ui (rec rep): Use foreground to indicate long/short pos 2022-10-07 15:04:35 -04:00
John Colvin 6bf2726b63 ui (rec rep): Filter out system spread positions
The exchange splits spread positions into the individual legs
2022-10-07 14:50:10 -04:00
Taha Afzal a63af0cb46 Manual tests for Deribit order execution 2022-10-06 22:37:39 -04:00
John Colvin b2a7e1d2ed feat: Add 'Send RFQ' button to ladder 2022-10-05 13:35:00 -04:00
John Colvin 32a38b3b5a refactor: Remove unused code 2022-10-05 13:35:00 -04:00
John Colvin 8533bcf0a7 style: Format LadderView.xaml
It's a big file. Irregular formatting/spacing makes it difficult to navigate.

* Use max line width of 100
* Add empty line after multiline tags
* Trim trailing white space
* Rename terse xml namespaces:
   - 'converters' -> 'cv'
   - 'spark' -> 'sp'
   - 'mbts' -> 'u'

fix fmt ladder
2022-10-05 13:34:39 -04:00
John Colvin e00eae1129 refactor (ui): Enable auto-refresh in column-text filters
feat (mview): Enable auto-refresh in security filter

This behavior is (more) consistent with other modern search uis
2022-10-05 01:05:24 -04:00
John Colvin 95595c4cbf fix: Arrange Adorner by target's RenderSize (not Desired)
Bugs (fixed):
  * The Adorner that is used to render a text prompt on top of text boxes appears
  clipped; it doesn't span the width of the TextBox.
2022-10-05 01:05:24 -04:00
John Colvin aad36a4972 fix (mview): Prevent icon flicker when selection changes
Observe changes to MarketViewVM.current_row' rather than
'MarketViewVM.selected_rows'. The latter (collection) is momentarily empty when
the selection switches from one row to another, during which time the buttons
are disabled, hence the flicker.
2022-10-05 01:05:24 -04:00
Taha Afzal cc03f47d70 SpreadBoxes can be brought up from MV 2022-10-04 22:17:46 -04:00
Taha Afzal 5c5e5c23ef SpreadDisplayForm's start location is not tied to the launching window now 2022-10-04 21:31:30 -04:00
John Colvin 4b531a2a1a feat: Add 'Send RFQ' button to mview 2022-10-04 18:07:30 -04:00
John Colvin 35530bec0b refactor: Remove unused variable 2022-10-04 16:42:50 -04:00
John Colvin 5853bb2436 refactor: Make RFQSend tag data immutable
It's safer this way. The data doesn't need to be mutated.
2022-10-04 16:39:01 -04:00
John Colvin bfdf45d30d fix (ui): Fix typo so spreads' qty metadata comes from 1st leg 2022-10-04 15:33:11 -04:00
Taha Afzal a330bc5020 MV and Ladder use GreekTuple.normalized_theo now 2022-10-03 23:20:48 -04:00
Taha Afzal 66f68ef3ec Fixing the spread filled price (EMNativeOrder needed to ignore spread_leg like the GLBX and ICENativeOrders 2022-10-03 23:19:10 -04:00
Taha Afzal d6e651129b RFQs are fully hooked up 2022-10-03 14:54:09 -04:00
Taha Afzal d4a59b8253 UI sends RFQ requests (and almost combo creations) 2022-10-03 00:04:55 -04:00
Taha Afzal 569f1460a4 Wiring up RFQ sending 2022-10-03 00:04:55 -04:00
Taha Afzal 2f369dbd57 RFQ wiring complete 2022-10-02 22:20:44 -04:00
Taha Afzal 444e486862 Changing RFQ Proto 2022-10-01 22:15:05 -04:00
Taha Afzal b42504d827 RFQ work to identify the spreads 2022-09-30 15:26:22 -05:00
Taha Afzal 18ac85a454 SpreadBox can identify listed spreads, shows the market data as well as allows orders (through ladder) and RFQs 2022-09-30 15:26:22 -05:00
Taha Afzal 788a1a06c5 Greeks for Spreads and Futures are added to bus's Greeks 2022-09-30 15:26:22 -05:00
John Colvin 787b485bce fix (ladder): Init qty input to null (not nan)
Bugs (fixed):
  * The ladder qty box defaults to 'NaN' when opened
  * Cannot change qty input via keyboard until 'NaN' is cleared
2022-09-28 22:57:36 -05:00
John Colvin 788df0e888 fix build (gcc-11): Include optional 2022-09-28 21:22:47 -05:00
Taha Afzal 916532f7c5 Fixing formatting of Deribit spreads 2022-09-28 21:22:47 -05:00
Taha Afzal 3c511bb177 RFQ hooked up on the server side 2022-09-28 21:22:47 -05:00
Taha Afzal 49f13755c6 Adding RFQ to OrderService interface 2022-09-28 21:22:47 -05:00
Taha Afzal dcb4b1ae7e Spread leg fills at Deribit now have the correct prices 2022-09-28 21:22:47 -05:00
Taha Afzal 2152b48fe2 Spread execution is almost done, leg prices are not correct 2022-09-28 21:22:47 -05:00
John Colvin b6f2f99f21 improve: Get spread qty metadata from first leg 2022-09-28 21:22:47 -05:00
John Colvin c44df8ec06 style: Add documentation to ContractLegEnumerable 2022-09-27 17:03:58 -05:00
John Colvin 493f082d6d fix (mview): Apply sec price format to theo & driver 2022-09-27 16:01:49 -05:00
John Colvin bbe76b2709 feat (ladder): Show theo, delta, vega in left panel 2022-09-27 15:53:22 -05:00
John Colvin ce8eda24fc refactor: Make vm prop changed subs more performant 2022-09-27 10:53:39 -05:00
John Colvin 9f9113bf9a refactor: Clean up LadderSettingsVM a bit
* Add readonly modifiers
* Declare 1 member per statement (don't separate members of same type by commas)
2022-09-26 13:34:50 -04:00
John Colvin a199595938 feat (part): Add 'Spread Box' menu item in mview
It posts the selected securities to the 'SpreadBox.ShowSecurities' tag.

TODO: Hook up handler to launch spread boxes in response to the
'SpreadBox.ShowSecurities' tag
2022-09-22 23:51:51 -04:00
Taha Afzal 83de5fac75 Deribit spread market data is now written to shared memory 2022-09-22 23:51:48 -04:00
Taha Afzal c688657d53 Vol surfaces are curtailed to the newest 500 at server startup 2022-09-22 23:51:41 -04:00
John Colvin a5c62c66b1 refactor (ladder): Get theos from Greeks tag
The old tag, KeyedTheos, is redundant and will be removed soon
2022-09-22 22:04:44 -04:00
John Colvin 6d595d18ee fix: Fix typo in requirements.txt ('=' -> '==') 2022-09-21 01:55:28 -04:00
John Colvin 946e8f1c47 Update externals
* Removes no-longer necessary node_modules dir
2022-09-21 00:17:31 -05:00
John Colvin b765c3756d chore: Remove arbitrary [vscode] 'tasks.json'
Vscode json files (settings, tasks, launch, etc.) should be tracked in the
dev/<name> dirs
2022-09-21 00:17:31 -05:00
John Colvin 54dc7bf6c3 fix (webapp): Add method without 'set_' prefix in generated js
We already do this for 'get_' prefixes
2022-09-21 00:17:31 -05:00
John Colvin 6142a08db6 build (client): Copy libspark.dll to 'publish' dir
This dll isn't automatically copied when 'dotnet publish' is executed, because
dotnet core isn't really integrated with cpp
2022-09-21 00:17:31 -05:00
John Colvin ca59976e00 fix build (cpp win): Use explicit void template arg in memcpy 2022-09-21 00:17:31 -05:00
John Colvin 7f7a160916 fix build (cpp win): Disable ccapi code in windows 2022-09-21 00:17:31 -05:00
John Colvin c8eb51c303 build (refactor): Move web build scripts to tools/py
Even though they're specific to the web CMakeLists proj, it's good to have all
build scripts in one place
2022-09-21 00:17:31 -05:00
John Colvin 4160233a58 build: Get rid of redundant setup_builds.sh
The new build_sparkd.py script handles both configuration and actual build
2022-09-21 00:17:31 -05:00
John Colvin c5f79f754b build: Compile sparkd w/ newer gcc v11 2022-09-21 00:17:31 -05:00
John Colvin 5f568d681a Update docker/linux to get gcc v11 2022-09-21 00:17:28 -05:00
John Colvin 83a2147428 build (sparkd): Enable Binance for ccapi 2022-09-21 00:14:38 -05:00
John Colvin 9dd2cee6d9 refactor: Repurpose ccapi ftx-impl for general use 2022-09-21 00:14:38 -05:00
Taha Afzal 57365013bd CCMarketDataListener is mostly complete, error handling and RFQs/state remains 2022-09-21 00:14:38 -05:00
Taha Afzal 3d55ef075b CCMarketDataListener writes its security to shared memory now 2022-09-21 00:14:38 -05:00
Taha Afzal 14da6461b1 Constructor added to CCMarketDataListener 2022-09-21 00:14:38 -05:00
Taha Afzal e84d3df024 Adding skeleton 2022-09-21 00:14:38 -05:00
John Colvin ed38fe0ce9 fix build (web): Install webpack-cli 2022-09-21 00:14:38 -05:00
John Colvin b5daee3bcf build (web): Replace deprecated fn copy_tree w/ copytree 2022-09-21 00:14:38 -05:00
John Colvin f5c8c29f5a build: Migrate web build to net6.0
Clean up the web build process a bit while we're at it
* Add 'custom_commands' to run npm install in CMakeLists
* Generate tsconfig files for CMake preset configurations
* Rename local variables to _snake_case in CMakeLists
2022-09-21 00:14:38 -05:00
John Colvin 89fa2eae50 build: Enable web build in wsl
Not sure why this was disabled in the first place
2022-09-21 00:14:38 -05:00
John Colvin 41b8c9238c build: Remove server/sparkd from libspark include path 2022-09-21 00:14:38 -05:00
John Colvin 28b66306da chore (linux build): Add benign changes to satisfy gcc11 2022-09-21 00:14:38 -05:00
John Colvin 0bdbc1897a chore (linux build): Add benign changes to satisfy clang13 2022-09-21 00:14:38 -05:00
John Colvin c3d9443a89 build: Automate venv activation in server build 2022-09-21 00:14:38 -05:00
John Colvin 400db13a78 build: Update cmake-min-version to 3.12
Several 'add_compile_definitions' calls were added to the root
CMakeLists.txt as part of the ccapi_cpp lib integration (3.12 is the
version in which that call was introduced)
2022-09-21 00:14:38 -05:00
John Colvin 1d7d5858d5 build: Add script to build sparkd (server)
Similar to the py script used to build spark (client), 'build_spark.py'.
2022-09-21 00:14:38 -05:00
John Colvin 8792f24c5d refactor (build): Move '_exit' to common module logging
Also rename 'exit_msg' since 'exit' is already a builtin fn
2022-09-21 00:14:38 -05:00
John Colvin 76d35b16eb refactor (build): Change SparkPaths to return Path objs 2022-09-21 00:14:38 -05:00
John Colvin 81f7fe72ab refactor (build): Move CWD & SparkPaths to common module file_utils 2022-09-21 00:14:38 -05:00
John Colvin 649ba11edb Update docker/linux 2022-09-21 00:14:32 -05:00
John Colvin 2fc6d7c262 Update externals
* Upgrade ccapi to v5.31.2
* Upgrade emumba to v3.0.6
* Update emumba license (good til 2023-08-01)
2022-09-19 17:50:40 -05:00
John Colvin 45421eedce chore: Move 'CME' specific script to 'cme' dir 2022-09-19 17:50:40 -05:00
John Colvin 8ecb3118e4 refactor (script): Use Path type rather than str 2022-09-19 17:50:40 -05:00
John Colvin 3fdb10890d chore: Rename scripts w/ consistent grammar 2022-09-19 17:50:40 -05:00
John Colvin 2a6224c88d chore: Move py scripts/utils into 'py' dir 2022-09-19 17:50:40 -05:00
John Colvin 8d6ddc8250 chore: Remove unused legacy scripts 2022-09-19 17:50:40 -05:00
John Colvin 6cc8590a1c build: Use venv python to execute buildspark.py
Previously, the virtual environment was activated in the Proto3 build target.
Since the proto3 build target is executed once per proto file, and 91 proto
files are processed during the client cs build, this added significant time to
the build. For example, on [John's]my laptop, activating the venv takes ~0.15s,
which amounts to ~9.55 secs per build.
2022-09-19 17:50:40 -05:00
John Colvin 063d908775 build: Remove unused legacy build script 2022-09-19 17:50:40 -05:00
John Colvin 93565f0ebf fix (jenkins): Update jenkins build procedures for spark-crypto 2022-09-19 17:50:40 -05:00
John Colvin 1d7fcf5d18 build: Move ':create_venv' fn to its own cmd script
So jenkins scripts can reference it as well as buildspark.cmd
2022-09-19 17:50:40 -05:00
John Colvin 897d20f12f build: Refactor buildspark.py so 'build' fn can be imported
This way, jenkins build/deploy py scripts can import 'buildspark.build', and thus
don't have to than re-invent the 'build' wheel
2022-09-19 17:50:40 -05:00
John Colvin a928925252 build: Add 'publish' target to build script for jenkins 2022-09-19 17:50:39 -05:00
John Colvin 4088affa15 fix (sparkd clang): Use 'clang' c compiler w/ 'clang++'
Otherwise cmake picks 'cc' by default

Bugs (fixed):
  * Sparkd crashes due to strange runtime error related to multithreaded access
    of std::promise in clang builds
2022-09-19 17:50:39 -05:00
Taha Afzal 7def6aacd2 MergedMDDaemon has a timer that can periodically remove expired contracts (not enabled right now) 2022-09-16 09:51:27 -04:00
Taha Afzal 94ae1780cd Expired contracts are filtered out from the risk report 2022-09-16 09:51:27 -04:00
John Colvin 2c65c4376b fix (orderbook): Invalid row view when qty display changes
Bugs (fixed):
  * Orderbook qty formatting is inconsistent across Orderbook instances. Within
    one Orderbook, the formatting does seem to be consistent.
2022-09-15 16:02:34 -04:00
John Colvin 68bb3dbfa1 refactor: Remove redundant member 'filled_quantity_text'
It is redundant since another prop, 'display_filled_quantity_text', returns the
exact same value. Eventually we should bring this prop back and replace the
'display_' one. The latter is a legacy prop, from the time before we had proper
Security metadata config. Removing the former for now because having both of
them causes needless confusion.
2022-09-15 15:58:23 -04:00
John Colvin 82a73693a6 fix: Post keyed theos to bus
They were already being created, just not published (perhaps due to a bad merge)
2022-09-15 15:39:38 -04:00
John Colvin 612cd4a4c8 fix: Remove refs to invalid 'default' SecurityImmutable
It's most (probably all) cases where a static 'default' SecurityImmutable is
used, a Nullable<SecurityImmutable> would more accurately represent the state,
which could likely (probably always) be described as "waiting for my real
security from an asynchronous source."

Bugs (fixed):
  * [Race] When Fills window opens, an exception is thrown if the sec-filter's
    items are sorted with a 'default' SecurityImmutable.

    Cause: The static default SecurityImmutable doesn't have an underlying sec
    type (i.e., ContractOneofCase == None). The compare fn doesn't support
    this.

    TODO (maybe): It might be a good idea to 'fix' the compare fn as well
    (i.e., make it support 'None' sec types)

TODO (probably): Remove remaining references to the static default
SecurityImmutable
2022-09-15 15:39:38 -04:00
John Colvin b3828dfc53 refactor: Add lazy param factory logic to SparkCommand
Some SparkCommands convert their parameter to another object that is posted to
the bus when the command is executed. The lazy param factory logic allows those
SparkCommands to hold off on converting the parameter until just before execution.
Thus, these SparkCommands naturally avoid passing invalid parameters to the
delegate (assuming the 'can_execute' evaluates to false for invalid parameters).
2022-09-15 15:39:38 -04:00
John Colvin 01f26567ed refactor: Get rid of SecurityGrid base class
It was pretty old code, and needed to be removed due to its dependence on
non-null SecurityImmutables. The 'default' SecurityImmutable object is invalid,
and throws in its property accessors since the underlying Security object is null.
2022-09-15 15:27:35 -04:00
John Colvin 90d21c9c15 refactor (synth man): No need to support vm reassignment
This was over-engineering..it made things complicated for zero benefit
2022-09-15 15:27:35 -04:00
John Colvin 6351c1340e refactor: Rename SelectManyInSeries -> SelectSeries
Shorter is better in this case
2022-09-15 15:27:35 -04:00
John Colvin 18cdddf76d git: Remove phantom submodule
Can't recall why 'deribit-crypto-connector-demo-application' was added as a
submodule in the first place. It has no actual corresponding files in the main
repository, just an entry in the '.gitmodules' file. Removing it now because
it's causing jenkins builds to fail (jenkins attempts to clone all submodules
in the .gitmodules file, and it doesn't have access permission on this one).
2022-09-08 22:07:05 -04:00
John Colvin b14c8bb1ac Update docker/linux
* Get ccapi deps again (after rebasing the 'ccapi deps' commit in
  docker/linux)
* Upgrade dotnet from a mixture of v2 & 3 to v6.0
2022-09-04 14:37:59 -04:00
John Colvin ceff286120 fix build (server w/ ccapi-disbaled): Add ifdef SPARK_ENABLE_CCAPI ppds 2022-09-02 11:48:12 -04:00
John Colvin 59aa4677e8 Update docker/linux
To get rapidjson-dev (ccapi dep)
2022-09-02 11:31:58 -04:00
John Colvin 996cd4c856 fix (ladder settings ui): Init 'use_self_security' properly
When loading settings obj
2022-09-02 10:30:08 -05:00
John Colvin 9287149c26 refactor: Clean up 'bts.api.core.Result<T>'
Impl ToString while we're at it
2022-09-02 10:14:02 -05:00
John Colvin 306b56a999 fix (hopeful): Make sure callback disposed after subscription
Hopefully this fixes the 'Garbage Collected callback' crash on login
2022-09-02 09:45:02 -05:00
John Colvin 812cf0a43f fix (man fills ui): Remove erroneous extra ladder button 2022-09-02 09:42:25 -05:00
John Colvin 2c539fd833 ui (ladder settings): Select self in sec-picker by default
For pre-existing fair value lines (this behavior's already implemented for new
fair value lines)
2022-09-01 11:07:51 -04:00
John Colvin 334295ed67 fix (ladder settings ui): Fix typo in binding
Resolve discrepancy between between xaml/cs

Bugs (fixed):
  * Color palette section is empty in Fair Value Line color picker
2022-09-01 01:25:58 -04:00
John Colvin c157b9cdfd ui (ladder): Add 'Use Self Security' checkbox to settings ui
Incorporate it into the settings protobuf by making the security_key field
nullable and allowing 'null' to mean 'Use Self Security'
2022-09-01 01:21:09 -04:00
Taha Afzal 8280b7a815 Fixing Deribit order minor issues that were causing the spreader to cancel its child orders 2022-08-31 15:17:35 -04:00
Taha Afzal fb7f982c65 Improving the logs 2022-08-31 15:17:35 -04:00
John Colvin 75b50d93e8 feat (orderbook): Add button to launch Ladder 2022-08-31 01:13:42 -04:00
John Colvin 865bdac9df refactor: Enable nullable in LadderWindow.cs 2022-08-31 01:13:42 -04:00
John Colvin ebe5f468d7 feat (open orders): Add button to launch Ladder 2022-08-29 22:54:48 -04:00
John Colvin 1bc8d886f4 fix: Don't reopen window on synchronous shutdown
Even if 'e.Cancel' is true, as the initial 'Closing' event is always canceled
to allow for asynchronous teardown
2022-08-29 22:54:48 -04:00
John Colvin 38e352e0d3 feat (man fills): Add button to launch Ladder 2022-08-29 22:54:48 -04:00
John Colvin f6079e7031 refactor: Clean up ManualFillsWindowFactory
After refactoring the shell window logic into new 'ManualFillsWindow' class
2022-08-29 22:54:48 -04:00
John Colvin 8c51488190 refactor: Make proper ManualFillsWindow class
Instances of this class are generated instead of 'anonymous' shell windows.
This makes for cleaner code, better stack traces, etc.
2022-08-29 22:54:48 -04:00
John Colvin 9aad08ada6 feat (day fills): Add button to launch Ladder 2022-08-29 22:54:48 -04:00
John Colvin 2d3d11ba59 fix (ui): Set disabled animation KeyTime to 0
Bugs (fixed):
  * The disabled button animation in SparkMenu (toolbar) is laggy
2022-08-29 22:54:47 -04:00
John Colvin 6087953185 feat (fills): Add button to launch Ladder 2022-08-29 22:54:47 -04:00
John Colvin 851654c8a5 feat (rec rep): Add button to launch Ladder 2022-08-29 22:54:47 -04:00
John Colvin 57a4745e29 feat (ladder): Add 'Theo' fair value line 2022-08-28 14:13:10 -05:00
John Colvin 32cd00895e fix: Add null check in ContractPickerVM
The ContractPickerPopup's SecurityMap binding source may produce null values
during normal operations (esp when opening/closing the popup, as the binding
source may depend on visuals that are initialized/destroyed when the popup
opens/closes).
2022-08-28 13:51:04 -05:00
John Colvin dee5f2684f fix: Add 'IsEnabledForegroundConverter' to ResourceDictionary
Bugs (fixed):
  * Client crashes when ladder settings dialog is opened
2022-08-28 13:21:27 -05:00
John Colvin f639a526cf refactor: Consolidate Co2 & md dirs into MarketData dir 2022-08-28 11:16:56 -05:00
Taha Afzal d168d8712e Added Keyed Theos that can be used to get theos from security ids 2022-08-25 11:58:54 -05:00
John Colvin 78a9605383 Update docker/linux
To get latest cmake
2022-08-24 01:34:38 -05:00
John Colvin a713b1018e fix (preemptive pnl): Actually use eq_comparer member
To determine when value changes occur (when to raise prop-changed event, etc.)
2022-08-23 16:54:31 -04:00
John Colvin 9f626dd10c ui (launcher): Use consistent margin between buttons 2022-08-23 16:54:31 -04:00
John Colvin 8ec7fdd60a ui (launcher): Remove pointless separator bar 2022-08-23 16:54:17 -04:00
John Colvin ffb2245ae6 refactor: Clean up immutable.pb.cs code-gen template a bit more
So the generated code more closely follows our formatting practices
2022-08-23 16:54:17 -04:00
John Colvin 21051c9a0b fix (pnl): Support Exp group popups filtering 2022-08-23 16:54:17 -04:00
John Colvin 1c8bd34144 ui (launcher): Remove pointless Help button 2022-08-23 02:29:05 -04:00
John Colvin f614fb7e7d ui (pnl): Indicate 'has day trades' w/ check mark
Instead of 'Yes/No'
2022-08-22 17:10:03 -04:00
John Colvin b222cd3e55 ui (pnl): Drop border between group/section headers
It needlessly clutters the ui, since the contrasting backgrounds already
illustrate the distinction
2022-08-22 16:55:18 -04:00
John Colvin 4f2be64813 ui: Rename 'P&L' -> 'P&L Summary', 'Day P&L' -> 'P&L Day Fills' 2022-08-22 16:43:31 -04:00
John Colvin bfb73ffc5a refactor: Add 'Freeze' prop to BTSBrushExtension 2022-08-22 16:08:40 -04:00
John Colvin 9bb7025752 fix: Don't share nonfrozen Brushes across threads
Bugs (fixed):
  * Grid settings dialogs crash when multiple are opened on diff threads

  Cause: Brushes (and all Freezables) that haven't been frozen throw an ex when
  any Dependency Properties are accessed from a thread that isn't associated
  with their Dispatcher (i.e., the thread on which they were created).
2022-08-22 16:08:40 -04:00
John Colvin bbfbd0b691 ui (launcher): Drop 'Reports' from buttons in Analytics module
Also change 'Vol Surfaces' -> 'Vol Surface' to be consistent (dropping
'Reports' from the other buttons made them singular)
2022-08-22 11:41:10 -04:00
John Colvin 5628e96a90 ui: Speed up expand/collapse animation in settings dialogs 2022-08-22 10:03:28 -04:00
John Colvin ef517b7554 ui: Reduce column resize-grip width
It blocks too much of the column filter's clickable area
2022-08-22 01:46:01 -04:00
John Colvin ba06af327d ui (slide, combo): Drop ':' in last trade desc 2022-08-22 01:30:31 -04:00
John Colvin b8b03172bc ui (slide): Display vol save & update times adjacently 2022-08-22 01:30:31 -04:00
John Colvin fb5c3c1e6e fix (orderbook-panel): Stretch visible items to fill dead space
Clean up the OrderBookView's VisualState's a bit in the process. Set each
item's visibility to 'Collapsed' by default, and flip to 'Visible' in the
VisualStates
2022-08-22 01:30:31 -04:00
John Colvin faaa7b11d4 fix (orderbook-ladder): Auto scroll to selected order
This used to work, not sure when it broke
2022-08-22 01:30:31 -04:00
John Colvin 92a0467e1e fix (orderbook-ladder): Detect LadderVM changes w/ default Equals
Bugs (fixed):
  * OrderBook ladder doesn't show orders
  * OrderBook ladder doesn't allow user to scroll beyond initial price range

  Cause: Both bugs occur because the LadderVMContainer doesn't detect LadderVM
  instance changes unless LadderVM.security has changed
2022-08-22 01:30:31 -04:00
John Colvin 3bb2025ea2 fix (ladder): Make sure price-range 'busy' is flipped back to false
Once the async price-range-shift op is completed
Bugs (fixed):
  * Can't scroll beyond initial price range in orderbook ladder

  Cause: The LadderGridHost's price-range-shift 'busy' flag gets stuck to false
2022-08-22 01:30:31 -04:00
John Colvin f2730ff0d7 doc: Add documentation for Task.ignore ext 2022-08-22 01:30:31 -04:00
John Colvin 7fcff9e5b4 refactor: Clean up MarketViewAnimation code a bit 2022-08-22 01:30:31 -04:00
John Colvin 51f83f4880 refactor: Rename 'HashCode.with' -> 'with_values'
Repurpose 'with' to accept a single value
2022-08-22 01:30:31 -04:00
John Colvin 88cb510aea refactor: Remove the ulong 'lldatetime' ext
It's too esoteric. Most ulongs don't represent an 'LLDateTime'
TODO: Consider removing the uint 'argb' extensions for same reason
2022-08-22 01:30:14 -04:00
John Colvin 452c642af0 refactor: Rename TryFirst ext FirstOrNull
Also move to it from APIExtensions to EnumerableExtensions
2022-08-22 00:05:08 -04:00
John Colvin 3fafc5004e refactor: Clean up LazySubscription, move to Spark.Core.Disposables ns 2022-08-22 00:05:07 -04:00
John Colvin fd8e502140 refactor: Lock private obj (not 'this')
'Lock(this)' is generally bad practice. It's better to use an explicitly named
var that is minimally accessible to outside callers to reduce risk of deadlocks.
2022-08-22 00:05:07 -04:00
John Colvin b499a5c38b refactor: Move IDisposable utils to Spark.Core.Disposables ns
* Move Anonymous/FinalizableDisposable to own file
* Rename DisposableCombo -> ImmutableDisposable and move it to its own file
* Clean up IDisposable utils impl, but keep changes to calling code minimial
2022-08-22 00:05:04 -04:00
John Colvin 2320383b16 refactor: Remove DisposableContainer class
It's innately antithetical to the Dispose pattern, as it can never truly be
disposed
2022-08-22 00:03:11 -04:00
John Colvin 59b3e73330 fix: Assign IDisposable to _dispose member (not local var)
So it is properly disposed, and not just eventually collected by GC
2022-08-22 00:03:11 -04:00
John Colvin 9d9a1b86c4 fix: Fix typo in 'init_auto_login'
The 'SubscribeClosed' call should be executed immediately, and the returned
IDisposable disposed when 'login_hooks' is disposed (prior to this commit, it
wasn't calling 'SubscribeClosed' until login_hooks was disposed)
2022-08-22 00:03:11 -04:00
John Colvin 21cc2cefbf refactor: Un-nest SelectorWrapper class, rename SelectorList 2022-08-22 00:03:11 -04:00
John Colvin 904df4260d fix (preemptive): Fix typo in SelectorWrapper list
Bugs (fixed):
  * [preemptive] SelectorWrapper.IsReadOnly is wrong

  Details: The fix is considered 'preemptive' because this prop is almost
  certainly not referenced. Nevertheless, the impl ought to be correct.
2022-08-22 00:03:11 -04:00
John Colvin af785d5d0b fix: Make sure ThreadSafeEvent uses same lock as owner 2022-08-22 00:03:11 -04:00
John Colvin 1d796856ca refactor: Make spark_api depend on spark_core (not other way around) 2022-08-22 00:03:11 -04:00
John Colvin 35f0d5a53f refactor: Split (Equality)Comparer utils up into modular classes 2022-08-22 00:03:10 -04:00
John Colvin 2b2fdd2b94 refactor: Remove borderline useless TaskExtensions
There were few references to these extensions, and many weren't referenced at all
2022-08-22 00:03:10 -04:00
John Colvin 9e4539a902 refactor: Remove unused code 2022-08-22 00:03:05 -04:00
John Colvin a76c8ffd98 fix: Fix typo 'is not null' -> 'is null'
Bugs (fixed):
  * Window size isn't restored if window has multiple tabs

  Cause: The typo flips the bool arg that indicates whether or not a window
  should be measured and fit to size (as happens when a window is opened for
  the first time)
2022-08-18 16:17:22 -04:00
John Colvin d7474cb8da fix (ui): Await settings-save before disposing IShellWindow
Bugs (fixed):
  * Can't reopen Fills windows via undo/redo in the BookMarks module

  Details:
    * Only applies to Fills windows closed via the tab-close 'x' button (not
      the window-close 'x' button)

    * Doesn't cause a crash, nor exhibit any side effects (aside from breaking
      undo/redo)

  Cause:
    * ISlow/SharedWindows (i.e., shell windows that run on bg threads) are
      disposed before the ISettingsCollector retrieves their state via
      'IShellWindow.SaveState'. The FillsWindow sets its _vm member to null
      when it is disposed, leading to a null-ref ex in its SaveState getter.
      This ex is caught (synchronously) and logged as an error, which explains
      the lack of side effects.
2022-08-18 13:57:44 -04:00
John Colvin 890a23a537 refactor: Rename AsyncEvent.invoke -> Invoke
To be syntactically consistent w/ csharp delegates (and the wpf Dispatcher,
which has Invoke/InvokeAsync methods)
2022-08-18 12:39:57 -04:00
John Colvin ab17eee260 refactor: Remove unused code 2022-08-18 12:39:57 -04:00
Taha Afzal acadc3bd7c Fixing merge conflict 2022-08-17 20:26:23 -04:00
Taha Afzal 8701fb7132 Fixing qty in ExchangeOpenOrders for fractional qty orders 2022-08-17 14:12:23 -04:00
Taha Afzal 89fcb3092b Fixing merge conflict 2022-08-17 12:54:27 -04:00
John Colvin c9856b96ae fix build (client): Remove erroneous using statement 2022-08-16 21:12:49 -04:00
John Colvin 04477a4b7c refactor: Don't copy strings 2022-08-16 21:08:53 -04:00
John Colvin 99371a2ead feat: Add Open Orders window 2022-08-16 17:25:03 -04:00
John Colvin 70487a8ef7 ui: Make 'B/S' the standard header for 'Side' cols
Until now, this header was hardcoded in OrderBookSettings
2022-08-16 17:25:03 -04:00
John Colvin 44c419fdaf refactor: Move bool-check converter from rec rep to common place
Will be used in the new Open Orders window
2022-08-16 17:25:03 -04:00
John Colvin 5eb151f9a0 refactor: Move common orderbook col headers to shared place
Specifically, col headers that will be used in the new Open Orders window, for
consistency's sake
2022-08-16 17:25:03 -04:00
John Colvin 855a939c51 refactor: Return obj from Log.not/isnull fns
For convenience, so these calls may be used in a chain like manner, etc.
2022-08-16 17:25:03 -04:00
John Colvin 7071d9b961 refactor: Add Not/MaybeNull attributes to Log.not/isnull fns
So the compiler recognizes these methods guarentee a particular result of
the expression 'obj is null'
2022-08-16 17:25:03 -04:00
John Colvin adf14491bc refactor: Check if obj is of type 'T' in Optional<T>.Equals 2022-08-16 17:25:03 -04:00
John Colvin 7e0e8f2801 refactor: Clean up Optional<T> 2022-08-16 17:25:02 -04:00
John Colvin 4a37e2d6a6 refactor: Implement IKeyedData in generated cs pbuf types
For convenience, so we don't have to pass key-selector lambdas all over the
place when dealing w/ IObservable<TableUpdate>s from the pbuf services
2022-08-16 17:25:02 -04:00
John Colvin 12b2371a69 style: Clean up api code-gen template immutable.pb.cs 2022-08-16 17:25:02 -04:00
John Colvin c19d173983 refactor: Move SecurityStore to spark_core, rename Resolver 2022-08-16 17:25:02 -04:00
John Colvin 203164f372 fix (preemptive): Init default UserSettings.day_fills_grid
This fix is preemptive because the hardcoded Day Fills defaults are automatically
used when the UserSettings.day_fills_grid member is null
2022-08-16 17:25:02 -04:00
John Colvin 6f69f1c2e2 fix (preemptive): Apply Day Fills settings migration rules
This is a preemptive fix bc as of now (8/14/2022), there are no Day Fills
migration rules
2022-08-16 17:25:02 -04:00
John Colvin ad1a585b5c refactor: Move Optional into Spark.Core 2022-08-16 17:25:02 -04:00
John Colvin f29e367ec7 refactor: Clean up ObservableSortedCollection
* Enable nullability
* Run formatter
* Add readonly specifiers where possible
* Improve documentation
2022-08-16 17:25:02 -04:00
John Colvin 18127383f0 refactor: Make IObservableCollection inherit IReadOnly 2022-08-16 17:25:02 -04:00
John Colvin b450c757c9 refactor: Move ObservableSortedCollection to Spark.Core.Collections 2022-08-16 17:25:02 -04:00
John Colvin 836683bcbe refactor: Move IObservableCollection to Spark.Core.Collections 2022-08-16 17:25:02 -04:00
John Colvin c271af30d8 refactor: Get rid of non-generic InsertRange ext 2022-08-16 17:25:02 -04:00
John Colvin 31fab94208 refactor: Get rid of non-generic AddRange ext
Most references to this fn were by generic IList<T>s. This resulted in error
prone, misleading code as such calls subtly bypass the compile-type type
constraints provided of the generic impl.
2022-08-16 17:25:02 -04:00
John Colvin a9b5067d7a refactor: Move fns from GlobalExtensions to less vague classes 2022-08-16 17:25:01 -04:00
John Colvin 7a31b025a2 refactor: Add 'ms' suffix to exch-open-order timestamp fields
Just to make it clear that they are milliseconds (not nanos, micros, etc.)
2022-08-16 17:24:52 -04:00
John Colvin 31897a1b2e refactor: Change exch-open-order record_id to auto-incremented int
To insulate ourselves from potential duplicate-id bugs at the exchange
2022-08-16 16:46:47 -04:00
John Colvin f93bc592cb fix: Set RetrievedExchangeOpenOrder.exchange_order_id
Bugs (fixed):
  * The 'exchange order id' field is empty in open orders data received
    by client
2022-08-16 13:22:38 -04:00
John Colvin 6ca2753951 fix (vs): Use precison in terms of actual data for eq comp
Bugs (fixed):
  * The tick up/down buttons have no effect for vol input cells

  Cause: The cell vm ignores some value updates because the equality
  comparer incorrectly considers the new value equal to the current one
  (because it doesn't use enough decimal places in the comparison)
2022-08-11 01:33:43 -04:00
Taha Afzal 470ca0093e Adding more logging helpers to VolSurfaceTroubleshootingFunctions 2022-08-10 20:54:10 -04:00
John Colvin 7e1715964f fix (vs): Pass the vm's 'current_grid' to the model
Bugs (fixed):
  * Cannot edit volsurface cell values (they are immediately reverted)

  Cause: The vm was passing the model's grid back to itself before, effectively
  undoing manual edits in cells
2022-08-10 18:27:41 -04:00
John Colvin 39e929a614 fix: Actually use eq-comp member in Property vm 2022-08-10 18:17:58 -04:00
John Colvin a9aa06f275 fix (vs): Actually use coulmn comparer in cell vm 2022-08-10 18:11:27 -04:00
John Colvin 54510c9e59 refactor (vs grid): Supress recalc reqs while processing update 2022-08-10 14:26:28 -04:00
John Colvin cb56429f04 refactor: Rename 'execute' -> 'Invoke'
To be consistent and interchangeable w/ System.Action
2022-08-10 14:26:28 -04:00
John Colvin ac8147cc0f refactor: Add 'implicit operator T(Optional<T>)' for convenience 2022-08-10 14:26:28 -04:00
John Colvin 82ac189ac9 refactor: Strip 'Wrapper' from 'DeferrableActionWrapper' name 2022-08-10 14:26:27 -04:00
John Colvin 5721ff78b6 fix (vs): Only request recalc when input changes (not output)
Bugs (fixed):
  * The volsurface grid can get into an endless loop of recalc requests
2022-08-09 15:56:05 -04:00
John Colvin 7afd2947f1 refactor: Clean up vs grid vms a bit
* Split vs-cell-vm classes up into own files
* Rename classes by changing 'VolGrid' prefix to 'VolSurface'
* Remove unused struct VolSurfaceCellState
* Enable nullable
* Run formatter
2022-08-09 15:55:40 -04:00
John Colvin c3e3862c5f refactor: Update vs cell 'is_dirty' synchronously when vals change 2022-08-09 02:57:35 -04:00
John Colvin bf2dc9ecca fix (vs grid): Account for nan & rounding error
Bugs (fixed):
  * The volsurface grid starts flasing is_dirty borders all over the place. The
    repro is inexact, but it seems to happen after inputs are changed a few
    times (perhaps from loading a previous volsurface).

  * The volsurface grid flashes is_dirty borders just from clicking on an input
    cell (even if no change is entered).
2022-08-09 02:57:35 -04:00
John Colvin e0e188a02c refactor: Enable NaN identity equality in tick_equals 2022-08-09 02:57:35 -04:00
John Colvin 79ba1654d3 fix: Fix typo in tick_equals fn 2022-08-09 02:57:35 -04:00
Taha Afzal 2aab0d18a5 Formatting slide exp, to look like PNL's 2022-08-08 23:45:02 -04:00
John Colvin 312c8ded11 fix (ui pnl): Add greek props to group row vm
Bugs (fixed):
  * Greek sums still aren't visible in group rows (though they are visible in
    Selected/Total header rows)
2022-08-08 16:11:25 -04:00
John Colvin 3f86779da6 ui (launcher): Move PNL menu items to Analytics module 2022-08-08 16:11:25 -04:00
John Colvin 716d3b8482 ui (day fills): Make title & icon consistent w/ PNL win 2022-08-08 16:11:25 -04:00
John Colvin 24f6dbc4f0 ui (day fills): Convert fill_time utc to local 2022-08-08 16:11:25 -04:00
John Colvin 3e943fa35e refactor (pnl): Add 'PNL' prop to Icons class
To make it clear which icon belongs to which window
2022-08-08 16:11:25 -04:00
John Colvin 457f878b41 ui (pnl): Change win title to 'P&L' to match launcher menu item 2022-08-08 16:11:25 -04:00
John Colvin ac2b2d042a refactor: Split WorkspaceProtos up into 1 class/file 2022-08-08 16:11:25 -04:00
John Colvin 829d2cdbf6 refactor: Provide ICloneable impl in IProtobuf<T> 2022-08-08 16:11:25 -04:00
John Colvin 3cd9693b36 diag (vs): Log cell vm 'is_dirty' changes 2022-08-08 16:11:25 -04:00
John Colvin 2b52ecf2ef perf (vs): Supress repeated 'is_dirty' updates
Before the updates reach the dispatcher thread
2022-08-08 16:11:25 -04:00
John Colvin faab60cbc1 ui (vs): Convert NaN to 0 when users clicks tick up/down 2022-08-08 16:11:25 -04:00
John Colvin b6be0d649d fix (vs): Don't throw ex if parse_double input is null
Bugs (fixed):
  * Previous vol surfaces may have missing data, which can lead to an assert
    crash in the parse_double fn
2022-08-08 16:11:25 -04:00
Taha Afzal 2a65c45d21 Theos/Greeks are still produced if AW2 window is not loaded 2022-08-08 16:00:48 -04:00
Taha Afzal dc6ae2ac29 Removing P from the names of greek columns in Day PNL 2022-08-08 11:53:56 -04:00
Taha Afzal df4250c33a Hooking AW2 populate empty exps 2022-08-07 22:03:50 -04:00
John Colvin 53504ef6f0 ui (pnl): Improve default settings 2022-08-07 15:18:16 -04:00
John Colvin 10afb1af06 ui (pnl): Show greek sums in group/header rows 2022-08-07 14:59:00 -04:00
John Colvin a9149dfa87 refactor: Clean up PNLNormalizedData
* Use new lang feats: nullable, and 'init' prop setters
* Group 'sod', 'day', and 'working' members in respective groups
* Run formatter
2022-08-07 14:39:44 -04:00
John Colvin 5afa6695e7 fix (pnl view): Enforce min height for 'Selected' header row 2022-08-07 13:51:55 -04:00
John Colvin d2a6d54090 refactor (pnl): Replace dyn resources w/ Bindings in xaml
Traditional Bindings are more performant than DynamicResources, and make for
cleaner code
2022-08-07 13:51:55 -04:00
John Colvin 794ac25c01 log: Change 'Begin/End' tags to 'BEG/END' in log_op ext
Improves readability of log_op logs

* Gives the 'BEG/END' tags a uniform width, so their msg bodies will align
* All caps makes the tags stand out

Improves readability by providing uniform width to the BEG/END tags
2022-08-07 13:51:55 -04:00
John Colvin 37214e9480 refactor: Make msg body param optional in 'fn' logger exts 2022-08-07 13:51:55 -04:00
John Colvin 90ab551778 ui (day fills): Format dates in exp col filter 2022-08-07 13:51:54 -04:00
John Colvin 9a4ec46440 fix: Don't begin shutdown til after workspace saved (async)
Bugs (fixed):
   * Seems like only one window's settings are restored w/ workspace
2022-08-07 13:51:54 -04:00
John Colvin c86d283755 fix: Supress empty TableUpdates in 'distinct_on'
Bugs (fixed):
  * Discrete values column filters (i.e., multi-selector views) that are driven
  by 'distinct_on' IObservable<TableUpdate> deselect items when the main
  grid data changes

  Cause: When processing updates from the input IObseravble, the 'distinct_on'
  ext doesn't check if the new/old results are equal. This in turn causes the
  selector-view to remove, then re-add items that didn't actually change.
  Exhibiting reasonable behavior, the view deselects items when they are removed
  from the ItemsSource.
2022-08-07 13:51:54 -04:00
John Colvin 941956c1b5 fix: Actually supress false changes in 'to_table_checked' ext 2022-08-07 13:51:54 -04:00
John Colvin 67e3d22104 style: Fix typo in param name '_selector' -> 'selector' 2022-08-07 13:51:54 -04:00
John Colvin 7e41c93f9a refactor: Rename PNLFilterStates -> PNLFilterSettings 2022-08-07 13:51:54 -04:00
John Colvin 086ccbb3fa refactor: Weaken T constraint for is_within_range ext
There is no reason T has to implement IFloatingPoint<T>
2022-08-07 13:51:54 -04:00
John Colvin 329ddc576d ui (day fills): Add (groupable) exp column 2022-08-07 13:51:54 -04:00
John Colvin 1faef425ab refactor: Consolidate format_expiration fns into single fn 2022-08-07 13:51:54 -04:00
John Colvin bb068cf6b2 fix (preemptive): Add 'Option' case to exp switch expr 2022-08-07 13:51:54 -04:00
John Colvin f7cade41c6 ui (day fills): Fmt qty cols w/ sec-meta display settings 2022-08-07 13:51:54 -04:00
John Colvin 47afd3a911 ui (day fills): Hide bid/ask cols by default 2022-08-07 13:51:54 -04:00
John Colvin ef80d2a41d ui: Shorten a few default column widths
Namely: Account, Exchange, and Symbol
2022-08-07 13:51:53 -04:00
John Colvin 44ef080e9f ui (day fills): Format theo and driver w/ 4 dec places
With the caveat that future fills' drivers are formatted according to their own
tick factors (i.e., same as the "price" column). This should be good/reasonable
behavior because in rare cases where futures don't drive themselves, they are
most likely driven by a neighboring expiration with the same price display.
2022-08-07 13:51:53 -04:00
John Colvin fef8d2c413 ui (day fills): Format price w/ sec's tick factors 2022-08-07 13:51:53 -04:00
John Colvin 201746e561 fix (day fills): Init column models w/ settings
Bugs (fixed):
  * Day fills column settings are not restored with workspace

  Cause: This is a kind-of re-entrancy bug.  When the SimpleGridSettingsManager
  attempts to load the initial column settings, it assigns props in the column
  views. When the width prop is set, the column view forwards the new width to
  the model, which causes the model to fire a settings_changed event, which
  pipes the model's settings (which have not been fully initialized) back to
  the view.
2022-08-07 13:51:53 -04:00
John Colvin 8e375a0b7f ui (day fills): Use qty fg to indicate fill side
Rather than using the row bg, this gives the win a subtler, more modern look
2022-08-07 13:51:53 -04:00
John Colvin 045f3dc060 chore: Move ValueConverter into own file 2022-08-07 13:51:53 -04:00
John Colvin 6b6012236d ui (day fills): Add pnl, delta foreground triggers 2022-08-07 13:51:53 -04:00
John Colvin 9cee798939 chore: Set ModalStateDefinition ContentProperty
For convenience in xaml (so ModalStateDefinition.Source can be defined without
explicit tag)
2022-08-07 13:51:53 -04:00
John Colvin c79bdb12e0 refactor: Make ActivityLogCategories readonly props 2022-08-07 13:51:53 -04:00
John Colvin bce77d65de fix: Add null check in OptionsView
Bugs (fixed):
  * If an Options View window is launched w/ "incomplete" security criteria
    (i.e., not a tuple of Exch, Type, Sym), a null ref crash happens when the
    window is restored with the workspace.
2022-08-07 13:51:53 -04:00
John Colvin 0db814ef2d fix (rec rept): Use tick-factors to avoid rounding errors
Bugs (fixed):
  * Reconcile Report can show false positive price mismatch

  Cause: The epsilon const (1E-12) used in the price comparison too small.
  Evidently, the Deribit-position prices provided to the Reconcile Report are
  only accurate up to 9 decimal places.
2022-08-07 13:51:53 -04:00
John Colvin 31b5ec4bd3 fix (fills view): Change side col base class row type to the vm
Bugs (fixed):
  * In the Fills window, side column cells are empty
2022-08-07 13:51:52 -04:00
John Colvin e15cdfd76e refactor: Add get bg/fg delegates to RenderColumnBase
These colors are frequently functions of the rows; now such cases don't require
implementation in classes that derive from RenderColumnBase
2022-08-07 13:51:52 -04:00
John Colvin eb150ba82c chore (ui): Hook up background setting in OrderTypeColumn 2022-08-07 13:51:52 -04:00
John Colvin d763275179 fix (ui preemptive): Bind horiz align setting to horiz content align
Bugs (fixed)
  * (preemptive) The OrderTypeColumn root border doesn't span the width of the
    column.  This would happen if the column's background was a
    non-transparent brush, and horizontal alignment wasn't stretched.
2022-08-07 13:51:52 -04:00
John Colvin 2b96a8a5c4 ui: Enable grid background setting in all windows
And remove bool props that were used to toggle this behavior
2022-08-07 13:51:52 -04:00
John Colvin 31866c76b7 chore (vs graph): Add tick_line_color setting 2022-08-07 13:51:52 -04:00
John Colvin a2da946e03 fix (vs graph): Actually use axis_line_color setting in vm
Bugs (fixed):
  * The vs graph axis line color setting is ignored
2022-08-07 13:51:52 -04:00
John Colvin 528bab34e7 chore: Show color name in ColorNotFoundException msg 2022-08-07 13:51:52 -04:00
John Colvin 776b9e4f94 chore: Remove '_color' and '_brush' props from BTSColors
The BTSColor props are implicitly convertible to both System.Windows.Media.Color
and Brush
2022-08-07 13:51:52 -04:00
John Colvin 168d328e97 chore: Clean BTSColorExtension 2022-08-06 23:54:15 -04:00
John Colvin f871dbd230 chore: Add 'Pure' attr to is_null_or_empty ext 2022-08-06 23:54:15 -04:00
John Colvin 1662b56ea0 refactor: Clean up ReflectionHelper a bit
* Rename '(static_)property_delegates_of_type' -> '(static_)property_getters',
  and include name w/ prop getters
* Rename 'FindApplicableConstructor' -> 'get_constructor'
* Remove unused fns
2022-08-06 23:54:15 -04:00
John Colvin f3302dbac0 fix (ui): Validate width/height before updating DragRectAdorner 2022-08-06 23:54:15 -04:00
John Colvin 181072f3e7 chore: Clean up ui settings classes
* Move most settings files into new dir 'Model/Settings'
* Conform code style to our current practices
2022-08-06 23:54:15 -04:00
John Colvin f654312123 chore (refactor): Move synth mgmt settings classes into sep files 2022-08-05 13:41:37 -04:00
John Colvin c46d97646a fix: Gather individual win settings on dispatcher thread
In practice, window-states live on their respective dispatcher threads.
Window settings factories shouldn't be expected to be thread-safe.
2022-08-05 13:41:37 -04:00
John Colvin 41742359e9 fix (vs ui): Don't clip vs time sched ui 2022-08-05 13:41:37 -04:00
John Colvin 024723925e ui (vs grid settings): Constrain window height 2022-08-05 13:41:37 -04:00
John Colvin 76b834768e style: Clean up spark.csproj 2022-08-05 13:41:37 -04:00
John Colvin 89284bea87 build: Upgrade csharp nuget pkgs 2022-08-05 13:41:37 -04:00
John Colvin 532154640b refactor: Replace PNLCellAppearance ctr w/ 'init' props 2022-08-05 13:41:36 -04:00
Taha Afzal ab8468d498 Added function in VolSurfaceDisplayModel to populate empty exps 2022-08-04 18:42:15 -04:00
Taha Afzal 84b0332778 Better logs for the case when Deribit's open orders's security can not be resolved 2022-08-03 23:53:57 -04:00
Taha Afzal 20b601f290 Fixed the crash related to querying Deribit for open orders 2022-08-03 16:57:10 -04:00
Taha Afzal 47002cae4c This PNL fix change was accidentally merged out 2022-08-03 08:47:50 -04:00
John Colvin eaaffe369a Fix typo typeof(HyperlinkCell) -> typeof(TextCell) 2022-08-03 00:07:39 -04:00
John Colvin 7292a31c00 fix (rec rep): Save grid settings w/ workspace 2022-08-03 00:07:39 -04:00
John Colvin 389d762a93 ui (launcher): Drop "2" in "P&L 2" menu item
It was leftover from the transition to the "new" pnl window (which hasn't been
new since 2019)
2022-08-03 00:07:39 -04:00
John Colvin 9704ebf096 style: Move ReconcileReportModel into rec rep dir 2022-08-03 00:07:39 -04:00
John Colvin de320338ca ui (launcher): Group 'Fill' menu items together 2022-08-03 00:07:39 -04:00
John Colvin 668dfd9130 feat (ui): Add Day Fills win 2022-08-03 00:07:39 -04:00
John Colvin a2960b23a8 refactor (ITradeLogRow): Rename trader -> user, add user_id
Use consistent nomenclature throught the sys
2022-08-03 00:01:02 -04:00
John Colvin 55744edc25 refactor: Move SecurityDataHelper.Defaults into Security class 2022-08-02 13:24:48 -04:00
John Colvin 7ece5d18cb refactor: Move sec 'key_fn' into Security class 2022-08-02 12:37:46 -04:00
John Colvin 8005ac8635 refactor: Name top_of_book tuple items bid/ask 2022-08-01 21:56:07 -04:00
John Colvin c00a71fdfa chore: Add fill_kind to ITradeLogRow 2022-08-01 11:14:29 -04:00
John Colvin 197c915968 Remove erroneous font_size binding in xaml
Each cell's font size comes from its associated column object (not the cell vm)
2022-08-01 11:14:29 -04:00
John Colvin 6d77a07bbe fix: Load grid-level settings in pnl window
Font family/size/weight, foreground, background
2022-08-01 11:14:29 -04:00
John Colvin adfb560dd1 chore: Post users-map on the bus 2022-08-01 11:14:29 -04:00
John Colvin 508d20e4e0 refactor: Rename ITradeLogRow.trade_key -> order_key
This is what it actually is; the trade_key misnomer was ported from edge
2022-08-01 11:14:29 -04:00
John Colvin 72457619f7 chore: Move IPositionModel to Spark.Trading ns 2022-08-01 11:14:29 -04:00
John Colvin 18d5b83a95 chore: Replace anon pnl win w/ proper PNLWindow class
The PNL window is too complex/terse to be nested anonymously in the
PNLWindowFactory class.  This makes the code cleaner/easier to read.
2022-08-01 11:14:29 -04:00
John Colvin 653362b947 chore: Make 'Safe' IEnumerable exts accept nullable ref types 2022-08-01 11:14:29 -04:00
John Colvin b7477b8f93 fix (fills ui): Add back 'Fill Status' col
Not sure when/why it went missing
2022-08-01 11:14:29 -04:00
John Colvin 105f1fceaf ui (pnl): Increase sec column default width 2022-08-01 11:14:29 -04:00
John Colvin cb65489ab7 fix (combo vm): Fix typo when assigning swipe_sum net/calls/puts
Bugs (fixed):
  * The swipe sum net/puts are swapped in combo status bar
2022-08-01 11:14:29 -04:00
John Colvin 96772727df fix (exp params): Ensure auto-picked driver has right sym 2022-08-01 11:14:29 -04:00
John Colvin 960a618fe1 fix: Bind pnl account col to AccountTuple
Bugs (fixed):
  * The group-row pnl cell hyperlinks don't open anything when clicked

  Cause: An InvalidCastException is thrown when the code that creates the fills
  vm (for the popup) casts 'PNLRowCollectionViewGroup.Name' to an AccountTuple,
  as said 'Name' member is bound to the 'account_name' (of type string).
2022-08-01 11:14:29 -04:00
John Colvin 505cd37225 chore: Assert that PositionPriceSize.GetHashCode isn't invoked
Impl doesn't guarentee equal objects produce the same hash
2022-08-01 11:14:28 -04:00
John Colvin a5f66b8ac6 feat: Add greeks cols to pnl view (for options) 2022-08-01 11:14:28 -04:00
John Colvin 2021f29f62 feat: Support options in pnl view 2022-08-01 11:14:28 -04:00
John Colvin 9ccf3e0f87 chore: Remove UTF-8 BOM from pnl files 2022-08-01 11:14:28 -04:00
John Colvin 7cfc53eba8 refactor: Make sum_real ext generic (IFloatingPoint<T>)
Also add bool param 'nan_if_none' (to return NaN instead of 0 when values
contains no real numbers)
2022-08-01 11:14:28 -04:00
John Colvin f9d269c750 chore: Add account_id to ITradeLogRow, IPNLUnit 2022-08-01 11:14:28 -04:00
John Colvin 67d5161fd1 chore: Dispose _pnl_calc in ReportDaemon.Dispose
This wasn't causing any problems in practice (this class is instantiated once
on startup and never gets disposed).  However, since it implements IDisposable,
might as well do it correctly.
2022-08-01 11:14:28 -04:00
Taha Afzal d6e9bbce71 Something funky, not sure why it is showing as touched 2022-08-01 11:14:28 -04:00
John Colvin 76ec2c0fa2 fix: Pass key_fn to TableUpdate Operate ext
Bugs (fixed):
  * PNL window crashes immediately when opened

    Cause: The 'Operate' ext fn aggregates an IObservable of TableUpdates w/
    another IObservable of any T.  If the latter fires before the former, an
    'empty' TableUpdate is passed to the aggregate fn.  When this happens, a
    null ref ex is thrown in the 'empty' TableUpdate's ctr because the key
    param is null.
2022-08-01 11:14:28 -04:00
Taha Afzal e82a2c9402 Added Day PNL trades to PNLData 2022-08-01 11:14:28 -04:00
Taha Afzal 60ce106e24 Fixing a PNL crash which was caused by options for a symbol being temporarily null 2022-08-01 11:14:28 -04:00
Taha Afzal 1eb4952422 Added Control Keys to sheets, Ctrl + right click always brings up the context menu, Ctrl + market always brings up the ladder 2022-08-01 11:14:28 -04:00
Taha Afzal 3043582889 Improved some log messages 2022-08-01 11:14:28 -04:00
Taha Afzal f604db6517 Reorganized PNL calculator and associated types 2022-08-01 11:14:28 -04:00
Taha Afzal f95b0c19d7 Added PNL Calculation code 2022-08-01 11:14:28 -04:00
taha afzal 655bf87e92 Fixing open orders callback (was firing intermittent callbacks) 2022-07-22 16:36:52 -04:00
taha afzal 6d06a1920d OrderServiceServer now publishes open orders 2022-07-22 15:16:03 -04:00
taha afzal 70af51e163 ExchangeOpenOrders are now routed all the way to OrderServiceServer 2022-07-21 20:36:17 -04:00
taha afzal 2c17fe334e Added Exchange Open Orders function to IExecutionGateway 2022-07-21 00:38:15 -04:00
taha afzal 5eca2cd3ac Exchange Open orders are routed all the way to EMExecutionGateway 2022-07-20 20:13:56 -04:00
taha afzal 4b5ff8cad4 Adding AsyncRequestHelper to EmMDListener, that allows code to be shared bw positions and open_orders request 2022-07-20 15:29:25 -04:00
taha afzal 89d5b25cc7 For EmMDListener, added a limit of 5 pending calls for positions, after which the counter is reset is positions are re-requested 2022-07-12 17:03:19 -04:00
Taha Afzal 3e10d403b4 Combo Report now listens to the sectups in the report configuration 2022-07-12 09:35:42 -04:00
Taha Afzal 1ebf06d49a Slide report filters the securities based on the security tuples passed in the report 2022-07-12 09:35:42 -04:00
Taha Afzal 2be857a851 Forcing qty's to be rounded to 2 2022-07-12 09:35:42 -04:00
John Colvin 1de22a82e8 fix (combo settings ui): Refresh 'result' when sec criteria changes
Bugs (fixed):
   * In Combo settings dialog, security criteria changes aren't committed to
     server if they are the last prop changed before OK click
2022-07-12 01:00:51 -04:00
John Colvin f275308cc8 build (client cpp): Remove ZERO_CHECK.vcxproj from spark_client.sln
The new cmake generates ZERO_CHECK.proj instead, which doesn't need to be
included in the sln. I think this change was introduced in v 3.22.

Devs: This won't break the build for older versions of cmake, although you may
need to manually touch "CMakeLists.txt" when you add/remove build src files
2022-07-12 01:00:44 -04:00
taha afzal 79de0dd4d8 Removed exchange from sub acocunt config 2022-07-11 21:13:05 -04:00
taha afzal 5cedf74406 Merge branch 'spark_crypto.multiple_accounts' into spark_crypto.dev 2022-07-11 17:44:02 -04:00
taha afzal e5de6b4ad7 Changed the relationship of internal account to sub account to simple 1:1 2022-07-11 17:28:53 -04:00
John Colvin e467195de1 chore (combo vm): Let end observer call OnDispatcher
This behavior could arguably be coupled with a Subscribe call, since its whole
purpose is to ensure subscription callbacks occur on the dispatcher thread.
2022-07-11 17:22:44 -04:00
John Colvin 913a5b4a7e ui (combo settings): Show contract picker 2022-07-11 17:22:44 -04:00
John Colvin feb8bd9b79 ui (slide settings): Show contract picker 2022-07-11 16:55:23 -04:00
taha afzal 846ecfa776 Fixed the reconcile issue where if the security existed in multiple accounts it was getting surpressed in one 2022-07-11 13:27:10 -04:00
taha afzal d98fb399a8 Exchange Positions can now be obtained for multiple sub accounts 2022-07-09 01:40:28 -04:00
taha afzal 4a1c1d023a Changes to accomodate the EM API change for mulitple accounts 2022-07-06 16:42:04 -04:00
taha afzal 43cba548f4 Adding some details to the logs to track order flow 2022-06-24 15:05:15 -04:00
taha afzal 772910ffe5 Fixing filled qty's fractional part not being filled on the server 2022-06-23 14:38:57 -05:00
John Colvin 767179caf7 chore (man fills): Format qty w/ sec metadata config 2022-06-23 14:38:57 -05:00
John Colvin ee4a9150b8 refactor (man fills): Rename 'size' members 'quantity' 2022-06-23 14:24:04 -05:00
John Colvin 58914fa703 chore: Replace remaining refs to uint 'filled' fn w/ double impl 2022-06-23 14:24:04 -05:00
John Colvin ba40e7044a fix (ladder, preemptive): Fix typo in _fmt_mkt_depth_item
Bugs (fixed):
   * The _fmt_mkt_depth_item fn potentially will return the result of the
     delegate.ToString(), instead of invoking the delegate and returning the
     result
2022-06-23 14:10:15 -05:00
John Colvin 010d0073fe chore: Set BTC qty display config defaults 2022-06-23 02:05:23 -05:00
John Colvin 40210ce42e chore: Remove unnecessary price_display config default 2022-06-23 01:35:22 -05:00
John Colvin 59cdafba21 fix: Don't cast manual fill qty to uint 2022-06-23 01:22:09 -05:00
John Colvin fe6226baa5 ui (reconcile rep): Match all undefined positions
Now, all positions without real non-zero quantities are considered matches
2022-06-23 01:19:27 -05:00
John Colvin 45987c7652 feat: Show fractional qty in orderbook Filled col 2022-06-22 16:04:24 -05:00
John Colvin a18ce97fb4 feat (ui): Support fractional qtys for order entry 2022-06-22 15:38:38 -05:00
John Colvin 13d5080bbc refactor: Shorten modify/revert cmd prop names
Also consolidate modify_price/qty fns into single modify_order fn
2022-06-22 15:38:38 -05:00
John Colvin 9f07a36d1d refactor: Move order-update-desc fn into OrderUtils for gen use 2022-06-22 15:38:38 -05:00
John Colvin bc2e7f428a chore: Add formal/consistent numeric exceptions/messages 2022-06-22 15:38:38 -05:00
John Colvin 53bfbdd349 fix: Sync 'has_value' prop for qty param
Bugs (fixed):
   * Can't tick qty up/down in the orderbook right panel (clicking the
   button has no discernible effect)
2022-06-22 15:38:38 -05:00
John Colvin 174eac9a59 refactor: Move OrderParamsVM into own file
OrderBookVM.cs was (and frankly still is) massive.  Too massive
2022-06-22 15:38:38 -05:00
John Colvin 3775b86d9e refactor: Rename 'size_' props 'quantity_' to be consistent 2022-06-22 15:38:38 -05:00
John Colvin 5e1c6d6209 fix build (windows): Don't include stdint-uintn.h on windows 2022-06-22 15:38:37 -05:00
taha afzal 0d0fb036ab EmMDListener now get_open_orders and logging the open orders 2022-06-22 15:38:37 -05:00
taha afzal f8668802ab Fixing oder updates on fractional quantity orders (just a few lines) 2022-06-22 15:38:37 -05:00
taha afzal c22a1382a1 Fractional qtys now work on the server (need some client side work) 2022-06-22 15:38:37 -05:00
Taha Afzal 941a0d91cc Enabled Combo report to show fractions (ITradeLow had size of type int) 2022-06-13 20:01:47 -04:00
taha afzal 60456e4225 Deribit market data is blanked out now if the connection to Deribit is lost 2022-06-10 09:54:22 -04:00
John Colvin 440e28489a build: Update libspark CMakeDeps_win 2022-06-09 13:49:55 -04:00
John Colvin 3da0f4eedc ui: Indicate price discrep w/ subtler visual than qty discrep 2022-06-09 13:49:55 -04:00
Taha Afzal 497abfb443 Fixing Futures PNL in slide 2022-06-09 00:15:23 -04:00
Taha Afzal 7b04a7849b Future delta fixed in Slide 2022-06-08 15:56:24 -04:00
taha afzal e14b1e0b07 Limiter does not use StaticLimiter anymore because Deribit and Options are included in Risk enforcement now 2022-06-08 15:55:24 -04:00
John Colvin 2121ce2841 fix build (server gcc): Remove noexcept specifier from copy/move ops
The gcc compiler was deleting the copy/move operators declared in the
MarketDataSubscription class.  This behavior was appropriate, as those
operators were declared with the 'noexcept' specifier, while the
copy/move operators of one of its members, params_ (of a proto-generated
type), lacked the 'noexcept' specifier.
2022-06-08 13:43:12 -04:00
John Colvin c22e99941e fix build: Disable ccapi dependent code on windows
It seems the ccapi lib doesn't support windows.  External market data
subscription code only needs to be built on the server anyways.
2022-06-08 11:42:10 -04:00
John Colvin 3da646dc8a fix build: Remove unnecessary import from binance-md proto
This removes an 'unused import' warning on build
2022-06-08 11:12:13 -04:00
John Colvin fca675d43f feat: Add option/deribit params to risk ui 2022-06-07 23:20:59 -04:00
John Colvin a30523744d feat: Implement ftx md subscription
Run 'sparkd ladder-demo' to check it out
2022-06-07 23:20:59 -04:00
John Colvin 80f5117c34 chore: Add is_empty fn to BookLevel
This pre-emptively fixes the BookSide::is_sorted fn, as it references
the previously non-existent BookLevel::is_empty fn
2022-06-07 23:07:33 -04:00
John Colvin f77f73ec36 fix: Fix typo in MarketDataError type param 2022-06-07 23:07:33 -04:00
John Colvin 2385cf0d1b refactor: Add add/remove fns to composite listener for convenience 2022-06-07 23:07:33 -04:00
John Colvin bc778ad5bb refactor: Rename CompositeListener -> CompositeMarketDataListener
Obviously a better, more descriptive name, and it matches the filename
(the oldname must have been an accident)
2022-06-07 23:07:33 -04:00
John Colvin acb9c35d3b logging: Add ccapi log adaptor 2022-06-07 23:07:33 -04:00
John Colvin b8473e2632 Update externals to get ccapi lib 2022-06-07 23:07:33 -04:00
John Colvin 61b4696574 fix: Don't print bogus level in LadderLivePrinter
This is used when running 'sparkd ladder-demo'

Bugs (fixed):
  * Sometimes it prints a bogus level

  cause: The 'last_ask' iterator is pointing just after the last element
  (i.e,. asks.end(), a bogus value)
2022-06-07 23:07:33 -04:00
John Colvin 91a79a5d96 refactor: Simplify md gateway/binance subscription
* Temporarily get rid of the register_listener fn, and just use
  subscribe/unsubscribe to immediately connect/disconnect listeners to
  exchange feeds. The 'register, then subscribe per sec-id' paradigm is
  tricky to implement without access to security ids.
2022-06-07 23:07:33 -04:00
John Colvin 23927edf46 fix: Add missing log msg param 2022-06-07 22:44:33 -04:00
John Colvin 6c03e605b8 refactor: Consolidate md listener management into MarketDataGateway
This responsibility was awkwardly split between MarketDataGateway and
BinanceDepthStreamSite before, which made code confusing/hard to follow.
2022-06-07 22:44:33 -04:00
John Colvin 2e201159d8 refactor: Move BinanceDepthStreamParams into own file 2022-06-07 22:44:33 -04:00
taha afzal 5d56a8e440 Added some comments and imporves the logs 2022-06-06 17:27:08 -04:00
taha afzal 7097c85555 Fixing the SQLite error on archive_theos that was crashing the server on a duplicate key assertion 2022-06-06 15:14:57 -04:00
John Colvin bf4c8e252f Add install dir to gitignore 2022-06-03 22:41:16 -04:00
John Colvin 866cf33cd4 build: Set CMAKE_INSTALL_PREFIX (for deployment)
Run 'cmake --build <path_to_build> --target install' to create a self-
contained executable sparkd in the 'install' dir at the root of the repo
2022-06-03 22:35:44 -04:00
John Colvin 4561560b46 Remove redundant 'build' items in gitignore 2022-06-03 22:32:07 -04:00
John Colvin bbadbf8e16 build: Move .cmake files to cmake dir (from tools) 2022-06-03 10:42:32 -04:00
John Colvin 68d8659115 fix (ui/slide): Fix greek tick-display formatting
Rather than fix the format fn for the old type, TickDisplaySettingsTuple,
convert params to the newer type, TickDisplaySettings, then call that type's
formatting fn (which isn't broken).
2022-06-03 01:16:03 -04:00
John Colvin dd008962a7 ui (slide/vs settings): Adjust expand/collapse durations 2022-06-03 00:42:05 -04:00
John Colvin e856e7e58f style: Add 'at_most/least' aliases for min/max ext fns
Also add documentation (for completeness sake)
2022-06-03 00:41:04 -04:00
John Colvin 634d8e1aeb fix (pre-emptive): Add null check in SecurityFormatter 2022-06-02 17:44:38 -04:00
John Colvin eaa9376577 fix (pre-emptive): Add some null checks in ContractLegEnumerable
And clean up the code a bit while we're at it
2022-06-02 17:44:38 -04:00
John Colvin 3fb70fd645 fix (contractpicker): Don't init SecurityMap w/ empty dict
Bugs (fixed):
  * The create-synth dialog crashes when picking a new leg's security
2022-06-02 17:44:38 -04:00
John Colvin b793c75aa8 Add some null checks to LegSpreaderParamsTuple 2022-06-02 17:44:38 -04:00
John Colvin cb26b9af39 fix (contractpicker): Remove SecurityMap CoerceValueCallback
This was breaking the binding so that the view had a different
security-map instance than the vm
2022-06-02 17:44:38 -04:00
John Colvin f8059cc87e build: Add verbosity opt to buildspark.py 2022-06-02 17:44:38 -04:00
John Colvin 07fe19ecdc build: Symlink emumba license in build dir
So we don't have to do it manually
2022-06-02 02:15:14 -04:00
John Colvin a292fe87e1 build: Set up cmake 'install' build target
The 'install' build target creates a self-contained (deployable) sparkd
package. It copies the sparkd executable and its dependencies into a
single directory (no symlinks), which can then be copied/deployed to
another machine.

Run `cmake --build . --target install` to install sparkd in the
directory defined by the CMAKE_INSTALL_PREFIX variable.
2022-06-02 01:32:17 -04:00
John Colvin 03d915b55c Update externals to get emumba deribit lib 2.2.8 2022-06-02 00:47:42 -04:00
John Colvin cc318535e9 fix (slide settings ui): Add show_commas prop to GreekDisplayVM
Bugs (fixed):
  * The 'show commas' check box doesn't do anything in slide settings ui

    Cause: The view is bound to a non-existent prop in the vm
2022-06-01 19:28:13 -04:00
John Colvin 9d245f3243 ui (vs settings): Wrap body in scrollviewer 2022-06-01 19:02:42 -04:00
John Colvin 6d7f95ac8e ui (vs settings): Change radio buttons to dropdown
The radio buttons take up too much space
2022-06-01 19:02:42 -04:00
John Colvin 9d9df76f4e refactor: Clean up KeyedTemplateSelector
* Use new lang feats
* Run formatter
* Split up classes into separate files
* Move into Controller dir (per the MVCVM paradigm)
2022-06-01 19:02:42 -04:00
John Colvin a850082f44 refactor: Move StringExtensions to ns Spark.Core 2022-06-01 19:02:42 -04:00
John Colvin 521150a73b refactor: Clean up StringExtensions
* Use new lang feats
* Run formatter
2022-06-01 19:02:42 -04:00
John Colvin ed5f3fe740 ui (slide settings): Change param validation msgs
Change 'Specify' to 'Choose'
2022-06-01 19:02:41 -04:00
John Colvin fd6fdd9768 Refresh radio-button-member 'IsChecked' when member-val changes 2022-06-01 19:02:41 -04:00
John Colvin 73bf104e9f fix: Add null check
Also use null coalesce syntax to clean up existing null checks
2022-06-01 19:02:41 -04:00
John Colvin 24640e65b1 fix (pre-emptive): Add null check 2022-06-01 19:02:41 -04:00
John Colvin eadfc38a69 refactor: Use nullability feat in ExceptNull, DisposeAll fns 2022-06-01 19:02:41 -04:00
John Colvin 098ee36c3a fix: Init NotifyCollectionChangedEventArgs w/ correct args
Bugs (fixed):
  * The ObservableAggregateCollection.Aggregator.Insert fn causes an
    ArgumentException if the collection to be inserted is non-empty. This seems
    to happen because the NotifyCollectionChangedEventArgs is improperly
    constructed (the collection-tuple is passed as the 'changedItem' arg).

  * The ObservableAggregateCollection.Aggregator.Insert fn appends existing
    items to the end of the aggregate collection (instead of inserting them in
    the appropriate index).
    Note: This bug was only revealed after the first bug was fixed.
2022-06-01 19:02:41 -04:00
John Colvin f4ed4d38f1 refactor: Change collection aggregator to use IReadOnlyList
It was previously accepting IReadOnlyCollection args, but the
ObservableCollection paradigm generally uses indexed lists
2022-06-01 19:02:41 -04:00
John Colvin 2ed3eaa325 refactor: Check if list already instantiates IList<T>
Before creating a new MutableWrapper<T>
2022-06-01 19:02:41 -04:00
John Colvin 3a7a02244b refactor (ui): Use ExpandedContentSelector in vs win 2022-06-01 19:02:41 -04:00
John Colvin 79258b9404 fix (slide): Observe IObservables OnDispatcher 2022-06-01 10:11:26 -04:00
John Colvin 6376802d04 ui (slide): Use ExpandableContentSelector 2022-06-01 10:11:26 -04:00
John Colvin 2784e7652d ui (control): Add ExpandedContentSelector for modal section-expansion 2022-06-01 10:11:26 -04:00
John Colvin 5b3925fae0 fix: Set GridSettings.enable_background_color in settings vm 2022-06-01 10:11:26 -04:00
John Colvin 077f6050f3 ui (login): Add F5 'refresh' cmd to retry connecting to server 2022-06-01 10:11:26 -04:00
John Colvin 791dd62b67 fix (ui): Fix typos in vs settings editor xaml
* Remove non-existent xmlns

* Change element-name 'curve_ops_gb' to 'StandardCurveOpsView'.  The _gb suffix
  doesn't make sense bc the element is no longer a GroupBox, and the new name
  is stylistically consistent with the other section-view element-names

* Change 'Market Fit View' to 'Market Fit'
2022-06-01 10:11:15 -04:00
John Colvin 2364cda362 ui: Tweak expand/collapse animation
Use shorter duration for collapsing, and longer for expanding
2022-06-01 00:00:57 -04:00
John Colvin aca4365e8d fix (pre-emptive): Add null check 2022-05-31 16:43:22 -04:00
taha afzal cac857a3a7 Busted fills filtered out of the PositionService position calculations 2022-05-30 15:38:08 -04:00
John Colvin ed38ce958d build: Resurrect web build 2022-05-28 11:40:45 -04:00
Taha Afzal ed4b9b7426 Added is_active to ITradeLogRow, and changed Combo and Slide to use that 2022-05-26 19:31:13 -04:00
Taha Afzal e4468f056d Filtering out busted fills in Slide 2022-05-26 19:17:23 -04:00
Taha Afzal 4b580b407e Adding FillStatus to ITradeLogRow and filtering the busted fills out in Combo 2022-05-26 19:08:47 -04:00
taha afzal b575612b07 Fixing Busting of fills on ResetPositions 2022-05-26 18:39:19 -04:00
John Colvin b506b971a4 feat: Init order ticket w/ default account from ladder profiles 2022-05-26 15:44:02 -04:00
John Colvin c50f322dc1 refactor: Remove 'where class' constraint from FirstAsyncTask
The constraint didn't seem to serve a purpose
2022-05-26 12:57:02 -04:00
John Colvin 3a61f4d81d ui: Add default-background control to grid settings dialog 2022-05-26 12:57:02 -04:00
John Colvin a2b2de9783 feat: Reconcile Report 2022-05-25 14:28:58 -04:00
John Colvin b2a6927b4b Enable all column settings in mview (for all cols) 2022-05-25 14:28:57 -04:00
John Colvin 80dec4e1e2 ui: Fix typo to enable column background in GridSettingsView 2022-05-25 14:28:57 -04:00
John Colvin 77c7802496 Set cell-view's DIYGrid.Column when syncing w/ column geometry 2022-05-25 14:19:04 -04:00
John Colvin cec2687085 ui: Increase default 'Security' col width
Many Deribit securities are wider than the previous col width
(particularly options)
2022-05-25 14:19:04 -04:00
John Colvin ac118993d5 refactor: Change ManualFill.quantity to double 2022-05-25 14:19:04 -04:00
John Colvin 7634ecf730 refactor: Break up massive file Update.cs
Into one file per class
2022-05-25 14:19:04 -04:00
John Colvin 309d1fa287 refactor: Remove LegacyTableUpdate class 2022-05-25 14:19:04 -04:00
John Colvin 9231a91fb4 Fix typo in Update.merge fn
Bugs (fixed):
   * When merging updates, a new ChangeDict is always instantiated
   (sometimes unnecessarily).  This was causing a performance hit, but
   not actual bad/incorrect behavior, so it went unnoticed for years
2022-05-25 14:19:04 -04:00
John Colvin f6f928a693 refactor: Move MarketDataAuxiliaryModel into Model dir 2022-05-25 14:19:03 -04:00
John Colvin 467216439b refactor: Move PositionModel classes into own files 2022-05-25 14:19:03 -04:00
John Colvin c63e73ab7c refactor: Move SparkObservableExtensions into own file
And rename class ReactiveObservableExtensions
2022-05-25 14:19:03 -04:00
John Colvin 74fcacd800 Clear 'raw' (unfiltered) table changes on filter-updates
Otherwise, it would repeat the changes from the last data-update, and
break the incremental sequence
2022-05-25 14:19:03 -04:00
John Colvin c1c46f01ab refactor: Use DispatcherObservable class to avoid op chains 2022-05-25 14:19:03 -04:00
John Colvin 77083a1fa6 fix: Don't bypass Dispatcher.InvokeAsync in OnDispatcher ext
Otherwise the updates may not be received in order
2022-05-25 14:19:03 -04:00
John Colvin 5303f290b1 refactor: Move sec metadata utils into SecurityMetadataStore 2022-05-25 14:19:03 -04:00
John Colvin 895871c94b refactor: Move SecurityCriteria classes into spark_core
Also move IBus there bc some SecurityCriteriaExtensions depend on it
(and spark_core seems more appropriate for IBus anyways)
2022-05-25 14:19:03 -04:00
John Colvin 3bff50b764 diag: Add TableUpdate.description ext
For diagnostic logging/tracking down bugs
2022-05-25 14:19:03 -04:00
John Colvin 86b7802b3b Use RadioButtonGroupManager.Value prop instead of DataContext
This more clearly defines the behavior
2022-05-25 14:19:03 -04:00
John Colvin 4ff9aaf037 refactor: Clean up DIYGridFilterModel 2022-05-25 14:19:03 -04:00
John Colvin 99f7827e7e refactor: Clean up RadioButtonGroupManager/Map 2022-05-25 14:19:03 -04:00
John Colvin b67ac5c849 Simplify slide settings view by using RadioButtonGroupManager (not map) 2022-05-25 14:19:03 -04:00
John Colvin 0777f01607 fix: Remove il-advised SelectedItem(Binding) dp
It doesn't make sense to try to normalize the binding for different
groups into a single binding in the group manager
2022-05-25 14:19:03 -04:00
John Colvin 222dbf5443 refactor: Move RadioButtonGroupManagerMap into own file 2022-05-25 14:19:03 -04:00
John Colvin 9434f61030 fix: Make GroupManagerMap an Attached dp
It always should have been attached (analagous to a static prop)
2022-05-25 14:19:03 -04:00
John Colvin 9199594756 fix: Add null check for put/call_points in VolSurfaceDataFunctions 2022-05-25 14:19:03 -04:00
John Colvin fc9318a831 ui: Refine vs settings dialog
Make it look more like combo/slide settings dialogs
2022-05-25 14:19:03 -04:00
John Colvin e3fc28f082 fix: Wrap algometadata proto list in single class
Bugs (fixed):
   * An exception is thrown when deserializing
     AlgoDefinitionPersistedMetadata array
2022-05-25 14:19:03 -04:00
John Colvin 9cb7b84f57 Only recreate TViews when necessary in RXCollection 2022-05-25 14:19:03 -04:00
John Colvin 2689ed806d fix: Add null check in VolSurfaceDataFunctions.get_symbols 2022-05-25 14:19:03 -04:00
John Colvin 5999e7856f fix: Add null check for sec metadata in MDDaemon 2022-05-25 14:19:03 -04:00
John Colvin 96ad67b020 fix: Ensure ShellModuleVM.MenuContent is created at most once 2022-05-25 14:19:03 -04:00
John Colvin 47d5b95e13 ui (exp params): Add 'Set Driver to Nearest Exp' menu item 2022-05-25 14:19:02 -04:00
John Colvin 12108e6046 fix: Fix typo in 'abs' ext (should accpet INumber<T>) 2022-05-25 14:19:02 -04:00
John Colvin 021bdb8c23 Add ObservableHashSet 2022-05-25 14:19:02 -04:00
John Colvin 470f6c0988 Add Opacity option to ColorExtension (for xaml) 2022-05-25 14:19:02 -04:00
John Colvin c8b87b4f79 Remove the ill-advised FontFamily enum
The library of potential font families to choose from is endless, so it
doesn't make sense to limit a user's options to a small set of arbitrary
presets
2022-05-25 14:19:02 -04:00
John Colvin 9d7e16fbf7 refactor: Move FontFamily exts into own file
This resolves some nagging namespace conflicts w/ FontFamily (in
System.Windows.Media and mbts.ui.utility.text)

TODO: Get rid of mbts.ui.utility.text.FontFamily (it was an ill-advised
enum to begin with)
2022-05-25 14:19:02 -04:00
John Colvin 5a45d5e12a fix: Ensure AlgoData IObservable fires at least once
Bugs (fixed):
   * The algo dropdown in ladder/ticket is empty
   Note: this bug was exposed as side effect of a recent change to
   prevent the TableUpdate Filter ext from firing empty TableUpdates
2022-05-25 14:19:02 -04:00
John Colvin c793ec78a2 Don't send empty updates in TableUpdate Filter ext 2022-05-25 14:19:02 -04:00
John Colvin 7b2b7c5854 refactor: Get rid of 'semi_transparent' brushes in BTSColors
Doesn't seem worth the clutter
2022-05-25 14:19:02 -04:00
John Colvin 327615c9ac refactor: Move 'position' utils from OrdersModel to PositionModel
OrdersModel contains way too much "miscellaneous" code.  This will
reduce at least some of the clutter.
2022-05-25 14:19:02 -04:00
John Colvin 8e5d94b5e7 refactor: Move TickDisplayConverter into mbts.ui.converters ns
This is where all the other IValueConverter classes are defined
2022-05-25 14:19:02 -04:00
John Colvin bd76a1f260 ui: Only expand one section at a time in slide settings dialog 2022-05-25 14:19:02 -04:00
John Colvin 1df2695f50 refactor: Clean up FillsVM 2022-05-25 14:18:57 -04:00
John Colvin 67d33a3315 Add null-check when disposing ObservableAutoWrapper item-hooks 2022-05-25 14:07:21 -04:00
John Colvin c49cd3a06e refactor: Clean up DIYGridRowsManager and related files/types
* Rename class suffix 'Manager' -> 'Model'
* Move classes into own files
* Put column-related classes in columns dir
* Enable nullable
* Run formatter
2022-05-25 14:07:21 -04:00
John Colvin 6c0545f566 fix: Don't deserialize AlgoDefinitionMetadata[] w/ length prefix
Bugs (fixed):
   * AlgoDefinitionMetadata[] deserialization fails
2022-05-25 14:07:21 -04:00
John Colvin f0eee365f9 fix: Catch & log deserialization exceptions
Rather than silently catching the exception upstream
2022-05-25 14:07:21 -04:00
John Colvin 274db506a9 Clean up DiscreteValuesFilterVM 2022-05-25 14:07:21 -04:00
John Colvin 1e5c56f3a7 refactor: Make key param optional in TableUpdate Filter ext 2022-05-25 14:06:49 -04:00
John Colvin 871c7a131f refactor: Move Position extensions to own file in spark_api 2022-05-24 12:25:16 -04:00
John Colvin 7642d73f39 Add join_table fn to SecurityStore 2022-05-24 12:25:16 -04:00
John Colvin ef69dfa646 refactor: Add 'table' subscription fns to generated proto services
* Provides a simple convenience, as nearly all api subscriptions made on the
  front-end are converted to TableUpdates anyways

* Can help reduce overhead by instantiating TableUpdate subscriptions
  lazily, and by using one internal TableUpdate subscription to provide
  notifications to all observers
2022-05-24 12:25:16 -04:00
John Colvin 377be5030f style: Clean up pb.cs templates (generated code) 2022-05-24 12:25:16 -04:00
taha afzal 896af55e79 Added commented to document flow of ExchangePosition 2022-05-24 12:24:47 -04:00
Taha Afzal b9a4a2c148 Added right click context menu item in the sheets to launch ladders 2022-05-23 15:36:49 -04:00
Taha Afzal e9f6d096cf Disabling tasking context menu items from the sheet 2022-05-23 14:46:47 -04:00
taha afzal 25d4c54284 Added account_id to ExchangePosition 2022-05-23 11:51:10 -04:00
taha afzal e4291e1c51 Adding account to ExchangePosition 2022-05-19 18:16:46 -04:00
taha afzal 5c11708728 Fixing assert on_get_all_position callback from EM 2022-05-18 17:56:06 -04:00
taha afzal 73a301192f Fixing ExchangePosition's qty (unsigned uint related bug) and exchange 2022-05-18 17:14:39 -04:00
Taha Afzal d972564d34 Clip defaults changed 2022-05-18 01:16:39 -04:00
taha afzal e66a2d4663 Rejected orders now show up in the Orderbook UI 2022-05-18 00:42:00 -04:00
Taha Afzal f92e13d898 Logging the key of the placed order 2022-05-16 16:03:46 -04:00
John Colvin 3d0698b326 task: Set ManualFill.FillType to 'AdminDay' 2022-05-16 15:57:28 -04:00
Taha Afzal 1e0ab86a24 MD entitlements turned off temporarily until we can add the settings to Risk Admin (web) 2022-05-12 18:02:22 -04:00
Taha Afzal caa29b9513 Reducing market data related logging 2022-05-12 16:21:42 -04:00
Taha Afzal c793768918 Bug with VolSurfaceUsage fixed 2022-05-12 00:09:37 -04:00
John Colvin 0132a0cff6 ui (exp params, combo): Format exps with month abv & day
This formatting is consistent with the rest of the system.  Furthermore, it
ensures all sym/exp combinations have unique string reps (some symbols can have
multiple exps in one month, such as ETH).
2022-05-11 15:19:50 -04:00
John Colvin f83b6ee898 ui (slide): Prevent last-trade & swipe-sum from overlapping 2022-05-10 13:38:36 -04:00
John Colvin dc071dfa56 fix: RaisePropertyChanged when vm 'HasErrors' changes 2022-05-10 13:34:29 -04:00
John Colvin fbfd601270 ui: Refine slide settings dialog
* Unify greeks configuration/display settings into one section
* Replace tabs with modal expandable sections (like in the analytics
shell module view)
2022-05-10 13:34:29 -04:00
John Colvin 9b5aea2458 refactor: Abstract out modal expand/collapse animation/behavior
From the analytics module view (so it can be used by other windows)
2022-05-10 13:31:57 -04:00
taha afzal 904ef92ece Added reset_position to PositionService 2022-05-09 14:40:44 -04:00
John Colvin 74e950d459 ui: Don't filter manual fills 2022-05-07 17:51:44 -04:00
John Colvin e99caef2dc ui: Change 'Show Expanded' to 'Expand Symbols' in slide/combo 2022-05-07 16:42:15 -04:00
John Colvin 855e4a6ed8 ui: Change combo 'expand' icon to chevron right
It expands to the right (not down)
2022-05-07 16:40:16 -04:00
John Colvin 311b956461 Set manual fills' FillType to ADMIN_DAY (when creating) 2022-05-07 16:19:10 -04:00
John Colvin b3b308cd9d ui (fix): Set DIYGridLineAdorner.IsHitTestVisible to false
Otherwise it prevents click events from reaching the grid
2022-05-07 14:02:51 -04:00
John Colvin a8480a34ba fix: Detach DIYGridLineAdorner on dispose 2022-05-07 14:02:46 -04:00
John Colvin 3312637b8d dev/john: Add vscode json files for windows/client 2022-05-07 13:57:49 -04:00
John Colvin e6f7a82fb1 dev/john: Move 'vscode' json files into vscode/linux
They've always been specific to the linux/server code.  Moving them as such
to make room for windows/client specific settings files.
2022-05-07 13:57:49 -04:00
John Colvin 5b934de69a Add redundant checks to ensure readonly cells aren't copy/pasted in vs grid 2022-05-07 13:57:49 -04:00
John Colvin 0f78982f57 fix: Support copy/pasting in vs grid on readonly cell click
Only the option to copy the individual column value should be
hidden/disabled for readonly cells
2022-05-07 13:57:49 -04:00
John Colvin 18abbfc502 fix: Use vs grid's context menu rather than those of individual rows
Bugs (fixed):
   * Crash when copy/pasting in volsurface grid
2022-05-07 13:57:49 -04:00
John Colvin c3ae4c6dc5 refactor: Make VolSurfaceColumn.model readonly
It's never reassigned; should have been readonly to begin with
2022-05-07 13:57:09 -04:00
John Colvin 9b012649cd fix: Add nullcheck for hscrollbar in grid line adorner
Bugs (fixed):
   * A silent ArgumentNullException is thrown when opening volsurface windows
   during startup
2022-05-07 13:57:09 -04:00
Taha Afzal c126091155 VolSurfaceUsage is not read from config 2022-05-06 14:41:40 -04:00
taha afzal c2fee56496 Adding temporary vol surface usage to config (simplifying it to only have symbol because SecTup had serialization issues in C#) 2022-05-06 13:55:44 -04:00
taha afzal 5461dc77aa Added default config based risk limits for Deribit symbols 2022-05-05 20:39:47 -04:00
taha afzal 1b2a1c3fe3 Limiter can optionally get its value from config 2022-05-05 20:39:47 -04:00
Taha Afzal a83a4fdd4f UIOverrides for slide are ignored in the calcultor (were already disable din the UI for now) 2022-05-05 13:53:16 -04:00
Taha Afzal 4d4ee1f57c TC2 is constructed on the correct options now 2022-05-04 15:11:24 -04:00
John Colvin 2bec4ae09f ui: Hide position analysis filters in slide win
At least until they're actually implemented in model/calculation code
2022-05-04 15:07:14 -04:00
John Colvin e3b91909a6 Hook up combo conf vm ErrorsChanged callback once (in ctr) 2022-05-04 14:58:57 -04:00
John Colvin 116ba3f629 Add venue component to report risk-terms/opt-equiv params 2022-05-04 14:56:43 -04:00
John Colvin 0ce6f8e6a2 style: Enable nullable in ComboReportFuturesGrid 2022-05-04 14:53:44 -04:00
John Colvin 9447cb67d2 fix: Populate exps list used to generate cols in combo futs grid
Bugs (fixed):
   * Future positions aren't showing in combo report
2022-05-04 14:53:44 -04:00
John Colvin 92dacc5c3c ui: Use consistent sorting in risk terms/opt equiv dropdowns 2022-05-04 14:53:44 -04:00
John Colvin 766dfe9dd3 ui: Hide security criteria param in slide settings win 2022-05-04 14:53:44 -04:00
John Colvin 84ecb54efd ui: Change 'Volsurface' -> 'Vol Surface' in slide settings win 2022-05-04 14:53:44 -04:00
John Colvin 6ff8855dba refactor: Change report security list to SecurityCriteria 2022-05-04 14:53:44 -04:00
John Colvin 7f349cfa71 ui: Use converter to generate 'pretty name' for sec criteria clause 2022-05-04 14:53:44 -04:00
John Colvin 948b23addc fix: Don't add duplicate securities in slide config vm
Bugs (fixed):
   * Slide settings dialog shows duplicate security items in dropdown
2022-05-04 14:53:44 -04:00
John Colvin 7031bb6fbe fix (ui): Fix typo in slide settings dialog ok/apply cmd binding 2022-05-04 14:53:44 -04:00
John Colvin 15a04a1870 build: Temporarily disable web build
Until we can fix integration with dotnet 6
2022-05-04 09:23:32 -04:00
John Colvin 741c6d360a fix: Refresh slide-settings vm 'result' when included syms change 2022-05-02 17:32:32 -04:00
John Colvin c4f3ca26ef ui: Use new spark menu toggle style in combo win/vm 2022-05-02 17:29:30 -04:00
John Colvin 3403adc1ff fix: Hook up expanded/collapsed toggle in slide
Bugs (fixed):
   * Changing the view-format in slide doesn't do anything
2022-05-02 17:29:30 -04:00
John Colvin 410d3aaf20 ui: Use opacity to indicate 'checked' state in spark menu 2022-05-02 17:29:30 -04:00
John Colvin 34905f6053 Fix benign typo in exp params win menu item init 2022-05-02 17:29:29 -04:00
John Colvin 6a16d419af ui: Use checkmark icon for 'Checkable' items in spark win context menu 2022-05-02 17:29:29 -04:00
John Colvin cd23c1a5a1 fix (ui): Use 'opacity' to indicate enabled/disabled in spark menu
Bugs (fixed):
   * SparkMenuItems sometimes look disabled when they aren't (esp in
   AnalyticsExpirationParameters win)

In wpf, VisualStates in different VisualStateGroups shouldn't adjust
common properties.  A visual element can only be in 1 visual state at a
time.  When a visual element transitions to a new visual state, all
depepdency property changes associated with the transition to the
previous state are cleared.
2022-05-02 17:29:29 -04:00
John Colvin 18793f8cd9 ui: Add 'Swipe Sum' tooltip in slide 2022-05-02 17:29:29 -04:00
John Colvin c008147674 ui: Use DayMonthAbvDiff2000 format for last trade exp in combo/slide 2022-05-02 17:29:29 -04:00
John Colvin 47323c51c3 ui: Use normal font size of grid in combo 2022-05-02 17:29:29 -04:00
John Colvin 91f58620ac ui: Make '|' separator in combo consistent w/ those in slide 2022-05-02 17:29:29 -04:00
John Colvin 91aeccb2ae ui: Use normal font size outside of grids in slide 2022-05-02 17:29:29 -04:00
John Colvin 82864a609d ui: Make '|' separator consistent in slide status bars (upper/lower) 2022-05-02 17:29:29 -04:00
John Colvin 828b1ca0c2 ui: Add '|' separators in slide status bar 2022-05-02 17:29:29 -04:00
John Colvin 6b740ece39 ui: Use common IValueConverter for last_trade in slide/combo wins 2022-05-02 17:29:29 -04:00
John Colvin 84f18288e0 fix: Fix typo 'call' -> 'put' in ComboReportOptionCellView 2022-05-02 17:29:29 -04:00
John Colvin cf9e5862ed fix: Invalidate 'measure' when ShowCallPut in combo opt cell
Bugs (fixed):
   * combo report does not show call/put when 'Show Call/Put' is checked
2022-05-02 17:29:29 -04:00
John Colvin 4ca2b5f4d2 fix: Add missing 'ExpirationTextConverter' resource in ComboReportView 2022-05-02 17:29:29 -04:00
John Colvin da2894512d fix: Fix typo 'ComboReport' -> 'ComboReportView' 2022-05-02 17:29:29 -04:00
John Colvin 55e9487203 fix: Sync strikes and exps in combo on_data callback 2022-05-02 17:29:29 -04:00
John Colvin 19fb08e7ff fix: Add nullcheck in TradeLogRow ctr 2022-05-02 17:29:29 -04:00
John Colvin 193b1025ad style: Clean up ReportDaemon 2022-05-02 17:29:29 -04:00
John Colvin 8fa2a925cd refactor: Use ToggleCommand/SparkMenuItemToggleModel in slide win 2022-05-02 17:29:29 -04:00
John Colvin 526daa9647 ui: Use 'candidate' icon for 'Use Candidate Vol' menu item 2022-05-02 12:29:03 -04:00
John Colvin 43bcc9fe02 Add 'candidate' icon
Even though not in use atm, it was hard to parse out the individual
candidate from the svg, and might come in handy down the road.  Seems worth
keeping
2022-05-02 12:29:03 -04:00
John Colvin 51d6066420 fix: Add nullcheck in get_vs_price_map 2022-05-02 12:29:03 -04:00
John Colvin 0b11b83eb5 ui: Refine slide win
* dock account/risk terms to the left
2022-05-02 12:29:03 -04:00
John Colvin a53dfd14b1 ui: Refine combo win
* make call/put toggle a spark menu item (in the toolbar)
* dock account/risk terms to the left
* hide account/risk terms labels (show them as tooltips instead)
2022-05-02 12:29:02 -04:00
John Colvin cc0380d8f1 Add ToggleCommand type and related infrastructure 2022-05-02 12:29:02 -04:00
John Colvin 0a01d22e72 refactor: Rename 'UseCandidateVol' icon -> 'vol_curve' 2022-05-02 12:29:02 -04:00
John Colvin e9f1c72198 refactor: Refine 'create_checked_icon' code/logic
Clean up code a bit, and add some parameters to custom fit/position the
check mark with any given Drawing
2022-05-02 12:29:02 -04:00
John Colvin 14af8823ed refactor: Rename SparkCommandVM -> SparkMenuItemVM
Also move to 'ViewModels' dir
2022-05-02 12:29:02 -04:00
John Colvin 5900ce7d12 Fix windows build after moving FileUtils to lib 2022-05-02 12:29:02 -04:00
John Colvin 33e0a6bb46 Generate new keycodes for default config
These won't expire until 2032
2022-05-02 12:29:02 -04:00
John Colvin ca3bc5059e Read public key from config (for login/auth) 2022-05-02 12:29:02 -04:00
John Colvin bd108dfe35 cli (server): Add key-code subcommand to sparkd 2022-05-02 12:29:02 -04:00
John Colvin 8a96c7441e refactor: Clean up KeyCode 2022-05-02 12:29:01 -04:00
John Colvin 4eea3194fd Remove unused args from key-code subcmds 2022-05-02 12:29:01 -04:00
John Colvin dace332ac5 refactor: Move FileUtils into lib 2022-05-02 12:29:01 -04:00
John Colvin af816bb905 fix: Don't cast numeric types via boxing
This is illegal
2022-05-02 12:29:01 -04:00
John Colvin 195c24ffef refactor: Move SingleValueList to own file 2022-05-02 12:29:01 -04:00
John Colvin 92ad17aa19 fix: Save slide report before closing settings dialog
Bugs (fixed):
   * Slide report configuration doesn't save on OK click (does save on Apply
   click though)
2022-05-02 12:29:01 -04:00
John Colvin eabc4bee4c fix: Save combo report before closing settings dialog
Bugs (fixed):
   * Combo report configuration doesn't save on OK click (does save on Apply
   click though)
2022-05-02 12:29:01 -04:00
John Colvin 0ed9142cf0 test: Add HierarchicalDictionaryTest 2022-05-02 12:29:01 -04:00
John Colvin 1639683b43 fix: Set _value_count to 0 when HierarchicalDictionary is Cleared 2022-05-02 12:29:01 -04:00
John Colvin 05afb08c5d fix: Ensure HierarchicalDictionary nodes in sync w/ parent data 2022-05-02 12:29:01 -04:00
John Colvin c674e44c60 refactor: Enable nullable in EnumerableExtensions 2022-05-02 12:29:00 -04:00
John Colvin e104c78471 fix (preemptive): Fix typo in Sum ext
This fix is preemptive only bc this fn isn't referenced atm
2022-05-02 12:29:00 -04:00
John Colvin 3d8ec63bd7 ui: Condense text/controls in top of Slide win 2022-05-02 12:29:00 -04:00
John Colvin 99670c9d28 ui: Move last update time down to status bar in Slide win 2022-05-02 12:29:00 -04:00
John Colvin 56126e19a7 refactor: Clean up SlideReportView.xaml.cs 2022-05-02 12:29:00 -04:00
John Colvin 05e8363504 ui: Change 'Use Candidate Vol' icon to look sort of like vol-curve 2022-05-02 12:29:00 -04:00
John Colvin 884741062b ui: Add expand/collapse toggle menu item to Combo win 2022-05-02 12:29:00 -04:00
John Colvin 63c77966fa ui: Add menu-orientation menu-item to Slide win 2022-05-02 12:29:00 -04:00
John Colvin 31745d9f0d ui: Add menu-orientation menu-item to Combo win 2022-05-02 12:29:00 -04:00
John Colvin 78897ed608 refactor: Clean up SparkMenu
* use visual states instead of triggers for mouse-state-transition animation
* use new lang feats
* run formatter
2022-05-02 12:29:00 -04:00
John Colvin 5712bcdc57 Add PressedAnimationDuration prop to MouseStateDefinition
This provides a way to ensure that 'Pressed' animations, which takes a
non-zero amt of time, always run to completion (before animation for the
next state begins)
2022-05-02 12:28:59 -04:00
John Colvin 8e0a027584 style: Add documentation to ProjectToVector ext 2022-05-02 12:28:59 -04:00
John Colvin 12f88b5303 test: Add unit test for ProjectToVector ext 2022-05-02 12:28:59 -04:00
John Colvin b119cad8a9 ui: Remove 'Focus' animation from SparkMenuButton
Not sure why this was here in the first place..it's identical to the
MouseOver animation
2022-05-02 12:28:59 -04:00
John Colvin f30210e4e1 refactor: Move SparkMenu style/xaml to own file 2022-05-02 12:28:59 -04:00
John Colvin a8d6a104c3 refactor: Clean up OptionDriverPriceMap 2022-05-02 12:28:59 -04:00
John Colvin 13df0c8638 Spruce up AnalyticsShellModuleView 2022-05-02 12:28:59 -04:00
John Colvin fb70aa6514 fix (ui): Set combo report settings dialog title to string literal
Previously, it was bound to the report-name.  However, the binding was broken.
Furthermore it doesn't seem appropriate to bind the title to the name since the
user can edit the name in the settings dialog
2022-05-02 12:28:59 -04:00
John Colvin 37fd1d424e refactor: Rename (SlideReportSettings)View -> Dialog
This is more consistent with our name conventions, and dialog is more
precise description of the type
2022-05-02 12:28:59 -04:00
John Colvin bdbbcb05dc ui: Animate AnalyticsShellModule window-section expand/collapse 2022-05-02 12:28:59 -04:00
John Colvin 9cd5d0890f ui: Add large-flat button style 2022-05-02 12:28:59 -04:00
John Colvin 7b1fa849ef fix (preemptive): Curry 'Member' to DataContextChanged callback
Bugs (fixed):
   * [preemptive] potential InvalidCastException in
   RadioButtonGroupManager.DataContextChanged callback
2022-05-02 12:28:59 -04:00
John Colvin a8b5cf81ee fix (ui): Set combo report settings dialog title to string literal
Previously, it was bound to the report-name.  However, the binding was
broken; furthermore it doesn't seem appropriate to bind to the name
since the user can edit the name in the settings dialog
2022-05-02 12:28:58 -04:00
John Colvin bc62d4b359 refactor: Rename (ComboReportSettings)View -> Dialog
This is more consistent with our naming conventions, and 'dialog' is a
more precise description of this type.
2022-05-02 12:28:58 -04:00
John Colvin 4413580212 feat: Support modifying combo report 'name' after it is created
The csharp vm infrastructure was already in place, so this was just a matter of
adding the 'name' field to the settings view
2022-05-02 12:28:58 -04:00
John Colvin 8b653ef133 feat: Add volume col to TimeAndSales 2022-05-02 12:28:58 -04:00
John Colvin b1f8ac7e22 refactor: Make Optional<T> a struct
It's a trivial, readonly type, so struct seems more appropriate than class

Bugs (fixed):
   * [preemptive] greeks_tuple param potential null-ref exception in TradeInfo
   'with' ext
2022-05-02 12:28:58 -04:00
John Colvin a11c23d718 refactor: Enable nullable in TimeAndSales(Filter)Settings 2022-05-02 12:28:58 -04:00
John Colvin 9feceb9fdb fix: Create new instance of ContextMenu on each open
Bugs (fixed):
   * the volsurface grid context menu items' col/super header names don't stay
   in sync with clicked cell (the names never change once the menu item becomes
   visible for the first time)
2022-05-02 12:28:58 -04:00
John Colvin bad6464fe9 refactor: Clean up VolSurfaceRowContextMenuVM
* use new lang feats
* run formatter
2022-05-02 12:28:58 -04:00
John Colvin a6007ca362 refactor: Sync symbols in vs row context menu when vis-exps changes
Also, rename SymbolFilter -> SymbolItemVM
2022-05-02 12:28:58 -04:00
John Colvin 05348b01ae refactor: Clean up VolSurfaceRowVM
* use new lang feats
* run formatter
2022-05-02 12:28:58 -04:00
John Colvin abfabe3e21 Remove unused file VolSurfaceRowControl.cs 2022-05-02 12:28:58 -04:00
John Colvin 83e0da446a refactor: Rename VolSurfaceRowContext -> VolSurfaceRowVM 2022-05-02 12:28:58 -04:00
John Colvin 85a48e71d1 refactor: Move vs row context menu vm to own file & unnest class 2022-05-02 12:28:57 -04:00
John Colvin 0671117660 refactor: Move sync_with ext to ListExtensions 2022-05-02 12:28:57 -04:00
John Colvin 654c5b3074 refactor: Rename 'command' members 'cmd' in VolSurfaceRowContext 2022-05-02 12:28:57 -04:00
John Colvin aee5e54c14 refactor: Clean up VolSurfaceVM
* use new lang feats
* rename 'command' members 'cmd'
* sort members
2022-05-02 12:28:57 -04:00
John Colvin e5df037992 refactor: Remove redundant LastOrDefault ext fn 2022-05-02 12:28:57 -04:00
John Colvin 06b9586eb6 refactor: Consolidate tick up/down fn pairs into singular tick fns
With 'is_up' params
2022-05-02 12:28:57 -04:00
John Colvin 79716dfdba refactor: Add NotNullWhen attrs to tick up/down out params 2022-05-02 12:28:57 -04:00
John Colvin 02b6b5d078 fix: Handle nan qty gracefully on ladder qty button click
Just set the value to that of the clicked button (since you can't add
anything to NaN)
2022-05-02 12:28:57 -04:00
John Colvin 403e8d2947 ui: Change TickUpDownNullable control to reset null -> 0 on tick click 2022-05-02 12:28:57 -04:00
John Colvin 25e9c37987 refactor: Change props to generic T in TickUpDownNullableNumeric
Accidentally left several members defined as type double (this
now-generic class was refactored from TickUpDownNullableDouble)
2022-05-02 12:28:57 -04:00
John Colvin 99b58cf2bf refactor: Clean up LadderVM
* use new lang feats
* sort members
* run formatter
2022-05-02 12:28:56 -04:00
John Colvin 78155cfbdf refactor: Clean up LadderOrderVM
* use new lang feats
* sort members
* run formatter
2022-05-02 12:28:56 -04:00
John Colvin 1ba980d69f refactor: Accept tuples with non-uniform types in 'Sum' ext 2022-05-02 12:28:56 -04:00
John Colvin ef155aaedf Remove redundant bootstrapping code from TableUpdateDemuxer 2022-05-02 12:28:56 -04:00
John Colvin 22c4b528cb fix: Actually propagate updates to Subject nodes in TableUpdateDemuxer
Bugs (fixed):
   * Working orders are not showing in ladder
2022-05-02 12:28:56 -04:00
John Colvin fd71c6ac7a Set ShowDecimalPart to false in default qty display settings 2022-05-02 12:28:56 -04:00
John Colvin 019fa134cb fix: Use valid defaults for price/qty display in SecurityMD 2022-05-02 12:28:56 -04:00
John Colvin 4a40bd3364 refactor: Move SecurityDataHelper to spark_api proj 2022-05-02 12:28:56 -04:00
John Colvin 68229b2474 build (server): Update CMakeDeps 2022-05-02 12:28:56 -04:00
John Colvin 8727ed6ccd Upgrade server to dotnet-sdk 6
* upgraded externals to install dotnet-sdk-6.0 in docker
* rewound the sdk version specified in global.json to 6.0.200 (latest
available in the apt repository)
* updated some fs code that wasn't backwards compatible (namely the
builtin 'TryParse' methods)
2022-05-02 12:28:56 -04:00
John Colvin 8ee3d5b8ad web: Add tsconfig for clang release build
Not sure why this file was absent in the first place, as similar
tsconfig files were already present for clang debug, and gcc
debug/release
2022-05-02 12:28:55 -04:00
John Colvin 98ee43aa27 ui: Add spark menu items to toggle auto-copy-rolls/rates 2022-05-02 12:28:55 -04:00
John Colvin 92291e3f9f refactor: Clean up AnalyticsParametersManager
* replace ThreadedBlackboard w/ IBus
* use new lang feats
* run formatter
2022-05-02 12:28:55 -04:00
John Colvin 1abb41a0d5 ui: Change sec-type abbrev to be all caps 2022-05-02 12:28:55 -04:00
John Colvin 0993195f03 fix: Use CollectionViewSource to workaround wpf bug
Bugs (fixed):
   * Some dropdowns in exp params grid are empty
2022-05-02 12:28:55 -04:00
John Colvin c2a7c6f994 fix: Set result to null if conversion to nullable<T> fails
Was setting the result to default(T) before

Bugs (fixed):
   * Various exceptions stem from failed conversions to nullable types
   when the underlying type doesn't have a valid default state.  For
   example, default instances of immutable protobufs throw exceptions in
   property accessors for reference type members.
2022-05-02 12:28:55 -04:00
John Colvin 48900cf5a0 ui: Use BTSColors.input_dirty_border in exp params
This makes the 'dirty' color consistent with the rest of the system (was
using hardcoded Red before)
2022-05-02 12:28:55 -04:00
John Colvin 57fbb36808 feat: Add TimeWeightedInterpolated driver to analytics exp params 2022-05-02 12:28:55 -04:00
John Colvin 5c45384c34 refactor: Clean up AnalyticsExpirationParametersRowVM
* use new lang feats
* run formatter
2022-05-02 12:28:55 -04:00
John Colvin f9aa162e2a refactor: Clean up AnalyticsExpirationParametersVM
* use new lang feats
* run formatter
2022-05-02 12:28:55 -04:00
John Colvin 013d17c386 refactor: Enable nullable in AnalyticsExpirationParametersView.xaml.cs 2022-05-02 12:28:55 -04:00
John Colvin ad250c3883 fix: Include sec-type str in ExpirationTextConverter
Bugs (fixed):
   * ExpirationTextConverter.Convert doesn't include the sec-type part
   when 'ShowType' is true
2022-05-02 12:28:55 -04:00
Taha Afzal 2c9e0012e2 Cleaning up VolSurfaceRiskCalculator vs VolSurfaceSlideCalculator 2022-04-29 12:57:35 -04:00
Taha Afzal 2516f23e37 TC2 gets its list of symbols form the settings the rightway now 2022-04-29 12:43:34 -04:00
Taha Afzal d3a7bd48c2 Account setting in Slide is being respected now 2022-04-28 18:37:07 -04:00
Taha Afzal 4aeb7490e3 Slide calculates now if the caculation mode is set for Live Theo or Position update 2022-04-28 17:11:03 -04:00
Taha Afzal 265beef715 Slide is working (showing data, not verified the data though 2022-04-27 19:34:13 -04:00
Taha Afzal a58bf83a9a Added Combo computing code (temporarily brought old VoLSurfaceRiskCalculator back 2022-04-25 17:56:24 -04:00
John Colvin 9da1a4a2de fix: Remove CharSet.Unicode' from 'Logger_log' DLLImport attr
Bugs (fixed):
   * csharp logs only include the first char of the log message

Omnisharp recommended this be specified in the attribute after upgrading to
dotnet 6.  They were wrong.
2022-04-20 12:48:37 -04:00
John Colvin 8a98e38e73 Include opts (and futs) in manual fills sec popup 2022-04-20 02:42:35 -04:00
John Colvin 3044f4a0b1 ui: Sort accounts in dropdown in slide settings dialog 2022-04-20 02:12:14 -04:00
John Colvin 5104ae1742 ui: Set ComboReportWindow.MinWidth to 500
The default width was too narrow, and caused some labels to overlap
2022-04-20 01:47:47 -04:00
John Colvin 987ec14da2 Remove redundant call to _validate in combo conf vm 2022-04-20 01:39:52 -04:00
John Colvin 24c6e0df97 fix: Refresh combo report-result prop when risk-terms-name changes 2022-04-20 01:39:21 -04:00
John Colvin 23d5d18b28 fix: Set report.Id when saving combo report
Bugs (fixed):
   * When ok/apply is clicked in combo report settings, a new report is created
   with those params, instead of modifying the existing report
2022-04-20 01:38:22 -04:00
John Colvin 0a38c241af refactor: Rename ComboVM -> ComboReportVM 2022-04-20 00:36:53 -04:00
John Colvin 5b0d79ad17 refactor: Move ObservantAsyncCommand into ns Spark.ViewModel.Commands 2022-04-19 11:42:44 -04:00
John Colvin 833187559d refactor: Move AsyncCommand to ns Spark.ViewModel.Commands 2022-04-19 11:42:44 -04:00
John Colvin 527066e4c8 refactor: Move IRaiseCanExecuteChangedCommand to ns Spark.ViewModel.Commands 2022-04-19 11:42:44 -04:00
John Colvin bad30a49bf Open options-view with security-picker
TODO: translate the SecurityCriteria into NMSheetsSettings so the
selected criteria is actually used in the window
2022-04-19 11:42:44 -04:00
John Colvin 24f40dd652 ui: Hide strikes/callput fields in contract-picker 2022-04-19 11:42:44 -04:00
John Colvin dce61183dd fix (preemptive): Unhook callbacks when contract-picker controller disposed 2022-04-19 11:42:44 -04:00
John Colvin aeb81a9e86 fix (preemptive): Init contract-picker controller when datacontext changes 2022-04-19 11:42:44 -04:00
John Colvin 81aea15988 ui: Use qty display settings in fills 2022-04-19 11:42:44 -04:00
John Colvin 3e393208ab ui: Use qty display settings in orderbook 2022-04-19 11:42:44 -04:00
John Colvin 0674accd05 Set initial qty to NaN (not 0) in ladder
This makes the initial state consistent with the state after clicking
'Clear'
2022-04-19 11:42:44 -04:00
John Colvin 0f0d8df572 fix: Set init val through display-translator in SizeCalculator
The init val was being passed to the erroneous `UserProperty<T?> _value` field,
which should have been deleted when the _display_translator was introduced.

Bugs (fixed):
   * the ladder-view's initial size field is null when
2022-04-19 11:42:44 -04:00
John Colvin 0afd06be9c feat: Support double qty input in order ticket 2022-04-19 11:42:44 -04:00
John Colvin 1539bfa8b1 feat: Support double quantity input in Ladder 2022-04-19 11:42:43 -04:00
John Colvin a2336be143 fix: Check if _settings is null in LadderGridHost._refresh_prices
Bugs (fixed):
   * NullReferenceException is thrown when the right-panel-ladder (in
   OrderBook) is opened with no selected rows
2022-04-19 11:42:43 -04:00
John Colvin 7d65befc7e refactor: Overload detect_property_changes w/ eq comp params 2022-04-19 11:42:43 -04:00
John Colvin 916b28bc16 refactor: Clean up LadderVMContainer 2022-04-19 11:42:43 -04:00
John Colvin fb3447a6b4 refactor: Consolidate TickUpDownNullable classes into generic impl 2022-04-19 11:42:43 -04:00
John Colvin 2fa9b2e0e5 refactor: Rename TickUp/DownParameter TickUp/DownCommandParameter 2022-04-19 11:42:43 -04:00
John Colvin a66d3fb28a refactor: Return bool indicating whether object was disposed 2022-04-19 11:42:43 -04:00
John Colvin 6be017d35b fix: Make new instances of arrow icons instead of sharing
Bugs (fixed):
   * 'Freezable cannot be frozen' exception thrown when opening
   multiple windows (on diff threads) that use the same arrow icons
2022-04-19 11:42:43 -04:00
John Colvin ef24e5164f refactor: Change uint qty members to doubles 2022-04-19 11:42:43 -04:00
John Colvin a7f36b2361 refactor: Support generic numerics in tick-utils 2022-04-19 11:42:43 -04:00
John Colvin 3d404002a0 refactor: Make QuantityConversionData generic for numeric T 2022-04-19 11:42:43 -04:00
John Colvin 1922a1b49c refactor: Make MathUtils/NumericExtensions generic 2022-04-19 11:42:43 -04:00
John Colvin ca4ec7025c Add price/quantity display config to SecurityMD 2022-04-19 11:42:43 -04:00
John Colvin 7dcfa709d5 Add SecurityMetadata (proto3) config
Immediate Purpose:
   * Add security-based config for 'unit-quantity'
2022-04-19 11:42:43 -04:00
John Colvin aa254142e8 Add client-side support for proto3 config 2022-04-19 11:42:42 -04:00
John Colvin b00b12bed2 refactor: Clean up MDSource/Daemon and deps 2022-04-19 11:42:42 -04:00
John Colvin dd7168a687 Add SecurityMetadata pbuf to client build 2022-04-19 11:42:42 -04:00
John Colvin 97b665733a Add SecurityCriteria pbuf type to client build 2022-04-19 11:42:42 -04:00
John Colvin 4a6d3e3042 Add bts/api/domain to proto search path for config 2022-04-19 11:42:42 -04:00
John Colvin f65cf43e21 refactor: Rename bts.api.domain.SecurityType.INDEX -> SPOT 2022-04-19 11:42:42 -04:00
John Colvin f971d4db51 Add SYNTHETIC to bts.api.domain.SecurityType 2022-04-19 11:42:42 -04:00
John Colvin 8cd79c0372 Add BTS and SIM to bts.api.domain.Venue 2022-04-19 11:42:42 -04:00
John Colvin 9bc346e84a refactor: Clean up SecurityCriteria
* move SecurityCriteriaClause into own file
* convert fields to props
* sort members
* use new lang feats
* run formatters
2022-04-19 11:42:42 -04:00
John Colvin 88d2e1756f refactor: Rename config.cs -> Configuration.cs 2022-04-19 11:42:42 -04:00
John Colvin dc09c45330 refactor: Clean up config.cs
* use new lang feats
* specify CharSet.Unicode in DLLImports (avoids warning ca2101)
* sort members
* run formatter
2022-04-19 11:42:42 -04:00
John Colvin 47e5b57789 style: Clean up SecurityMD
* sort members
* use new lang feats
* run formatter
2022-04-19 11:42:42 -04:00
John Colvin c1ad8ed4b2 style: Clean up AnalyticsService.proto 2022-04-19 11:42:42 -04:00
John Colvin 3589b5c9a8 build: Upgrade MEF pkgs in spark proj
Also remove unneccessary pkg 'Microsoft.Extensions.DependencyInjection'
2022-04-19 11:42:42 -04:00
John Colvin fbaf15ad34 fix: Export shared inst for IWindowManager/Interop
Bugs (fixed):
   * 2 WindowManager instances are created on startup!  This causes many
   problems (for ex, 'IShellWindow.thread_init' is called twice for each
   shell window)
2022-04-19 11:42:42 -04:00
John Colvin ee1d02991c feat: Port combo report over from edge 2022-04-19 11:42:42 -04:00
John Colvin 2450cb028e Fix BTSOxyGraph background binding 2022-04-19 11:42:42 -04:00
John Colvin ec1182f059 Impl IEquatable in SparkTag
This is a pre-emptive fix.  Without it, we are susceptible to potential hash
collision bugs in the bus
2022-04-19 11:42:41 -04:00
John Colvin 7797d8255f fix: Avoid duplicate entries in cpp list 2022-04-19 11:42:41 -04:00
John Colvin a4780ecac7 refactor: Make 'within_range' param order consistent 2022-04-19 11:42:41 -04:00
John Colvin 32643990ee refactor: Use generic math in MathUtils/NumericExtensions 2022-04-19 11:42:41 -04:00
John Colvin 5746e6267a Check equality in BoundColumn prop setters
Only call 'RaisePropertyChanged' when value actually changes
2022-04-19 11:42:41 -04:00
John Colvin 501ec81405 build: EnablePreviewFeatures for cs build
Namely, to enable generic math to allow for generic use of numeric
binary operators
2022-04-19 11:42:41 -04:00
John Colvin 714f4fe995 refactor: Drop 'Single' in SingleComboReportCalculator 2022-04-19 11:42:41 -04:00
John Colvin ead71a5618 style: Move ComboFuture/StrikeData into own files 2022-04-19 11:42:41 -04:00
John Colvin eaf6e4ba28 refactor: Clean up VolSurfaceUtilityFunctions
* use new lang feats
* remove redundant ported functionality (refactor w/ impls in spark)
* run formatter
2022-04-19 11:42:41 -04:00
John Colvin bef2c9310e Add 'Fill' list ext fn 2022-04-19 11:42:41 -04:00
John Colvin 7b3e0d4a59 refactor: Clean up SecurityTuple/Expiration/Strike
* use new lang feats
* sort members
* run formatter
2022-04-19 11:42:41 -04:00
John Colvin ea0705e7e4 fix: Avoid dupl keys when stripping exch from SecurityExpiration 2022-04-19 11:42:41 -04:00
John Colvin 7b9310f595 refactor: Repl IDict w/ IReadOnlyDicts in vs risk calc 2022-04-19 11:42:41 -04:00
John Colvin a31f775de8 refactor: Simplify change_vol_dervs_to_percentages 2022-04-19 11:42:41 -04:00
John Colvin f061630789 refactor: Clean up VolSurfaceRiskCalculator
* Use new lang feats
2022-04-19 11:42:41 -04:00
John Colvin 5d442125b0 refactor: Use switch case for is_delta_greek impl 2022-04-19 11:42:41 -04:00
John Colvin e600f444f8 refactor: Clean up Slide/VolSurfaceRisk calcs
* Gather related 'out params' into new SecurityPositionData struct
* Break up long compute_and_fire fn in SlideReportCalculator into several fns
* Use new log_op fn to eliminate messy timer code sections
* Run formatter
2022-04-19 11:42:41 -04:00
John Colvin a8ae4d6655 Add create, append, to_comparer fns for ComparerBuilder 2022-04-19 11:42:41 -04:00
John Colvin a885fa7065 Add LoggerExtensions to record (time) ops 2022-04-19 11:42:41 -04:00
John Colvin 65665dc384 Add HierarchicalDictionary
A useful abstraction for nested dictionaries
2022-04-19 11:42:40 -04:00
John Colvin a8992edf88 fix: Check report type when converting to Report pbuf 2022-04-19 11:42:40 -04:00
John Colvin 1b7dd28c2f fix: Use key/value comparer args when creating SetMap
This is a pre-emptive fix, as this fn isn't currently referenced
2022-04-19 11:42:40 -04:00
John Colvin ae692432a2 fix: Use sec type arg when converting vsexp to securityexp
Bugs (fixed):
   * duplicate items in slide report expirations dropdown

In code recently ported from edge, the security type was [assumed to be]
implied by the symbol's capitalization: futures begin with upper-case letters,
while options begin with lower-case.  This assumption has become unreliable (at
deribit, both futures and options are all upper-case).
2022-04-19 11:42:40 -04:00
John Colvin c779b31a90 refactor: Clean up [csharp] co2 classes
* Move all [non-nested] classes/structs into own files
* Sort members
* Fix naming convention violations
* Use new lang feats
* Run formatter
2022-04-19 11:42:40 -04:00
John Colvin cb4bf8f5f4 Remove unused class TimeAndSalesModel 2022-04-19 11:42:40 -04:00
John Colvin 96cd807720 Add fake slide report data 2022-04-19 11:42:40 -04:00
John Colvin 07c3150d2a refactor: Change abstract TradeLogRow class to interface 2022-04-19 11:42:40 -04:00
John Colvin c66a405e6d refactor: Enable nullable (lang feat) on some Slide files 2022-04-19 11:42:40 -04:00
John Colvin 0558381bcb Add DataTemplates ResourceDictionary to TimeFilterControl
So callers aren't required to include it themselves
2022-04-19 11:42:40 -04:00
John Colvin 1db47684b7 refactor: Remove redundant ImmutableWrapper for list 2022-04-19 11:42:40 -04:00
John Colvin e16abd2e8b Check AdornerLayer not null when adding drag adorner
Bugs (fixed):
   * Opening slide report settings dialog causes crash
2022-04-19 11:42:40 -04:00
John Colvin f7adc84f0e feat: Port slide report over from edge 2022-04-19 11:42:40 -04:00
John Colvin 3acd51b247 refactor: Replace non pbuf ReportParameters with pbuf Report 2022-04-19 11:42:40 -04:00
John Colvin 6caab9c017 refactor: Make tags create/activate reports type-agnostic 2022-04-19 11:42:40 -04:00
John Colvin 97c61d2a4f refactor: Rename SingleSlideReportCalculator SlideReportCalculator 2022-04-19 11:42:40 -04:00
John Colvin 4f6a0061fe refactor: Clean up ObservableDemuxer
* Move to spark_core
* Split classes into sep files
* Use new lang feats
* Run formatter
2022-04-19 11:42:40 -04:00
John Colvin 5b201069e8 Add Bootstrap ext fn for IObservables 2022-04-19 11:42:39 -04:00
John Colvin 8b5d79847f Add 'Select' ext fns for Update/TableUpdate 2022-04-19 11:42:39 -04:00
John Colvin 2d112a86af refactor: Remove LegacyTableUpdate (repl w/ TableUpdate) 2022-04-19 11:42:39 -04:00
John Colvin 8806a62af7 refactor: Clean up ReflectionHelper/ObjectSnapshot
* Consolidate as much code as possible in ReflectionHelper (spark_core)
* Sort members
* Run formatter
2022-04-19 11:42:39 -04:00
John Colvin 01748ee847 Remove ExpirationTemplate from DataTemplates.xaml
It isn't general purpose enough to justify its presence in this global
resource file
2022-04-19 11:42:39 -04:00
John Colvin 6f1fb24a31 refactor: Move ExpTextConverter into own file
Also rename it "ExpirationTextConverter"
2022-04-19 11:42:39 -04:00
John Colvin c30459115e Post accounts-map on the bus 2022-04-19 11:42:39 -04:00
John Colvin 7cdfcbf6dc Support changes to icon in SparkMenuItem 2022-04-19 11:42:39 -04:00
John Colvin acf140e670 Add ObservableValue to spark_core 2022-04-19 11:42:39 -04:00
John Colvin df4a18e887 refactor: Clean up ComparerBuilder
* Implement IList<IComparer<T>>
* Use new lang feats
* Run formatter
2022-04-19 11:42:39 -04:00
John Colvin dc3836065a refactor: Move pbuf clone exception handling into 'try_clone' 2022-04-19 11:42:39 -04:00
John Colvin 3df7ab194c refactor: Clean up ProtobufSerializationHelper
* Use new lang feats
* Rename clone_protobuf -> clone
* Run formatter
2022-04-19 11:42:39 -04:00
John Colvin c0af8460a2 refactor: Move ProtobufSerializationHelper into spark_core 2022-04-19 11:42:39 -04:00
John Colvin 85d94a84a8 Add Chevron icons (right and down) 2022-04-19 11:42:39 -04:00
John Colvin 6ad6a361f9 Execute async command in try/catch
Purpose: treat both completed and canceled tasks as "finished."

Previously, the AsyncCommand waited endlessly for "canceled" tasks to finish.
As a result, if the command disallowed concurrent execution, the 'CanExecute'
flag would never be flipped back to true, and any buttons associated with that
command would be permanently disabled.
2022-04-19 11:42:39 -04:00
John Colvin 2a5dcab60f refactor: Move UserSymbol into own file 2022-04-19 11:42:39 -04:00
John Colvin 02b97d594f Add ReportExtensions 2022-04-19 11:42:38 -04:00
John Colvin 5e1cac251b fix: Actually copy untracked files in git-save.py 2022-04-19 11:42:38 -04:00
John Colvin 3639638bf2 refactor: Clean up AnalyticsShellModule a bit 2022-04-19 11:42:38 -04:00
John Colvin e255e054d4 refactor: Split analytics module/viewmodel into sep classes 2022-04-19 11:42:38 -04:00
John Colvin 8c9d8e7089 refactor: Move Commands dir into ViewModel 2022-04-19 11:42:38 -04:00
John Colvin f0e069d348 Add IProtobuf 2022-04-19 11:42:38 -04:00
John Colvin 4f32c8469e refactor: Clean up DateFormatter
* move DateFormat enum into sep file
* sort members
* use new lang feats
* run formatter
2022-04-19 11:42:38 -04:00
John Colvin b2679ecb60 Clean up old (recently ported) slide/report code 2022-04-19 11:42:38 -04:00
John Colvin e0537267a2 Add max_name_length field to EnumDescriptor 2022-04-19 11:42:38 -04:00
John Colvin 3440afd0d6 refactor: Split log-related classes into sep files 2022-04-19 11:42:38 -04:00
John Colvin cab65a0aaf refactor: Clean up TimeFilterVM
* Move ITimeFilterVM into separate file
* Use new lang feats
* Sort members
* Run formatter
2022-04-19 11:42:38 -04:00
John Colvin 910908b43e Add some handy Array utils 2022-04-19 11:42:38 -04:00
John Colvin cf1c1e6df1 refactor: Clean up ArrayUtils 2022-04-19 11:42:38 -04:00
John Colvin ff9b4f5b2f build: Upgrade dotnet core 5.0 -> 6.0 2022-04-19 11:42:38 -04:00
John Colvin 01899428e3 ui: Bind alignment props in ComboCheckBox template 2022-04-19 11:42:37 -04:00
John Colvin ff75ade140 fix build (client): Change 'uint' -> 'uint32_t'
Apparently the includes don't define 'uint' on windows
2022-04-19 11:34:28 -04:00
taha afzal 25d5f36645 Exchange positions are periodically published by OrderServices 2022-04-19 10:33:45 -04:00
Taha Afzal 5c5f042cac Logging in the Bus and threadedBlackboard classes adjusted 2022-04-18 13:16:16 -04:00
Taha Afzal 7da0b32838 SpreadSpec changes are handled rightaway (instead of being put on a timer) 2022-04-18 13:16:16 -04:00
Taha Afzal 389896be07 Retiring some SpreadBox superflous settings 2022-04-18 13:16:16 -04:00
Taha Afzal f55323afca SpreadBox settings cleaned up (partially) 2022-04-18 13:16:16 -04:00
Taha Afzal 0d5313d263 SpreadCalculationSynchronizer checks SpreadValue changes before posting them to the bus 2022-04-18 13:16:16 -04:00
Taha Afzal bc676b9731 Cleaning up the SpreadBox calculation code 2022-04-18 13:16:16 -04:00
Taha Afzal 0313a90196 Cleaned up SpreadManager 2022-04-18 13:16:16 -04:00
Taha Afzal fca1c62a55 Filtering expired contracts in the UI 2022-04-18 13:16:16 -04:00
Taha Afzal 2dcb0d6177 Fixed PriceControlGUI so that the price coule br overriden (locked) based on the consturctor arguments. For TC2 it does notallow overrides whereas for SpreadBoxes it does 2022-04-18 13:16:16 -04:00
Taha Afzal e2eea4bca7 Deleting unused SpreadBox spread types 2022-04-18 13:16:15 -04:00
Taha Afzal 9218184ef1 SpeadBox theo default formatting set to 4 dec places 2022-04-18 13:16:15 -04:00
Taha Afzal a9ec9e87be SpreadBox added 2022-04-18 13:16:15 -04:00
taha afzal f650ff3ccf Modfified IEMOrderMux interface 2022-04-16 20:38:02 -04:00
taha afzal b2640d2203 Updading interface for Emumba 2.2.5 2022-04-16 00:54:03 -04:00
taha afzal c3b05d27f1 EMNativeOrders clean up (this is partially done, reporting and limiter reporting needs cleaning up) 2022-04-15 01:22:51 -04:00
taha afzal 9b3a706328 Cleaned up EMExecutionGateway 2022-04-13 17:16:03 -04:00
taha afzal 290392553e EMNativeOrder does not mark all recovered orders as errors 2022-04-13 17:16:03 -04:00
taha afzal 07838553a6 Added Exchange Positions stream to OrderService 2022-04-13 17:16:03 -04:00
taha afzal 824ce8b172 ExchangePosition routed all the way to OrderServer 2 2022-04-13 17:16:03 -04:00
taha afzal 6ecccdee7f Routing ExchangePosition to OrderServiceServer 2022-04-13 17:16:03 -04:00
taha afzal 96d58942d0 Added all open orders query to IEMOrderMuxer 2022-04-13 17:16:03 -04:00
taha afzal 9c33405383 Added position enquiry function to (and asycn callback) to IEMOrderMuxer 2022-04-13 17:16:03 -04:00
taha afzal a8a5fc3672 Stopgap fix for order final state not being reached, by piggybacking on the trades callback 2022-04-13 17:16:03 -04:00
taha afzal 0178716b01 Orders API now supports fractional quantites 2022-04-13 17:16:03 -04:00
John Colvin 9c6327160d fix: Set response-success to true in delete report
Bugs (fixed):
   * When a report is successfully deleted, the response from the server
   indicates failure
2022-04-08 12:37:58 -04:00
Taha Afzal 5975e1bfb1 Adding algo dropdown to the ladder for options 2022-03-31 14:58:13 -04:00
taha afzal 5a0c70c301 Removing some unused protos 2022-03-31 14:57:40 -04:00
taha afzal b21c6f45b7 Putting Deribit securities in config 2022-03-31 14:34:29 -04:00
taha afzal 73596546bf Moving Deribit symbols from SIM to Deribit 2022-03-31 14:34:29 -04:00
taha afzal 6bf83c9e72 Removing the temporary file based order entry mechanism in EmMDListener 2022-03-31 14:34:29 -04:00
taha afzal 9385176bb5 Cleaning up IEMOrderMuxer 2022-03-31 14:34:29 -04:00
taha afzal 64240c5f3b Deribit orders (mostly) work 2022-03-31 14:34:29 -04:00
taha afzal 32c4d05106 NativeOrder and ExecutionGateway for EM via Deribit 2022-03-31 14:34:29 -04:00
taha afzal 65afb81f33 Added an order interactor that can read fro the file and secd/update/cancel orders 2022-03-31 14:34:29 -04:00
John Colvin 21a4673a1f Fix typos in ReportParams pbuf 2022-03-21 13:11:59 -04:00
Taha Afzal 03c13e37db Time calculation now considers time of expiration, however the time to expire is hard coded for Deribit options 2022-03-06 21:23:45 -05:00
taha afzal e8dfbe1d01 AnalyticsServiceServer's archive vol request now respects the symbol in the arguments 2022-03-04 19:01:51 -05:00
Taha Afzal cd576793f7 Straddle is normalized for the fwd 2022-03-03 22:36:24 -05:00
Taha Afzal 736cb21e4d Changed the tag/data to request archived vols 2022-03-03 16:25:05 -05:00
Taha Afzal d32efe90b9 Changed the ArchivedVol Request type to match the service call type 2022-03-03 16:25:05 -05:00
Taha Afzal f873675628 VolSurfaceUsage and Sheet launch hard coded value changes for ETH 2022-03-03 16:25:05 -05:00
Taha Afzal 65cb5e434b VolSurface Usage cleaning up 2022-03-03 16:25:05 -05:00
Taha Afzal 272fd35699 Archived vols now contains the SecTups that are part of the vols 2022-03-03 16:25:05 -05:00
Taha Afzal 838546b497 Saving vols with vol change and showing vol change in sheets 2022-03-03 16:25:05 -05:00
Taha Afzal a17fcb50c4 Adding call to save theos 2022-03-03 16:25:04 -05:00
John Colvin 70def3ce72 Multiply delta and vol by 100 in time/sales ui 2022-03-03 15:24:26 -06:00
John Colvin 627d307781 Split time/sales 'Edge' col into Buy/Sell Edge cols 2022-03-03 15:24:21 -06:00
John Colvin b96cdafc71 fix: Divide theo & delta by driver to normalize them
Bugs (fixed):
   * Theo and delta are wrong in time/sales
2022-03-03 11:39:40 -05:00
John Colvin f9f6fa6233 fix: Prevent time/sales vertical scrollbar clipping 2022-03-02 23:27:01 -05:00
John Colvin d8dd9ce4a2 Skip hidden cols when computing time/sales win width 2022-03-02 23:27:01 -05:00
John Colvin 07a349e0d2 refactor: Clean up TimeAndSalesWindow/Factory 2022-03-02 23:27:01 -05:00
John Colvin 65e23373cd Init grid settings in TimeAndSales default settings 2022-03-02 23:27:00 -05:00
John Colvin 6698188e00 Allow null 'can execute' delegate in SparkCommand.create 2022-03-02 23:27:00 -05:00
John Colvin 0242d964b2 feat: Add greeks to Time/Sales 2022-03-02 23:27:00 -05:00
John Colvin c1d2fc6ead Add IReadOnlyList wrapper impl for IList
Useful for lazily preserving the Count/indexer features when converting
IList to IReadOnlyList
2022-03-02 23:17:43 -05:00
John Colvin 74bb094582 Filter out empty updates in trades IObservable 2022-03-02 23:17:43 -05:00
John Colvin 9e14595458 Add fn to merge IObservable trades with greeks
Also clean up up TradesSource a bit
2022-03-02 23:17:43 -05:00
John Colvin fdb90a689a refactor: Clean up TimeAndSalesSettings
* Use new lang feats
* Run formatter
2022-03-02 23:17:43 -05:00
John Colvin a1b3fbf3e9 refactor: Clean up TimeAndSalesVM
* Use new lang feat feats
* Run formatter
2022-03-02 23:17:43 -05:00
John Colvin fccaa23d1f refactor: Rename TimeAndSalesView.Columns -> TimeAndSalesColumnType 2022-03-02 23:17:43 -05:00
John Colvin df789fed2e refactor: Don't copy trade_key in TimeAndSalesRowVM 2022-03-02 23:17:43 -05:00
taha afzal c254b982a2 Removing the hardcoded BTC 2022-03-02 18:38:36 -05:00
taha afzal 78adea7bcb Added SecTup to VolSurfaceUsage 2022-03-02 13:59:45 -05:00
John Colvin 5085874b86 fix: Invalidate DIYGrid row view in Loaded callback
Bugs (fixed):
   * Some grids are showing blank rows (esp Time/Sales, mview)
2022-03-01 16:58:05 -05:00
John Colvin 8631b85e42 style: Add documentation to ConnectableObservableSelector 2022-03-01 16:58:05 -05:00
taha afzal f9449f5fa6 Implemented get_archived_theos in AnalyticsServiceServer 2022-02-28 19:29:55 -05:00
taha afzal 0cef0ce4e5 Merge branch 'spark_crypto' of bitbucket.org:bluetradesys/spark into spark_crypto 2022-02-28 14:36:43 -05:00
taha afzal bac62f99ea in AnalyticsService ArchiveTheo now has the key istead of the Security 2022-02-28 14:36:27 -05:00
John Colvin 017a788933 refactor: Clean up Ladder
* Create an official LadderWindow class (previously, ladder windows were
  instantiated as `AnonymousShellWindow`s in a terse, hard-to-read creation fn)
* Run formatter
2022-02-28 14:29:12 -05:00
John Colvin 224b518a60 fix: Set width/height for new shell windows
Bugs (fixed):
   * The ladders open tiny like the tiny balls (in vs graph)
2022-02-28 14:29:12 -05:00
John Colvin f98f6380c4 Add ThreadSafeEvent and SpinLockExtensions 2022-02-28 14:29:12 -05:00
John Colvin 9a8b156443 Add observe_title fn to ShellWindowBase
This impl handles some tricky threading issues
2022-02-28 14:29:12 -05:00
John Colvin a269b8efe1 Fix duplicate protomember ids in UserSettings 2022-02-28 14:29:12 -05:00
John Colvin b609a290db Add nifty IObservable KeyResolver util 2022-02-28 14:29:12 -05:00
John Colvin ccdc033c60 build (client): Activate py venv before generating cpp protos
Finally, the client can be built from a shell outside of the venv
2022-02-28 14:21:31 -05:00
John Colvin ed864cae5d style: Format cmake files 2022-02-28 14:21:31 -05:00
John Colvin 1dec925c73 Fix typo in 'ticks-per-row' rounding logic for ladder 2022-02-28 14:21:31 -05:00
John Colvin 9c5856f247 Link against 'fmtd' if building debug 2022-02-28 14:21:31 -05:00
John Colvin 024572c35c Update externals to get openssl and fmt release lib fixes 2022-02-28 14:21:30 -05:00
John Colvin 4e6ae49f26 style: Remove old/useless comments in spark_sdk.csproj 2022-02-28 14:21:30 -05:00
John Colvin 1aa57a2f6f Fix typo net471 -> net5.0 in spark_sdk.csproj 2022-02-28 14:21:30 -05:00
John Colvin 33e2f4b6ff build: Use appropriate debugtype arg for debug/release 2022-02-28 14:21:30 -05:00
taha afzal 44603c0b4c Merge branch 'spark_crypto' of bitbucket.org:bluetradesys/spark into spark_crypto 2022-02-28 13:30:09 -05:00
taha afzal f9c79d5b44 Added vol/theo archiving to AnalyticsService 2022-02-28 13:29:57 -05:00
Taha Afzal 771258eeb7 Merge branch 'spark_crypto' of bitbucket.org:bluetradesys/spark into spark_crypto 2022-02-28 09:05:21 -05:00
Taha Afzal d37e82d200 Exp Params' old exps are deleted at save time 2022-02-28 09:05:10 -05:00
taha afzal fb2fd21417 Merge branch 'spark_crypto' of bitbucket.org:bluetradesys/spark into spark_crypto 2022-02-26 23:06:19 -05:00
taha afzal 98362c7eb9 Fixing the deribit connection drop issue 2022-02-26 23:05:47 -05:00
Taha Afzal 128bc3c391 Fixing the crash with expired drivers 2022-02-24 15:36:23 -05:00
John Colvin c294406934 dev/john: Update/format docker scripts 2022-02-23 15:07:50 -06:00
John Colvin 3825ce80eb dev/john: Update repo path in johns docker 2022-02-23 15:05:12 -06:00
John Colvin 01d6731929 dev/john: Cleanup (and fix) setup_builds.fish 2022-02-23 15:05:12 -06:00
John Colvin dff088fe37 Fix typo in include directive
Must have missed this in the protobuf-cleanup commit,
884a79e13a
2022-02-23 15:05:12 -06:00
Taha Afzal 2c4a203109 Bug with saving exp params 2022-02-21 23:59:02 -05:00
John Colvin c1b717d8de refactor: Split ScatterSeries color into 'fill' and stroke'
Previously, 'color' was simply an alias for 'fill.'  The new stroke property
provides some useful functionality, as it:
   * can can be used to set the marker shape's outline color
   * makes it possible to use 3 marker shapes that were thought to be broken
     (Cross, Plus, and Star). These shapes were never actually broken, they
     were merely invisible because they were colored [only] with the stroke
     property
2022-02-21 14:46:16 -05:00
John Colvin 5fb5a67210 style (ui): Make implied vol balls bigger 2022-02-21 14:24:46 -05:00
John Colvin 72ca24de18 refactor: Remove unused ctr from ScatterSeriesSettings 2022-02-21 13:46:10 -05:00
John Colvin dbb3cfc7cc refactor: Post exp params to bus in an ImmutableList
Previously, they were posted in an IEnumerable and thus created lazily.
which seemed ill-advised as the bus is multithreaded
2022-02-21 13:17:45 -05:00
John Colvin 2229abdc36 fix: Set vs window title to vs name in main win
Was only doing this in the 'dummy' window before
2022-02-21 12:58:25 -05:00
John Colvin 552836eafc style (ui): Add some padding around cells in vs grid 2022-02-21 12:00:56 -05:00
John Colvin 17af19661c fix: Never insert duplicate columns in vs grid
Bugs (fixed):
   * Volsurface window crashes sometimes when columns are changing
2022-02-21 12:00:56 -05:00
Taha Afzal 6bd2d9cd90 Fixing the build 2022-02-21 11:24:59 -05:00
Taha Afzal d5c3c64a18 Merge branch 'spark_crypto' of bitbucket.org:bluetradesys/spark into spark_crypto 2022-02-21 11:11:18 -05:00
Taha Afzal f27fa7de8e Merge branch 'spark_crypto' of bitbucket.org:bluetradesys/spark into spark_crypto 2022-02-21 11:10:32 -05:00
Taha Afzal f568691731 Adding report API to analytics server 2022-02-21 11:10:15 -05:00
John Colvin 7506576138 fix: Constrain order ticket header width
Bugs (fixed):
   * Order ticket is not showing the X to dismiss the window
2022-02-21 00:01:07 -05:00
John Colvin 60fa83273c feat (ui): Add graph lines in vs window 2022-02-20 23:12:35 -05:00
John Colvin 0f6ee88075 fix: Load/save all settings props in [vs] AxisVM
Bugs (fixed):
   * When the vs window is restored (with a workspace):
      * Both axes lack titles
      * Values aren't formatted as percentages in y axis
2022-02-20 22:56:36 -05:00
John Colvin 99b1241fdb ui: Add row padding in vs grid 2022-02-20 22:01:24 -05:00
John Colvin 6ffc3d4cad fix: Maintain vs grid row sorting when selected exps change 2022-02-20 22:01:24 -05:00
John Colvin 4b2eda6a24 Add ObservableSortedCollection 'bind' ext fn 2022-02-20 22:01:24 -05:00
John Colvin 1a72533934 diag: Add Trace fn for ToggleButton 2022-02-20 22:01:24 -05:00
John Colvin f539a533e6 ui: Give TLC to exp params window 2022-02-20 22:01:24 -05:00
John Colvin 1e693af08f Add some Tuple ext fns for convenience 2022-02-20 22:01:24 -05:00
John Colvin 7916417b71 Add some IObserver utils/ext fns for convenience 2022-02-20 22:01:24 -05:00
John Colvin 46c38a0ff7 refactor: Clean up CompositeObserver
* Implement IList<IObserver<T>>
* Add static 'create' fns to support template type inference
* Sort members
* Run formatter
2022-02-20 22:01:23 -05:00
John Colvin 9d8f65adc0 Fix typo in ObservableAutoWrapper.connect overload
Previously, it wasn't passing the on_removed param to the other overload
2022-02-20 22:01:23 -05:00
John Colvin 1618784c0f refactor: Remove unused UISettings.proto 2022-02-20 22:01:23 -05:00
John Colvin 6b0f87bd31 ui: Host HeaderContent in ToggleButton in ComboCheckBox
Bugs (fixed):
   * HeaderContent in ComboCheckBox overlaps expander arrow
2022-02-20 22:01:23 -05:00
John Colvin e754ce0ec4 refactor: Begin renaming DelegateCommand to Command
This renaming makes ICommand creation less terse.  For now, leave
DelegateCommand in place, as its references are ubiquitous

TODO: Replace all remaining references to DelegateCommand w/ Command
2022-02-20 22:01:23 -05:00
Taha Afzal 38caa7f892 PNL calculator pushed in 2022-02-17 20:54:15 -05:00
Taha Afzal dd1d9b5df8 Adding slide calculator 2022-02-17 18:41:09 -05:00
Taha Afzal cb8a23c73f Adding combo report classes (1) 2022-02-17 17:38:12 -05:00
Taha Afzal 41a072d4d2 Started importing Risk 2022-02-16 23:32:21 -05:00
Taha Afzal 0905ea8c26 Removing the log in the VolSurfaceMDUnit which wa sporving to be very expensive 2022-02-16 19:41:49 -05:00
Taha Afzal a0ca0e5fd0 Removing more unused TC2 code 2022-02-16 15:48:07 -05:00
Taha Afzal e00015dccf Removing unused TC2 classes 2022-02-16 15:32:34 -05:00
Taha Afzal 865a12213c Theos can optionally be displayed as normalized by fwd 2022-02-16 15:20:42 -05:00
Taha Afzal b779014c13 Order ticket launch, setting for fwd normalized theos (both TC2) 2022-02-16 14:49:50 -05:00
Taha Afzal 4c04a78c79 cleaning unused code in TC2 2022-02-15 21:17:30 -05:00
Taha Afzal 32b769bdaa TC2 settings can now be restored 2022-02-15 18:20:54 -05:00
Taha Afzal 4c507aae4e Merge branch 'spark_crypto' of bitbucket.org:bluetradesys/spark into spark_crypto 2022-02-15 13:03:58 -05:00
John Colvin 8a17adb49d refactor: Overload OnDispatcher w/ Dispatcher param
By default, this param is assigned Dispatcher.CurrentDispatcher. This follows
the overload pattern in SubscribeOnDispatcher
2022-02-15 12:58:52 -05:00
John Colvin 09aeef03a6 fix: Use calling thread's Dispatcher in SubscribeOnDispatcher 2022-02-15 12:56:58 -05:00
John Colvin e020cca9d2 fix: Don't await dispatcher op in OnDispatcher notify impl
Bugs (fixed):
   * Crash on shutdown if OptionsView window is open, due to an unhandled
     TaskAborted exception in the OnDispatcher ext fn
2022-02-15 12:56:57 -05:00
Taha Afzal f86ba4f8fd Removed the expired exps from the sheets 2022-02-15 00:16:24 -05:00
Taha Afzal d6e724a47a Interp'd drivers are now showing in TC2 2022-02-14 23:45:35 -05:00
Taha Afzal a64a794a97 Hiding driver freeze and headers at the top 2022-02-14 20:31:35 -05:00
Taha Afzal 9d5202c49c Default columns visibility is better now 2022-02-14 18:30:02 -05:00
Taha Afzal cea0591a77 Settings were not taking affect when they were being set, Theo Acceptance button hidden 2022-02-14 18:18:19 -05:00
John Colvin 927ee4626e Set vs window title to vs name 2022-02-14 14:31:14 -05:00
John Colvin 47a0649de3 Add OptionsViewWindow (tc2) to MarketShellModule 2022-02-14 14:19:45 -05:00
John Colvin 2a50990849 refactor: Clean up SparkTags 2022-02-14 14:01:52 -05:00
John Colvin 03d89de6b9 Add ShellWindowBase class
This is in anticipation of the special winforms shell window for tc2
(eventually, SparkWindow should derive from this class as well)
2022-02-14 14:01:52 -05:00
John Colvin 884a79e13a refactor: Clean up protobuf files
* Rename files to snake_case (per Google style guide)
  https://developers.google.com/protocol-buffers/docs/style
* Prohibit single line functions in clang-format for proto files
* Run clang-format
2022-02-14 14:01:52 -05:00
John Colvin 47ce487162 refactor: Use IBus to remove vs win (not IWindowManager) 2022-02-14 14:01:51 -05:00
John Colvin 957172f282 refactor: Add 'hide_window' tag so wins can be removed via bus 2022-02-14 14:01:51 -05:00
John Colvin 8d081e0c45 refactor: Clean up shell window infrastructure classes
Cleans up: WindowManager, FloatingWindow, ShellWindowVM, a few IShellModule
implementations

* Sort members
* Use new lang feats
* Make code style more consistent with rest of code base
* Ensure FloatingWindow interactions occur on the Application Dispatcher thread
* Run formatter
2022-02-14 14:01:51 -05:00
John Colvin 991822bede refactor: Rename CheckInvokeAsync to snake_case
Also add documentation
2022-02-14 14:01:51 -05:00
John Colvin 8b7b76a337 refactor: Move vs ui files into new module dir 2022-02-14 14:01:51 -05:00
John Colvin af12d5bba1 refactor: Rename VolSurfaceModule -> AnalyticsModule 2022-02-14 14:01:51 -05:00
John Colvin c2c80271a3 ui (style): Stretch ComboCheckBox Header ContentPresenter
This gives users the ability to control header content alignment via the header
content template (previously it was always aligned Top-Left)
2022-02-14 14:01:51 -05:00
John Colvin 110faefc96 feat: Add axis-fit behavior setting for vs graph 2022-02-14 14:01:51 -05:00
John Colvin 4cf8959b13 ui: Refine vs exp header col style 2022-02-14 14:01:51 -05:00
John Colvin e3b6c9829a diag: Impl ToString for Series(Set)VM 2022-02-14 14:01:50 -05:00
John Colvin ffdd0fcff7 fix: Remove item from vis series when removed from series 2022-02-14 14:01:50 -05:00
John Colvin 527cea74d3 ui: Use Visibility.Collapsed to hide vs r/w cell content
This prevents unneccessary white space as Collapsed visuals, unlike
Hidden ones, don't occupy space
2022-02-14 14:01:50 -05:00
John Colvin 1fcd19c029 refactor: Clean up DIYGrid.HighPerformanceRow 2022-02-14 14:01:50 -05:00
John Colvin 6bf2c297d7 style: Clean up RecycleBin 2022-02-14 14:01:50 -05:00
John Colvin 2489a2ce0c Impl IReadOnlyDictionary in VisualDictionary 2022-02-14 14:01:50 -05:00
John Colvin 6d5e9eb94e style: Use switch expression in vs col view_factory 2022-02-14 14:01:50 -05:00
John Colvin 7ff2850b2d ui (style): Right-align vs grid cell content 2022-02-14 14:01:50 -05:00
John Colvin f70c2d4653 feat: Add grid lines to volsurface ui 2022-02-14 14:01:50 -05:00
John Colvin d7a91bed10 refactor: Clean up DIYGrid super headers 2022-02-14 14:01:49 -05:00
John Colvin f7178f3fa7 fix: Always Invalidate column layout on horizontal scroll
Previously, was only doing this when the [main grid] horizontal scroll
change triggered a similar scroll change in the column headers
2022-02-14 14:01:49 -05:00
John Colvin 77060841cb diag (refactor): Default all params in WPFTracer ctr 2022-02-14 14:01:49 -05:00
John Colvin 701649cb9b diag: Add trace fn for ScrollBar 2022-02-14 14:01:49 -05:00
John Colvin 3a598479fc refactor: Remove redundant event handler 2022-02-14 14:01:49 -05:00
John Colvin 4ca3f6b2f2 refactor: Move DIYGridExtensions into own file 2022-02-14 14:01:49 -05:00
John Colvin f30f0876a9 refactor: Replace DataContextHooks class w/ static fn 2022-02-14 14:01:49 -05:00
John Colvin 5c04f52be9 Don't overwrite shortheader in DIYGrid ctr 2022-02-14 14:01:49 -05:00
John Colvin 0c4cafcf87 Remove unused fns from DIYGridSortHelper 2022-02-14 14:01:49 -05:00
John Colvin d72e9ad2a6 refactor: Add id prop to DIYGridSuperHeader 2022-02-14 14:01:49 -05:00
Taha Afzal c0f7c28bda Deleting mor eunused code 2022-02-14 13:57:36 -05:00
Taha Afzal 511955c173 Removing unused TC2 classes 2022-02-14 13:50:45 -05:00
Taha Afzal 20c914492e NMSheetBBODataSource had a stub for threaded bb compatibility, removing it 2022-02-14 12:56:59 -05:00
Taha Afzal 1807e02416 Removed the Pair class from TC2 2022-02-14 12:50:43 -05:00
Taha Afzal 04b1b0ce4e Thinned up the ThreadedBB further, can one day be easily replaced by the IBus 2022-02-14 11:58:54 -05:00
Taha Afzal de2eb433b6 Unplugging the logic for a bunch of TC2 data (position, rolover vol, presaved values etc) 2022-02-13 23:53:32 -05:00
Taha Afzal cb10a5e99e Old bb and threaded bb are out from TC2 2022-02-13 23:41:43 -05:00
Taha Afzal 133034ad07 Removing 2 older methods in ThreadedBB 2022-02-13 22:00:04 -05:00
Taha Afzal 29f43464fa Removing TC2's dependence on Blackboard 2022-02-13 21:30:00 -05:00
Taha Afzal 0b7902029a Removing all untyped tags from TC2 2022-02-13 13:11:50 -05:00
Taha Afzal d514f9ed15 Getting rid of old blackboard - 1 2022-02-13 12:35:55 -05:00
Taha Afzal 5b0a056183 Removing more unused tags 2022-02-12 20:07:19 -05:00
Taha Afzal 7f3c7ed376 Cleanup continues 2022-02-12 11:14:04 -05:00
Taha Afzal 09760d29d5 Option md for TC2 fixed 2022-02-12 01:46:29 -05:00
Taha Afzal d5574ad90f Cleaning out TC2 tags 2022-02-12 00:31:50 -05:00
Taha Afzal 354984404a Cleaning up of TC2 tags 2022-02-11 17:42:12 -05:00
Taha Afzal 45b41a9ab8 Removing TC2's HighPerformanceTimer 2022-02-11 13:10:37 -05:00
Taha Afzal fddcb58555 Getting rid of the TheoPoint that got moved over with TC2 2022-02-11 12:03:44 -05:00
Taha Afzal 614552fdad Fixing a crash related to multiple representation of the same symbol in volsurface relationships 2022-02-11 09:57:33 -05:00
Taha Afzal 552b7dda0a Comments to make sense of the TC2 Sheets 2022-02-11 09:42:50 -05:00
Taha Afzal 3da7741f24 TC2 is part of Spark now - we will rule the crypto options space 2022-02-10 22:38:32 -05:00
Taha Afzal a08dd1e22d Cleaned up unused namespaces in these 2 classes 2022-02-09 18:17:03 -05:00
Taha Afzal 27399b3dbe interpolating for option expirations for whome the drivers are not set 2022-02-09 17:40:08 -05:00
Taha Afzal 4d9e7ca6e8 Merge branch 'spark_crypto' of bitbucket.org:bluetradesys/spark into spark_crypto 2022-02-08 17:35:05 -05:00
Taha Afzal 2f2abe840a Added interp type in the analytics service proto 2022-02-08 17:34:48 -05:00
Taha Afzal 3506c65895 Merge branch 'spark_crypto' of bitbucket.org:bluetradesys/spark into spark_crypto 2022-02-08 15:05:27 -05:00
Taha Afzal 5d185c51ba Using fixing price for marked price in SystemContractData 2022-02-08 15:05:04 -05:00
Taha Afzal b1e7865904 Merge branch 'spark_crypto' of bitbucket.org:bluetradesys/spark into spark_crypto 2022-02-08 14:58:30 -05:00
Taha Afzal cc3e769afe QueryServer was not copying the Fixing price over (used as a proxy for Mark price) 2022-02-08 14:58:20 -05:00
Taha Afzal d9cc74cc78 Abstracting out driver retreival from VolSurfaceMDUnit 2022-02-08 13:51:17 -05:00
Taha Afzal 887a39da1a Disabled the SingleVolSurfaceTheoSource (which showed the before after theos) 2022-02-08 12:49:17 -05:00
Taha Afzal 8b384849f5 Double comparison was not accounting for both double vales NaN's 2022-02-07 21:51:05 -05:00
Taha Afzal 1a66fcafb5 Merge branch 'spark_crypto' of bitbucket.org:bluetradesys/spark into spark_crypto 2022-02-07 21:43:48 -05:00
Taha Afzal a39fba8042 Merge branch 'spark_crypto' of bitbucket.org:bluetradesys/spark into spark_crypto 2022-02-07 21:06:00 -05:00
Taha Afzal 9f61999ce9 changing the deribit exps to listen to (until the connection drop is fixed) 2022-02-07 21:05:49 -05:00
Taha Afzal 1a0d2e59ab Throttling the driver prices for performance 2022-02-07 20:50:06 -05:00
Taha Afzal 7d66d7847f Adding perf stats log 2022-02-07 17:46:48 -05:00
Taha Afzal b4c65bdde3 Merge branch 'spark_crypto' of bitbucket.org:bluetradesys/spark into spark_crypto 2022-02-07 14:48:00 -05:00
Taha Afzal 8bd003d21e Perf logs added, plus GreekTuple initialization fixed 2022-02-07 14:47:55 -05:00
John Colvin 11bb41bbb6 Fix typo in mview row vm (delta prop was returning theo) 2022-02-07 12:28:48 -05:00
Taha Afzal ebefc65b69 Merge branch 'spark_crypto' of bitbucket.org:bluetradesys/spark into spark_crypto 2022-02-07 11:43:18 -05:00
Taha Afzal 045029bfb4 Taing logging 2022-02-07 11:43:03 -05:00
Taha Afzal f66ab59f0d Added mark price for Deribit 2022-02-06 18:49:51 -05:00
John Colvin 4c608eec0e feat: Hide vs dummy window 2022-02-06 15:09:47 -05:00
John Colvin 2d6864b191 fix: Remove vs dummy win from win manager on main thread 2022-02-06 14:49:10 -05:00
Taha Afzal 1545458c76 Adding mark prices to VOlSurfaceMDUnit 2022-02-05 19:39:11 -05:00
Taha Afzal d23a390bf6 File name change 2022-02-05 19:08:52 -05:00
John Colvin 9e34cb3d61 feat: Add Vol and Driver cols to mview 2022-02-05 14:40:30 -05:00
John Colvin 170f526617 fix: Add greeks col filters to mview settings 2022-02-05 14:40:30 -05:00
John Colvin 17e0b37882 feat: Add greek col comparers to mview 2022-02-05 14:40:30 -05:00
John Colvin cbe3c1939e refactor: Clean up mview
* Rename members with shorter names (mainly to reduce the width of various
  calls, esp those that add columns in the MarketViewVM constructor)
* Move mview settings classes into own files
* Run formatter
2022-02-05 14:40:23 -05:00
Taha Afzal 251b014604 Added vs removal code to the service + adjusted to emumba's interface change 2022-02-04 18:52:49 -05:00
John Colvin fe416e726a fix: Make mview columns implement ISortableDIYGridColumn
Bugs (fixed):
   * mview column sorting is broken
2022-02-04 17:42:04 -05:00
John Colvin 4dcf296af2 Fix re-entrancy bug in PNLWindow when cols are changing
* Log column collection change events for diagnostic purposes
* Clean up code a bit
2022-02-04 17:41:32 -05:00
John Colvin 0a8a3bf6f2 refactor: Get rid of DoubleUtil
* Consolidate functionality in MathUtils and NumericExtensions
* Define gui-related epsilons in WPFHelper and HighDpiExtensions
2022-02-04 17:41:32 -05:00
John Colvin 174a7baaf4 refactor: Move numeric-extensions into own class 2022-02-04 17:41:32 -05:00
John Colvin 0e41b88bdf refactor: Clean up MathUtils
* Fix name violations
* Make lcm and gcd fns more efficient
* Use modern language features
* Run formatter
2022-02-04 17:41:32 -05:00
John Colvin 822dc0794a fix: Don't consider infinity a real number 2022-02-04 17:41:32 -05:00
John Colvin f644a3392b feat: Hook up (repair) vs grid settings editor
The vs grid settings editor code had already been ported over, but never
actually worked
2022-02-04 17:41:32 -05:00
John Colvin 8634386862 refactor: Return bool indicating whether AddOrUpdate adds item 2022-02-04 17:41:32 -05:00
John Colvin e4a84d343a Fix typo to correct insertion-idx-bug 2022-02-04 17:41:32 -05:00
John Colvin 7b0a7f7107 refactor: Change sync_with_never_duplicate param to IList
This makes the param more flexible, and thus broadens the fn's usability
2022-02-04 17:41:32 -05:00
John Colvin 11f345f3cd fix: Use IEqualityComparer arg in sync_with_never_duplicate 2022-02-04 17:41:32 -05:00
John Colvin 17f10b2450 refactor: Make DIYGrid.Columns type IReadOnlyList
This allows viewmodels to take advantage of IReadOnlyList<out T> covariance and
use more strongly typed column elements
2022-02-04 17:41:31 -05:00
John Colvin 18e26515de refactor: Support mutations in MutableWrapper list
Previously, this class was used to alias IReadOnlyList as an IList, and
each mutation fn would throw a NotSupportedException.  Now
mutations are supported if the source list implements IList (in
addition to IReadOnlyList)
2022-02-04 17:41:31 -05:00
John Colvin ee9d68c0e7 style: Flip if condition to dedent big code block 2022-02-04 17:41:31 -05:00
John Colvin f019163b35 Add AllowNaN and NaNText props to TickUpDownDouble 2022-02-04 17:41:31 -05:00
John Colvin b86b9b474f Fix display_name binding in vs grid settings view 2022-02-04 17:41:31 -05:00
John Colvin a7372fdcf6 Add ProtoMember attrs to TickDisplaySettings props 2022-02-04 17:41:31 -05:00
John Colvin 59c5fd1256 refactor: Impl ICloneable<GridSettings> in GridSettings 2022-02-04 17:41:31 -05:00
John Colvin 8fc55951eb Fix typo in tick parse fn
The parsed result was being multiplied by the display_multiplier where it
should have been divided by it. The parse fn is the inverse of the format fn,
which multiplies by the display_multiplier
2022-02-04 17:41:31 -05:00
John Colvin 1e60c2fc78 Fix rounding error in tickup/down fns
This bug went unnoticed until now bc these particular tickup/down fns
were never called in practice.  However, their use is imminent in the
volsurface ui (namely the grid)
2022-02-04 17:41:31 -05:00
John Colvin b6256244d3 refactor: Add driver to GreeksTuple 2022-02-04 17:41:31 -05:00
John Colvin e872106c5c refactor: Make GreeksTuple.with fn params nullable
This makes it possible to replace GreeksTuple fields with NaN
(previously, NaN indicated that an arg should be ignored)
2022-02-04 17:41:31 -05:00
John Colvin fc18d58681 refactor: Default GreeksTuple args to nan in ctr 2022-02-04 17:41:31 -05:00
John Colvin 7845b3fdc1 refactor: Clean up TickExtensions 2022-02-04 17:41:31 -05:00
John Colvin 4b27bbe490 Add handy utils to TickFactors/DisplaySettings
* Add static TickFactors presets
* Add TickDisplaySettings default
* Make TickFactors implement ICloneable<TickFactors>
* Add 'with' ext fn

TODO:
   * Replace instantiations of TickDisplaySettings that rely on inlined
   default values with the TickDisplaySettings.Default prop
2022-02-04 17:41:30 -05:00
John Colvin 3cd0c4073e refactor: Clean up TickFactors
* Get rid of _equals fn that assumes non-null args
* Use modern language features
* Run formatter
2022-02-04 17:41:30 -05:00
John Colvin a7803877e9 refactor: Rename RoundFractionalUnits to snake_case 2022-02-04 17:41:30 -05:00
John Colvin 0c4010baab refactor: Rename SafeContains ext fn to snake_case 2022-02-04 17:41:30 -05:00
John Colvin c6a1b7bc0d refactor: Rename EmptyIfNull ext fn to snake_case 2022-02-04 17:41:30 -05:00
John Colvin ee74548daa refactor: Rename NullIfEmpty ext fn to snake_case 2022-02-04 17:41:30 -05:00
John Colvin e6c5afa8b2 refactor: Rename IsNullOrEmpty ext fn to snake_case 2022-02-04 17:41:30 -05:00
John Colvin 260d5ddbbe refactor: Remove unused tick utils (fns and IValueConverters) 2022-02-04 17:41:30 -05:00
John Colvin ec53038042 refactor: Move safe_equals ext fns to spark_api 2022-02-04 17:41:29 -05:00
John Colvin 3dfbc2635a build: Set CMP0076 explicitly to remove warning 2022-02-04 17:41:29 -05:00
John Colvin 293fc233f7 Add git-save script to backup changed files 2022-02-04 17:41:29 -05:00
John Colvin a99f95853a refactor: Abstract out argparse/file utils from buildspark.py 2022-02-04 17:41:29 -05:00
John Colvin a3378a188a refactor: Fix typo criterion -> criteria 2022-02-04 17:41:29 -05:00
John Colvin 7d7ccc67e0 build: Fix typo in buildspark.py
* Replace literal '2022' w/ var 'year'
2022-02-04 17:41:29 -05:00
John Colvin 1fa17d63a2 refactor: Rename MarketViewView.Columns -> MarketViewColumnType 2022-02-04 17:41:29 -05:00
Taha Afzal a743500a37 Cleaning up SingleVolSurfaceMarketImpliedVolSource 2022-02-04 15:53:25 -05:00
Taha Afzal 0a6f2d5adb Normalizing options market data form coins to USD 2022-02-04 12:39:26 -05:00
Taha Afzal 96e6c0dfb5 In anticipation of the 'mark price' cleaned up the option driver tags 2022-02-03 16:03:21 -05:00
Taha Afzal 775918468d File name change 2022-02-03 13:41:05 -05:00
Taha Afzal 05101cfcd4 Adding more points to the curve to make it look nice in the UI 2022-02-03 13:22:18 -05:00
Taha Afzal 2de48c0550 Making theos work 2022-02-02 16:11:34 -05:00
John Colvin 07004179a3 Add safe_get_value Dictionary ext fns 2022-02-02 14:17:52 -05:00
John Colvin 05401a4c98 refactor: Rename GetValueOrDefault -> get_value 2022-02-02 14:17:51 -05:00
Taha Afzal ba678777b1 Market ImpliedVols are being pubished now 2022-01-30 23:41:47 -05:00
Taha Afzal 532c461d17 Added vol to GreekTuple, and a few verbose logs(for now) 2022-01-30 01:29:51 -05:00
Taha Afzal b98e1ff9dd Name changes 2022-01-29 23:35:56 -05:00
Taha Afzal bc7ca707c9 Merge branch 'spark_crypto' of bitbucket.org:bluetradesys/spark into spark_crypto 2022-01-29 23:11:51 -05:00
Taha Afzal 292b131a4c Theos are written to the bus now 2022-01-29 23:11:43 -05:00
John Colvin e2ca78008e fix: Disable global drag/drop while adding tab to new win
Bugs (fixed):
   * The shell crashes when dropping a tab into an existing window
2022-01-27 20:34:13 -05:00
John Colvin 85757050bf fix: Don't add null symbol clause to ContractPicker.result
Bugs (fixed):
   * Windows launched w/ SecurityCriteria for 'all' symbols (i.e., when no
     symbols are selected) don't show any securities
2022-01-27 15:14:51 -05:00
Taha Afzal 8ecbfb935d Merge branch 'spark_crypto' of bitbucket.org:bluetradesys/spark into spark_crypto 2022-01-27 13:04:01 -05:00
Taha Afzal 753a56ce95 Cleaning up logs for theos 2022-01-27 13:03:52 -05:00
John Colvin 39d7ab0b76 fix: Remove bad assert statement in SparkWindow
Bugs (fixed):
   * PNL window crashes on open
2022-01-27 12:58:08 -05:00
John Colvin 95f638175d refactor: Use 'is null' in null asserts, add msg param 2022-01-27 12:57:18 -05:00
John Colvin 6c6bf492b0 fix: Show candidate output in vs grid readonly cells 2022-01-27 12:18:47 -05:00
John Colvin 2fdce0280a refactor: Clean up MarketViewRow
* Define fields of the same type in separate statements
* Insert some new lines for easier code browsing
* Replace large delegates with local fns
2022-01-27 12:18:47 -05:00
John Colvin dfa18c632e Add greeks to mview 2022-01-27 12:18:47 -05:00
Taha Afzal f8276adaa7 Fixed the save_marker in VolSurfaceInputSnapshot 2022-01-26 23:12:25 -05:00
John Colvin f184dd5743 fix: Update vs previous_states dropdown on grid change 2022-01-26 19:43:51 -05:00
John Colvin 21da6c813c Select vs grid row when cell enters edit mode 2022-01-26 19:28:11 -05:00
John Colvin 2601519e8b Only listen to drag events when IsDragSelectionEnable is true 2022-01-26 19:15:58 -05:00
John Colvin 97cce473e8 refactor: Move DIYGridRowsPresenter to its own file 2022-01-26 19:14:22 -05:00
John Colvin 227a977697 fix: Invalidate vs graph when points change 2022-01-26 18:06:47 -05:00
Taha Afzal c1a59eba47 Merge branch 'spark_crypto' of bitbucket.org:bluetradesys/spark into spark_crypto 2022-01-26 15:26:51 -05:00
Taha Afzal 1034ac8fe1 AnalyticsParametersManager now publishes a dictionary of all values, including empty ones 2022-01-26 14:35:38 -05:00
Taha Afzal 5602fc0b1b Fixing the wing detection as per John 2022-01-26 13:13:43 -05:00
John Colvin 332c32893c fix: Use IValueConverter (not vs display grid) to fmt/parse input
Bugs (fixed):
   * User input isn't multiplied by the display multiplier

This issue was that the input text was getting parsed twice before being stored
in the display grid (once by the IValueConverter, and once by the display grid
itself).  The parse fn divides by the display multiplier, while the format fn
multiplies by it.  Thus, the input was effectively divided by the display
multiplier (bc 1/dm * 1/dm * dm == 1/dm)
2022-01-26 00:40:14 -05:00
John Colvin 9ee52c0827 refactor: Remove unused/deprecated DataGridEx utils 2022-01-25 22:22:18 -05:00
Taha Afzal ad0c4b25a5 Options 'books' can optionally be built from quotes now 2022-01-25 22:15:44 -05:00
Taha Afzal 14af01182c Caching volume on statistics_change and passing it over to handl.add_trade 2022-01-25 22:15:44 -05:00
Taha Afzal ac22ed553e Fixed the TS timestamp 2022-01-25 22:15:44 -05:00
Taha Afzal 310c7fa4a3 Cleaning up 2022-01-25 22:15:44 -05:00
Taha Afzal be3daae175 Removing SIM: from Deribit security desc 2022-01-25 22:15:44 -05:00
Taha Afzal fdc4e59d09 Working around Deribit option md bugs 2022-01-25 22:15:44 -05:00
Taha Afzal 8af07756ef logs in the VolSurfaceDisplayModel 2022-01-25 18:22:50 -05:00
Taha Afzal b522b9875e Merge branch 'volsurface-ui' of bitbucket.org:bluetradesys/spark into volsurface-ui 2022-01-25 17:47:37 -05:00
Taha Afzal 8059ebfad1 Changing the hard coded test vol surface's fwd to be close to reality 2022-01-25 17:47:30 -05:00
John Colvin 5aa3de21bb fix: Notify vs display model when [candidate] cell input changes
Bugs (fixed):
   * The commit/revert buttons in vs window are always disabled
2022-01-25 17:34:01 -05:00
John Colvin 230e02014c refactor: Drop 'Simplified' from vs grid/column class names 2022-01-25 17:25:01 -05:00
John Colvin be8bc54e46 fix: Remove configserver arg when parsing CLIOptions 2022-01-25 14:14:45 -05:00
John Colvin c8d37c2dfc fix: Simplify and fix revert-cell cmd 2022-01-25 14:00:07 -05:00
John Colvin 21300a858c fix: Flip call/put wing start comparison operators 2022-01-25 12:33:51 -05:00
John Colvin c97887993f Make vs graph legend translucent 2022-01-24 19:55:34 -05:00
John Colvin 198311c7c4 feat: Add vis toggle for vs exp graph series parts 2022-01-24 19:55:34 -05:00
John Colvin 1db24a8b72 fix: Define c/p wing strike range w/ VolCurveDisplayGraph wing_start props 2022-01-24 19:49:20 -05:00
John Colvin 9ef492acdc Update PlotModel.IsVisible in vm is_visible setter 2022-01-24 19:29:27 -05:00
John Colvin f8a74bbcbd fix: Copy settings.stroke_thickness to vm member 2022-01-24 19:29:27 -05:00
John Colvin eade3d0ee3 fix: Use consistent window-type ids for saving/loading vs wins
Bugs (fixed):
   The vol surface, and exp params windows aren't restored with workspace
2022-01-24 19:29:26 -05:00
John Colvin c65c16f476 refactor: Init vs line series vms w/ LineSeriesSettings
Previously, was assigning props explicitly from the settings object
2022-01-24 14:43:40 -05:00
John Colvin 6fa7b3cb88 Add committed/candidate prefix to vs atm series title 2022-01-24 14:42:06 -05:00
Taha Afzal e5a8209127 Options 'books' can optionally be built from quotes now 2022-01-24 14:13:35 -05:00
Taha Afzal aa768fabc0 Caching volume on statistics_change and passing it over to handl.add_trade 2022-01-24 13:33:33 -05:00
John Colvin 0c94dbd32c Update externals 2022-01-24 01:01:28 -05:00
John Colvin 89df1b5836 Increase padding in vs graph legend
This makes it easier to move the legend around (via drag)
2022-01-24 01:01:28 -05:00
John Colvin c8d682c0b9 Fix analytics-exp-params window
Bugs (fixed):
   * Exp params window crash on launch
   * A few 'dirty' props don't notify view of changes

* Use AnalyticsExpirationParametersWindowFactory to create/restore win
* Rename AnalyticsExpirationParametersVM.StartupData ->
  AnalayticsExpirationParametersSettings
* Simplify 'dirty' prop-changed notification logic
2022-01-24 00:58:37 -05:00
Taha Afzal 088c5bc0b9 Fixed the TS timestamp 2022-01-23 21:48:50 -05:00
John Colvin 6cbe93a9bb Replace Any CPU w/ x64 in spark_client.sln 2022-01-23 16:15:11 -05:00
John Colvin 1d6e90a429 Fix typo in editorconfig 2022-01-23 16:15:11 -05:00
John Colvin 6fb842c619 Tether temp vs window (outside workspace) to dummy shell win 2022-01-23 16:15:11 -05:00
John Colvin 6d90b6079e Implement vs grid settings command 2022-01-23 16:15:11 -05:00
John Colvin 084cbfcef6 Bind selection to immutablelist to get 1 instance/mutation 2022-01-23 16:15:11 -05:00
John Colvin 45a773fc69 Clean up DragDropDocumentPreview
* Make class internal
* Run formatter
2022-01-23 16:15:11 -05:00
John Colvin 3c147e7079 refactor: Clean up FloatingWindow
* Make internal
* Sort class members
* Fix naming violations
* Run formatter
2022-01-23 16:15:11 -05:00
John Colvin 1c4e574512 Add observe_immutable ext fn for ObservableCollection<T>
Converts sequence of CollectionChanged events to an
IObservable<ImmutableList<T>>
2022-01-23 16:15:11 -05:00
John Colvin 6901fe07d7 Add some mouse events to WPFTracer 2022-01-23 16:15:10 -05:00
John Colvin d1bf278bf2 refactor: Overload string join ext fn with params string[] 2022-01-23 16:15:10 -05:00
John Colvin 0d0f670629 refactor: Remove unused template param from string join ext fn 2022-01-23 16:15:10 -05:00
John Colvin 7c85a226d9 refactor: Overload empty_if_null ext fn for generic List/Array (rebase note: Used in AxisVM) 2022-01-23 16:15:10 -05:00
John Colvin b18ae91f37 Remove duplicate VolSurfaceRowView class
This was inadvertantly added, but didn't break the build because it was
in a different namespace (mbts.ui.shell) from the true VolSurfaceRowView
(mbts.ui)
2022-01-23 16:15:10 -05:00
John Colvin 025a5f49e3 diagnostics: Impl VolGridCellVM.ToString 2022-01-23 16:15:10 -05:00
John Colvin 146a136cd5 Remove magic const '-1' in drag/drop is_sufficient_delta fn
Not sure why this const was ever added in the first place, it appears to
arbitrarily prevent drag/drop ops from starting, when the mouse is at
coordinate (1,1)
2022-01-23 16:15:10 -05:00
John Colvin 8e8c532750 refactor: Use UIElement in drag/drop logic
As opposed to using FrameworkElement
2022-01-23 16:15:10 -05:00
John Colvin 5b973a2462 Add EnableDragMove dp (behavior) to PopupViewController 2022-01-23 16:15:10 -05:00
John Colvin 5bcd00d499 refactor: Clean up VolSurfaceSimplifiedGridVM 2022-01-23 16:15:10 -05:00
John Colvin cf9591ae83 Init value for vs cell view DIYGrid.ColumnProperty 2022-01-23 16:15:10 -05:00
John Colvin 64a5c44726 Define view style/behavior in VolSurfaceCellView rather than in vs column 2022-01-23 16:15:10 -05:00
John Colvin bbae90059e Write vs candidate vals to grid model so it updates the graph 2022-01-23 16:15:10 -05:00
John Colvin 1d953c31eb Use IValueConverter to fmt/parse cell vals in vs grid 2022-01-23 16:15:10 -05:00
John Colvin 49164aef3a Remove HistoricVolSurfaceRowControl
The new VolSurfaceRowView seems solid enough to stand on its own
2022-01-23 16:15:10 -05:00
John Colvin 2cc8810830 Init x_axis.position in vs graph vm 2022-01-23 16:15:09 -05:00
John Colvin f8813bda36 Fit axes to series on vs graph double click 2022-01-23 16:15:09 -05:00
John Colvin 98f3c5c433 Fix typo in launch-exp-params-view-cmd binding 2022-01-23 16:15:09 -05:00
John Colvin 65a6317527 Hook up context menu in vs grid 2022-01-23 16:15:02 -05:00
John Colvin 925c301cbe refactor: Change MultiSelectDropDowns to ComboCheckBox in vs settings 2022-01-23 15:25:41 -05:00
John Colvin b6ac345ee6 Port VolSurfaceGridSettingsEditor over from edge 2022-01-23 15:25:41 -05:00
John Colvin b3bc3ca18d Add TickUp/DownCommand dps to VolSurfaceCellView 2022-01-23 15:25:41 -05:00
John Colvin 568d9da42f Add TickFactors member to vs columns
For formatting/parsing doubles by tick
2022-01-23 15:25:41 -05:00
John Colvin 37fef31ed6 Implement _to_string to format doubles for volsurfaces 2022-01-23 15:25:41 -05:00
John Colvin 4d1c0869f1 fix: Don't publish invalid VolSurfaceUsageListImmutable 2022-01-23 15:25:41 -05:00
John Colvin 3ed16ff186 Ensure some vs settings props are non-null in getter 2022-01-23 15:25:41 -05:00
John Colvin 8a30fdd4c5 cli (client): Add user/pw opts to automate login 2022-01-23 15:25:41 -05:00
John Colvin a9b4881e7b refactor: Clean up ShellBootstrapper.cs 2022-01-23 15:25:41 -05:00
John Colvin f76e3968f8 refactor: Clean up App.xaml.cs
* Sort members
* Fix naming violations
* Remove unneccesary using directives
* Run formatter
2022-01-23 15:25:41 -05:00
John Colvin eb777fd14f Bind diygrid row hover fill to SelectionHighlight 2022-01-23 15:25:41 -05:00
John Colvin fffae3b519 Show decimal part by default in tick format fn 2022-01-23 15:25:41 -05:00
John Colvin 2aaa729ae9 refactor: Make VolSurfaceView class internal 2022-01-23 15:25:40 -05:00
John Colvin c2d6046a1f refactor: Use PopupAdorner to display vs graph legend 2022-01-23 15:25:40 -05:00
John Colvin 7b4d5766ef refactor: Use observable backings in cell vms 2022-01-23 15:25:40 -05:00
John Colvin 17978d2306 style: Use vs (not code) to format VolSurfaceView.xaml 2022-01-23 15:25:40 -05:00
John Colvin aadbef2a99 Add IsDragAdornerEnabled prop to DIYGrid 2022-01-23 15:25:40 -05:00
John Colvin 53e9d90bf9 refactor: Use nifty extension fns in vs grid vm 2022-01-23 15:25:40 -05:00
John Colvin 9df339c4a7 refactor: Make vs 'visible_rows' strongly typed
The prior weakly typed collection was a vestige from edge.  The view
property to which selected items was bound in edge was of type
ObservableCollection<object>
2022-01-23 15:25:40 -05:00
John Colvin 7c26572c0b refactor: Clean up volsurface axis/series vms 2022-01-23 15:25:40 -05:00
John Colvin 67f26d4318 refactor: Make ComboCheckBox.SelectedItems type IList 2022-01-23 15:25:40 -05:00
John Colvin cd3d1ab2f4 Add volsurface to MultiThreadedWindows conf 2022-01-23 15:25:40 -05:00
John Colvin 9314911cc8 build (client): Activate venv in msbuild target
Now buildspark.py can run outside of venv
2022-01-23 15:25:32 -05:00
John Colvin 67dc07c4f5 build (client): Add cli opts to build cpp and/or csharp 2022-01-23 15:25:06 -05:00
Taha Afzal 331e35cd42 Cleaning up 2022-01-23 15:24:47 -05:00
John Colvin 40890f9ad2 build: Upgrade client build to vs 17 2022
If vs 17 2022 isn't installed, buildspark.py should still work for vs 16 2019
2022-01-23 13:17:46 -05:00
John Colvin cb7606edca Fix x/y typo in GraphPointVM 2022-01-23 13:09:58 -05:00
John Colvin abab98cea6 Add null check in _recompute_and_publish 2022-01-23 13:09:58 -05:00
John Colvin d271e2a3ef refactor: Use VolSurfaceWindowFactory to create win 2022-01-23 13:09:58 -05:00
John Colvin 579e2a7a93 refactor: Rename VolSurafceView2 -> VolSurfaceView 2022-01-23 13:09:58 -05:00
John Colvin 0ac028c546 refactor: Ensure VolSurfaceWindowSettings lists non-null 2022-01-23 13:09:58 -05:00
John Colvin c6b374a934 refactor: Clean up VolSurfaceDisplayGrid
* Use new c# language features to make code prettier
*  Run formatter
2022-01-23 13:09:58 -05:00
John Colvin eeddde332e fix aw2, diygrid, mview after cherry-picking mview popups 2022-01-23 13:09:58 -05:00
John Colvin 9b9926502c fix flickering pnl hyperlink hover background 2022-01-23 13:09:58 -05:00
John Colvin a0e772885c fix flickering mview hyperlink hover background 2022-01-23 13:09:58 -05:00
John Colvin a0384c6d33 PNLView - HyperlinkCell mouse hover animation 2022-01-23 13:09:58 -05:00
John Colvin d18242e0f2 set HyperlinkCell 'HyperlinkClickMode' default to 'Anywhere' 2022-01-23 13:09:58 -05:00
John Colvin 2177451371 remove HyperlinkColumn props 'padding' and 'HyperlinkClickMode' (callers should set them through the ElementStyle prop) 2022-01-23 13:09:58 -05:00
John Colvin 5adb85582a after opening, mview remembers subsequent security criteria changes in workspace 2022-01-23 13:09:58 -05:00
John Colvin 35a2074de4 mview synth fills popup only shows fills of synth root algos 2022-01-23 13:09:58 -05:00
John Colvin de43f14552 mview mini ob only shows working orders 2022-01-23 13:09:57 -05:00
John Colvin d675ae17da mview mini orderbook only shows exchange orders for outrights, spreader orders for synths 2022-01-23 13:09:57 -05:00
John Colvin 0ae61d3e82 fix mview sorting (use new ColumnSortManager) 2022-01-23 13:09:57 -05:00
John Colvin c6c7350dad MarketViewVM - move local methods (in constructor) to bottom 2022-01-23 13:09:57 -05:00
John Colvin 75efd7a2d5 mview order ticket popup closes on send 2022-01-23 13:09:57 -05:00
John Colvin aaebf3b4fb mview toolbar menu items open regular windows instead of minis (for now) 2022-01-23 13:09:57 -05:00
John Colvin 76adc09b16 mview fills/orderbook toolbar menu items open the new popups 2022-01-23 13:09:57 -05:00
John Colvin 5b26252d25 DIYGridRowsPresenter initialization in Loaded callback is idempotent (Loaded event not always followed by Unloaded event) 2022-01-23 13:09:57 -05:00
John Colvin db813a8191 mview popups use AutoHideScrollBar to prevent scrollbars from covering data 2022-01-23 13:09:57 -05:00
John Colvin 4e0740d7b4 mview 'Position' column shows day position (uses position service) 2022-01-23 13:09:57 -05:00
John Colvin 5c74814b95 SP-257 mview popups for working orders & day fills 2022-01-23 13:09:57 -05:00
John Colvin 504aadac16 spruce up hamburger menu 2022-01-23 13:09:56 -05:00
John Colvin f12e8deeab add 'Freeze' prop to BrushExtension 2022-01-23 13:09:56 -05:00
John Colvin fa9ab9c033 DIYGridCellHoverAdorner 2022-01-23 13:09:56 -05:00
John Colvin d5dd63d528 refactor DIYGrid.SelectionHighlight to be Color instead of Brush (also fixes drag rect adorner bug, where the color wouldn't respond to settings changes) 2022-01-23 13:09:56 -05:00
John Colvin 4d2b3d4a77 market view row 'inside working orders' comparison to bbo was backwards 2022-01-23 13:09:56 -05:00
John Colvin 5f2da9421b MarketViewVM does not derive from SecurityMDGrid 2022-01-23 13:09:56 -05:00
John Colvin dcea38d038 factor out pnl auxiliary popups for general use (mview) 2022-01-23 13:09:56 -05:00
John Colvin f97538edf2 introduce WindowStyle.UnsafeWindow dp 2022-01-23 13:09:56 -05:00
John Colvin dff3cd1424 refactor ChildBounds extensions to be for UIElement 2022-01-23 13:09:55 -05:00
John Colvin 62fb9bd74d aw2: Make custom VolSurfaceCellView control for aw2
This control hosts input and output views for cells in the volsurface
grid (only one of which is visible at any time).  The input view is
activated when the cell is focused
2022-01-23 13:09:55 -05:00
John Colvin 5ac5ecb55e diag: Add WPFTracer class 2022-01-23 13:09:55 -05:00
John Colvin e6d16b419b Impl non-generic IEqualityComparer.GetHashCode 2022-01-23 13:09:55 -05:00
Taha Afzal 23fa1bd0bc Removing SIM: from Deribit security desc 2022-01-23 11:07:07 -05:00
Taha Afzal e7350b2528 Working around Deribit option md bugs 2022-01-23 00:13:22 -05:00
John Colvin 4e5bf8f3c1 Remove unneccessary dependecy store lookup 2022-01-22 12:46:52 -05:00
John Colvin 1b9ac61588 Add save-log script to backup log file
The current date and time is appended to the log file name
2022-01-22 12:46:52 -05:00
John Colvin 616818aa52 Make our FirstOrDefault ext behave like linq's without predicates 2022-01-22 12:46:52 -05:00
John Colvin 3481a36735 Clean up VolSurfaceDisplayGridExpiration
* Make readonly fields props
* Implement ToString
* Use auto_phase in GetHashCode
* Run formatter
2022-01-22 12:46:52 -05:00
taha afzal ad530c242d Adding options securities for Deribit 2022-01-21 14:45:34 -05:00
taha afzal fef2b64933 Hooking trades, as well as reducing the log level to DIAG for most market data callbacks 2022-01-20 13:38:34 -05:00
taha afzal fac10e0da7 tick interval set up correctly now for deribit securities 2022-01-19 23:09:31 -05:00
taha afzal e7295ccf9a Made the dumper method in ShmDumper public to allow access for Logging from other places: 2022-01-19 16:13:47 -05:00
taha afzal d4be0e7ef6 Merge branch 'spark_crypto' of bitbucket.org:bluetradesys/spark into spark_crypto 2022-01-19 15:44:53 -05:00
taha afzal 15beef99f9 Deribit market data (futures) integrated 2022-01-19 15:44:34 -05:00
John Colvin 3524ad56ee fix build: Don't deconstruct result of add/remove op
Two of the deconstructed members were unreferenced variables
2022-01-12 11:24:17 -05:00
taha afzal d7bfdf4397 Merge branch 'spark_crypto' of bitbucket.org:bluetradesys/spark into spark_crypto 2022-01-11 20:01:03 -05:00
John Colvin d1edb41b9d build: Don't explicitly link emumba deps
The should all be in the emumba-deribit-connector-library_LIBRARIES var
2022-01-11 18:14:54 -05:00
John Colvin ad5b32319c build: Add deribit demo log level var to CMakeLists 2022-01-11 18:14:54 -05:00
John Colvin d646b4b54f refactor: Replace terse 'unused' attributes w/ macro 2022-01-11 18:14:54 -05:00
John Colvin 7e710870ec Actually run the deribit connector 2022-01-11 18:14:54 -05:00
John Colvin b902fc372f Remove custom spdlogger from deribit demo 2022-01-11 18:14:54 -05:00
John Colvin e9caab16ba Update externals: add emumba-deribit-connector lib 2022-01-11 18:14:54 -05:00
John Colvin 3c8ece1eee Update externals to include linux libssl 1.1.1m 2022-01-11 13:56:39 -05:00
John Colvin 7d1fe3098a Add break statement to end of switch case
The code wasn't technically broken (yet), bc the switch case in question
was falling through to the empty default case.
2022-01-11 13:56:39 -05:00
John Colvin a8f642ebd7 refactor: Add '_params' suffix to create_binance_subscription fn 2022-01-11 13:56:39 -05:00
John Colvin cc85c658d9 refactor: Use UnorderedSetMap for ref counts 2022-01-11 13:56:39 -05:00
Taha Afzal fbeb65b53b Logs for strike vs vols 2022-01-11 12:57:40 -05:00
Taha Afzal 66e312c2b8 Cleanup + logs 2022-01-11 00:16:42 -05:00
Taha Afzal b1300eb52a 2 tags were not naming their type names, and mapping to the same 'key' 2022-01-10 10:48:40 -05:00
Taha Afzal 4c34a532ce More logs 2022-01-10 10:29:55 -05:00
Taha Afzal 4e3a02c31b Request-Reply works 2022-01-10 00:00:40 -05:00
Taha Afzal 30fa5891e9 Adding torubleshooting logs 2022-01-09 17:21:01 -05:00
John Colvin 53b6c19565 refactor: Clean up DIYGrid a bit
* Don't define more than one variable in a single statement (this messes
  with the c# omnisharp extension in vscode)
* Remove private keywords (in accordance with our coding style)
* Sort class members
2022-01-07 23:11:31 -05:00
John Colvin cd19cbf0b4 Early cut of aw2 ui (most likely will have bugs)
Rough around the edges, but functional enough to be a useful diagnostic tool as
we iron out aw2
2022-01-07 23:11:31 -05:00
John Colvin 8958507385 refactor: Make UIAdapter classes internal 2022-01-07 23:06:54 -05:00
John Colvin 730174b6ff Support multiple props w/ same name in detect_property_changes
It is possible for a type to have multiple properties with the same name
if that type is a reference type that inherits from a parent type, and hides
one of the parent types properties with the 'new' keyword
2022-01-07 22:33:33 -05:00
John Colvin cee79afc23 Make VolSurfaceDisplayModel class internal 2022-01-07 22:33:33 -05:00
John Colvin 79c55793af refactor: Clean up VolSurfaceOutput
* Implement generic ICloneable<VolSurfaceOutput>
* Run formatter
2022-01-07 22:33:33 -05:00
John Colvin 43d614dde2 Add generic ICloneable interface
For some reason this very basic utility isn't defined in dot net
2022-01-07 22:33:32 -05:00
John Colvin fde11dc4a3 Remove unneccessary comment warning abt perf costs 2022-01-07 22:33:32 -05:00
John Colvin 36a84d28e2 refactor: Improve RemoveWhere ext fn impl
* Don't allocate list of items to remove
* Return the number of items removed
2022-01-07 22:33:32 -05:00
John Colvin 6f7e2ab201 refactor: Clean up VolSurfaceExtensions
* Run formatter
* Replace foreach loops w/ less verbose linq style extensions
2022-01-07 22:33:32 -05:00
John Colvin fe7097771b Derive SparkWindow from DisposableViewModelBase 2022-01-07 22:33:32 -05:00
John Colvin 5a81c223c1 Remove old 'PAndl' window 2022-01-07 22:33:32 -05:00
John Colvin 8a4e90e1be refactor: Clean up BTSColor
* Rename argb props to be lower case
* Make some member fns static extensions
* Remove Serializable attribute
* Use a single uint prop (rather than 4 byte props) for protobuf
serialization
2022-01-07 22:33:32 -05:00
Taha Afzal 9d0cc5ef91 Adding include opitonal to fix the build 2022-01-07 15:42:18 -05:00
Taha Afzal 10bd10fbf1 Update externals (adds missing std dir to includes) 2022-01-07 14:27:26 -05:00
taha afzal 21aefed58f Stats, Trades etc also itegrated 2022-01-04 21:57:56 -05:00
taha afzal 13133053f6 error and book updates hooked 2022-01-04 16:23:06 -05:00
John Colvin b41f321723 style: Add comments to binance md classes 2022-01-04 13:43:17 -05:00
John Colvin a90f6badfd refactor: Clean up binance md classes
* Remove unneccessary includes in a few files
* Remove erroneous commented out fwd decls
* Remove unused class BinanceMarketDataSubscription
* Make a few public accessor fns private
2022-01-04 13:34:33 -05:00
taha afzal 92feb60ec5 EmMDListener security addition completed 2022-01-03 22:32:54 -05:00
taha afzal 8561944900 Adding the Emumba-Spark bridge 2022-01-03 11:30:41 -05:00
taha afzal 2ca7b3bf7a Fixing build 2021-12-31 15:14:51 -05:00
taha afzal 032acffb03 Merge branch 'spark_crypto' of bitbucket.org:bluetradesys/spark into spark_crypto 2021-12-31 00:27:35 -05:00
taha afzal 8c7c7b6af5 Adding a commented out class to start integration of emumba-Deribit 2021-12-31 00:25:36 -05:00
John Colvin 3a6e55a5ea fix build (gcc release): Ensure ValueWrappers are initialized 2021-12-30 14:02:30 -05:00
John Colvin fb8ea23744 fix build (gcc debug): Return vec of unique_ptrs w/ move 2021-12-30 13:52:13 -05:00
John Colvin 1ce44e3bd9 Show config_path on parse error in deribit demo 2021-12-30 13:44:02 -05:00
John Colvin d329b1c88d Update DeribitDemoListener to use emumba-deribit-connector 2.0.0 2021-12-30 13:43:24 -05:00
John Colvin 13dbc0826d refactor: Put DeribitDemoListener inside namespace 2021-12-30 13:40:34 -05:00
John Colvin f34a41d19c Fix synth book net change test
Net change doesn't depend on tick size anymore (not sure why it ever
did, but now the ui is in charge of such display behavior)
2021-12-29 22:30:17 -05:00
John Colvin 6198bc2a64 Update linux docker 2021-12-29 21:59:12 -05:00
John Colvin 1f40818dda Update docker/linux 2021-12-29 16:05:54 -05:00
John Colvin 1df7b51be9 Remove unused 'apioptions' import from proto files
This removes a couple warnings in the client build
2021-12-29 13:38:22 -05:00
John Colvin e45f186cd9 Add deribit to sec formating code 2021-12-29 13:18:49 -05:00
John Colvin 6874c8f6b9 style: Use dos line endings in QuickBusClientChannel.cs 2021-12-29 13:18:49 -05:00
Taha Afzal b03979cf65 Fake Deribit securuties show up in the UI 2021-12-29 13:18:49 -05:00
Taha Afzal d5d6605a41 Forgot the break in the case 2021-12-29 13:18:49 -05:00
Taha Afzal 139c0d2c51 Added DeribitExchangeData 2021-12-29 13:18:49 -05:00
Taha Afzal 25faf081fc Added Deribit to Venues proto 2021-12-29 13:18:49 -05:00
Taha Afzal cf1a5ada49 KeyValue pair add/update is being dealt properly now 2021-12-29 13:18:48 -05:00
Taha Afzal 7986bff968 Temporary test runner for analytics tests 2021-12-29 13:18:48 -05:00
Taha Afzal 6b305f0593 More logs added to SystemContractData 2021-12-29 13:18:48 -05:00
Taha Afzal 1de81e35f9 SystemContractData had a bug while hashing strikes 2021-12-29 13:18:48 -05:00
Taha Afzal 6714e47d4c All providers are hooked up 2021-12-29 13:18:48 -05:00
Taha Afzal 23e8294502 Enabling SingleVolSurfaceTheoSource 2021-12-29 13:18:47 -05:00
Taha Afzal 27079865e2 Enabled SingleVolSurfaceRequestCalculator 2021-12-29 13:18:47 -05:00
Taha Afzal 2f8e9e9859 Enabling SingleVolSurfaceCommittedOutputRetriever 2021-12-29 13:18:47 -05:00
Taha Afzal d3c4772d59 SingleVolSurfaceCommittedOutputRetriever enabled 2021-12-29 13:18:47 -05:00
Taha Afzal e4c13622f0 SingleVolSurfaceNonVolDataSource cleaned up 2021-12-29 13:18:46 -05:00
Taha Afzal a5ffdd5180 Cleaning up option driver publishing 2021-12-29 13:18:46 -05:00
John Colvin f0d86b92fb build: Add target opt to build cmd 2021-12-29 13:18:46 -05:00
John Colvin b67d2a45d0 refactor: Rename ContractPickerModel -> ContractPickerVM
Renames class, and file, as well as variables and class members of type
ContractPickerVM
2021-12-29 13:18:46 -05:00
John Colvin 6d1bad8b8c Clean up ContractPicker (model and view) 2021-12-29 13:18:45 -05:00
John Colvin 092f8fc371 Add queue_execute/flags params to defer_execution
This serves a common use case where the caller wants to invoke an action
once, at the end of a code block
2021-12-29 00:50:11 -05:00
John Colvin 15c2d416a8 refactor: Make security_type an ext fn (not member) 2021-12-29 00:50:11 -05:00
John Colvin c68c4ea9c9 Add ext fns for ImmutableSortedSet
AddRange, RemoveRange, and SetItems
2021-12-29 00:50:11 -05:00
John Colvin eacfd5c8fe Add SetItems ext fn for IImmutableSet/ImmutableHashSet 2021-12-29 00:50:11 -05:00
John Colvin 65304e6003 style: Clean up ImmutableSetExtensions 2021-12-29 00:50:11 -05:00
John Colvin 1a51a2e7a7 Fix bug where 'add' button was disabled in ContractPicker
This bug was occurring after the user added a criteria clause, and then
[only] changed the strike selection
2021-12-29 00:50:11 -05:00
John Colvin 8ddfa65f5f Make sec type list in ContractPicker constant
Don't filter security types based on selected exchange (consider them
orthogonal). This preserves the selected instrument type if you toggle
the selected exchange between one that lacks a particular instrument
type, and one that doesn't.
2021-12-29 00:50:11 -05:00
John Colvin 15ca25bf6d Remove ISecurityBasedSettings and TickDisplayParameters
These classes weren't referenced anywhere
2021-12-29 00:50:11 -05:00
John Colvin bc0689b529 refactor: Clean up GlbxSecurityFormatter
* Replace if blocks w/ switch statement
* Replace Substring calls w/ new c# range operator
2021-12-29 00:50:11 -05:00
John Colvin 43a5e27e8f Add options to ContractPicker 2021-12-29 00:50:10 -05:00
John Colvin 486e4c7113 build: Fix PYTHONPATH in CompileProto3 build tgt 2021-12-29 00:50:10 -05:00
John Colvin 83773d1335 Add fmt_pretty ext fn to SecurityCriteriaClause 2021-12-29 00:50:10 -05:00
John Colvin f0b8d3d44f Initialize tick fields in fake md 2021-12-29 00:50:10 -05:00
John Colvin 26e1d6e939 Add all_flags, all_flags_except fns to EnumHelper 2021-12-29 00:50:10 -05:00
John Colvin e6f5e437b7 Remove redundant security_in_criteria fn
Replace calls to ContractPickerModel.security_in_criteria with
SecurityCriteria.includes extension method, which should perform better.
Each clause represents an  'and' chain of smaller predicates, the fn
being replaced always evaluates all of the smaller predicates, while its
replacement only evaluates them as long as they return true.
2021-12-29 00:50:10 -05:00
John Colvin 22a3325d0c Add strikes/callputs to SecurityCriteria 2021-12-29 00:50:10 -05:00
John Colvin caa17b0073 Don't import apioptions in SparkProtos
The import is unused, and was causing a compilation warning as a result
2021-12-29 00:50:09 -05:00
John Colvin e3128c11a2 build: Copy (rather than symlink) .build_proxy to build
The sole purpose of the buildspark_redirect script is to workaround a bug in
the vscode c# extension.  Unfortunately some buggy behavior persists when these
dirs are symlinked.
2021-12-29 00:50:09 -05:00
John Colvin f06c1a86ea refactor: Clean up security extension/helper fns
* Define all security-related extension fns in SecurityExtensions
* Rename security extension/helper fns to be in snake_case
2021-12-29 00:50:09 -05:00
Taha Afzal fbccc80c77 Changing file name 2021-12-21 14:44:20 -05:00
Taha Afzal 73183aa007 Added BBO to fake securities 2021-12-21 14:44:20 -05:00
Taha Afzal 0d49c4c0fe Made the fake sec's consistent 2021-12-21 14:44:19 -05:00
Taha Afzal 9f2627869b Publishing fake options md 2021-12-21 14:44:19 -05:00
Taha Afzal 13139e6943 MDConsumerHandle abstracted out to allow the client to inject Fake securities 2021-12-21 14:44:19 -05:00
Taha Afzal 08e9157f17 Added IMDConsumerHandle as an indirection to innjetc market data in the system 2021-12-21 14:44:19 -05:00
Taha Afzal 076302a6b0 Adding saving exp params to AnalyticsTester 2021-12-21 14:44:19 -05:00
Taha Afzal 4c4c748be6 VolSurfaces are updated now 2021-12-21 14:37:04 -05:00
Taha Afzal 76dfd02aa8 AnalyticsServiceServer.save_volsurface was not calling the response return function 2021-12-21 14:34:46 -05:00
Taha Afzal 452a3eb698 Adding test code to create vs's 2021-12-21 14:31:20 -05:00
Taha Afzal adb88708fc Timer event etc... 2021-12-21 14:31:20 -05:00
Taha Afzal b399a1f9fb VoLSurfaceBBManager streamlined 2021-12-21 14:31:20 -05:00
Taha Afzal f2d000a91a Added VolSurfaceDisplayModel 2021-12-21 14:31:20 -05:00
Taha Afzal 9f28ef19ef ThreadedBB funciton name change 2021-12-21 14:31:20 -05:00
Taha Afzal 85c0e7780f Writes to threaded bb are also temptalized 2021-12-21 14:31:19 -05:00
Taha Afzal 145cf2d975 All Bus subscribers are using the templatized subscriptions 2021-12-21 14:31:19 -05:00
Taha Afzal 9d8dba23b9 threaded bb interacts with bus now 2021-12-21 14:31:19 -05:00
Taha Afzal 5a2c5e4c9a SingleVolSurfaceMarketImpliedVolSource 2021-12-21 14:31:19 -05:00
Taha Afzal 2480575e67 Straightened out (partially) some security misaallignments bw spark and aw2, added SingleOptionDriverPricePublisher 2021-12-21 14:31:19 -05:00
Taha Afzal d9337e1086 New AnalyticsServer completely hooked up 2021-12-21 14:31:19 -05:00
Taha Afzal 4a0fe9a19b Cleaning up VolSurfaceBlackboardManager 2021-12-21 14:31:19 -05:00
John Colvin 0c73900f57 build: Add --link-output-dir arg to buildspark.py 2021-12-21 11:50:54 -05:00
John Colvin f66749ee25 buildspark.py exists with code 1 on exception 2021-12-21 11:50:54 -05:00
John Colvin 043a9ecb4a Reword buildspark --output-dir help text 2021-12-21 11:50:54 -05:00
John Colvin f240b562ff Update linux docker 2021-12-21 11:32:01 -05:00
John Colvin a91ce93d43 Update externals 2021-12-21 11:31:51 -05:00
John Colvin 7819c1175a Upgrade compiler to clang-10 2021-12-11 15:50:50 -05:00
John Colvin 2ef66bc91f Fix server build after upgrading externals 2021-12-11 15:20:41 -05:00
John Colvin ea8bad4ece dev/john: Fix typo in Dockerfile 2021-12-09 14:16:52 -06:00
John Colvin 9ef529ab6c Upgrade docker 2021-12-09 11:53:49 -05:00
John Colvin fdb848eecb Remove unused import (apioptions.proto) from apicore.proto 2021-12-09 11:40:50 -05:00
John Colvin beecbbeb61 Upgrade pip when creating python virtual environment 2021-12-09 11:40:50 -05:00
Taha Afzal 58aa01de1b SingleVolSurfaceGateway completed 2021-12-09 11:40:50 -05:00
Taha Afzal b8bcc4a5f4 AnalyticsExpirationParameters 2021-12-09 11:40:50 -05:00
Taha Afzal 1cc00a9577 Hooking VolSurfaceBlackboatdManager to AnalyticsService 2021-12-09 11:40:50 -05:00
Taha Afzal 5eb1db7dd7 Start of interfacing the UI to the AnalyticsService 2021-12-09 11:40:50 -05:00
Taha Afzal c09b4e5ef4 Adding AnalyticsService to Run 2021-12-09 11:40:50 -05:00
Taha Afzal d86d621d38 Comments and wrapping up 2021-12-09 11:40:50 -05:00
Taha Afzal 0ee03a0d30 Persistence layer for vols 2021-12-09 11:40:50 -05:00
Taha Afzal 533a5c8f4a Filling up AnalyticsService 2021-12-09 11:40:50 -05:00
Taha Afzal 521e988b3a Added AnalyticsServiceServer 2021-12-09 11:40:50 -05:00
Taha Afzal 8786b48f33 Added AnalyticsService.proto 2021-12-09 11:40:50 -05:00
Taha Afzal 3f2d90c0ac Moving VoLSurfaceBlackboardManager 2021-12-09 11:40:50 -05:00
Taha Afzal 9b563e3dcb TheoPoint added 2021-12-09 11:40:50 -05:00
Taha Afzal a210e063f0 Migrating more code from edge 2021-12-09 11:40:50 -05:00
Taha Afzal 9055a6facb More classes moved 2021-12-09 11:40:49 -05:00
Taha Afzal 8f3ee23f6c SingleVolSurfaceOptionDriverSource added 2021-12-09 11:40:49 -05:00
Taha Afzal 29870ae7b0 More bus inhabitants added 2021-12-09 11:40:49 -05:00
Taha Afzal 7403155a88 Addedd SingleVolSurfaceTheoSource 2021-12-09 11:40:49 -05:00
Taha Afzal 4af73414cf Hooked a few more sources 2021-12-09 11:40:49 -05:00
Taha Afzal 6110a70b32 Added ThreadedBB interface and one user (SingleVolSurfaceDataSource) 2021-12-09 11:40:49 -05:00
Taha Afzal ed5e0a54cb Re-org'ing some 2021-12-09 11:40:49 -05:00
Taha Afzal 082b6aa86d Moved all UIAdapters from edge 2021-12-09 11:40:49 -05:00
Taha Afzal 18fb15dec4 Moving more AW2 ui code 2021-12-09 11:40:49 -05:00
Taha Afzal bf6658a265 Moved AW2 tags over 2021-12-09 11:40:49 -05:00
Taha Afzal 02728ddc56 Added tests 2021-12-09 11:40:49 -05:00
Taha Afzal 31bb4c418e Adding VoLSurface calulation code 2021-12-09 11:40:49 -05:00
John Colvin c0e75c2de2 Update CMakeDeps, CMakeDeps_win 2021-12-09 11:40:48 -05:00
John Colvin 62bf1d069c Fix build errors caused by big merge, externals upgrade
A lot of server-side changes were just merged as part of the Brandon
project (crypto).  Many of those changes were in libspark (a lib on
which both the client and server depend), and upgrades to its external
dependencies.  As a result, windows counterparts of several upgraded
external libs needed to be similarly upgraded (or added for the first
time).  These libs include: boost, btree, catch, curl, fmt, nlohmann json,
openssl, range, rxcpp, websocketpp

This change also makes protobuf generation compatible with python3, and thus
eliminates the build's dependency on python2
2021-12-09 11:40:42 -05:00
John Colvin 9091d50690 Remove Quantity negation '-' operator
This operator was a mistake to begin with, bc Quantity is unsigned
2021-12-08 10:58:00 -05:00
John Colvin 0544e21c97 Remove unnecessary includes in FlatUnorderedMap.h 2021-12-08 10:58:00 -05:00
John Colvin e9bb8201ed Add pragma once to ConfigurationState.h 2021-12-08 10:58:00 -05:00
John Colvin 75f8963ecd Merge remote-tracking branch 'origin/spark_crypto_base.server' into spark_crypto_base.client_server_merge 2021-12-07 18:33:18 -05:00
John Colvin e769926429 Update externals 2021-12-07 17:52:47 -05:00
John Colvin e09d4d24ba build: Add option to build sdk (or not)
The sdk isn't needed right now, and it adds several seconds to the build
2021-12-07 17:52:47 -05:00
John Colvin ed0924df02 fix build: Replace now-deprecated option in web build
Replace '-p' w/ '--mode production'
2021-12-07 17:52:47 -05:00
John Colvin cd6fcacc4f refactor: Clean up CryptoCommand
* Replace BinanceDemo w/ general purpose LiveLadderDemo
* Get rid of CryptoConfig.proto, as it inappropriately depended on
non-config protos
2021-12-07 17:52:42 -05:00
John Colvin 16bf52e193 refactor: Clean up MarketDataSubscription
* Define as class (not struct) to agree w/ fwd decls
* Make ctr inline since its defined in header
* Pass params to ctr by value (and std::move) rather than by const ref
  (and copy)
2021-12-06 16:41:24 -05:00
John Colvin df5aecd102 refactor: Replace refs to google/btree w/ Kronuz/btree
The former has been replaced with the latter in externals
2021-12-05 16:24:34 -05:00
John Colvin 75c0fee5bf Merge remote-tracking branch 'origin/spark_crypto_base.server' into spark_crypto_base.client_server_merge 2021-11-22 19:57:53 -05:00
John Colvin 5c251f4126 build: Add cmd to workaround vscode c# extension bug
For some reason, the build fails when the output dir is referenced by the c#
extension in vscode.  It produces errors saying various g.cs files (which are
generated for the spark csproj) could not be found.  However, examining the
contents of the output directory after the build "fails" show that those files
exist, and are in the proper build subdirectory.  Seems like a race.
2021-11-22 19:04:51 -05:00
John Colvin ccff827008 Remove unused file spark_server.sln 2021-11-22 18:26:26 -05:00
John Colvin 160769ea60 Add ladder scrollable_tick_window_size to config 2021-11-22 18:22:39 -05:00
John Colvin 16ecaa91b0 style: Clean up LadderOrdersHost 2021-11-22 17:54:06 -05:00
John Colvin 2614f91353 fix: Make order badges appear in ladder
Their positions in the LadderOrderHost were not in sync with the new
lazy/virtual visible tick range in LadderGridHost
2021-11-22 17:42:33 -05:00
John Colvin 2a9a041a36 fix: Init size_calculator earlier in NeworderTicketVM ctr
Avoids null reference exception
2021-11-22 17:33:56 -05:00
John Colvin c37ce8fab9 build (client, style): Fix typo in clean opt help text 2021-11-20 14:50:55 -05:00
John Colvin 3f38654652 refactor: Remove unused files TextBoxDialog.xaml(.cs) 2021-11-20 14:50:55 -05:00
John Colvin d54c6fe710 externals: Update linux boost includes 2021-11-20 14:50:55 -05:00
John Colvin 1ac8ceebe1 build (client): Fwd args from buildspark.cmd to buildspark.py 2021-11-20 14:50:55 -05:00
John Colvin 8cc72e6c96 build (style): Add comment abt paths wrapped in quotes 2021-11-20 14:50:55 -05:00
John Colvin 90ecb3c016 build (client): Add toggle opt to run msbuild /t:restore 2021-11-20 14:50:23 -05:00
John Colvin b3db213b1a build (client): Remove pygit2 dependency 2021-11-20 14:48:32 -05:00
John Colvin e389770e55 build (client): Don't choke on symlinked build dir 2021-11-20 14:48:32 -05:00
John Colvin 4d19101d01 build (client): Configure build with abs path to source dir 2021-11-20 14:48:32 -05:00
John Colvin 88d0f425d2 build (client): Add '--no' toggle to flag opts in buildspark.py 2021-11-20 14:48:32 -05:00
John Colvin 5a205304bb build (client): Fix build for non-default out dirs
Was building libspark and Spark.csproj separately, using msbuild for the
former and dotnet build for the latter
2021-11-20 14:48:07 -05:00
John Colvin 723442227c Update externals to include new websocketpp 2021-11-19 16:30:58 -05:00
John Colvin d4c867a835 Resurrect webserver
The webserver code was commented out when boost was upgraded, as the
former dependend on websocketpp, which, at that time, depended on the
previous version of boost.  Websocketpp has since been updated, so that
the dependency conflict no longer exists
2021-11-19 16:30:58 -05:00
John Colvin fd271b992a Remove ICE symbols from default conf 2021-11-19 16:30:58 -05:00
John Colvin f880399c4c Add unsubscribe fn to MarketDataGateway
Seems like this was accidentally omitted
2021-11-19 16:30:58 -05:00
John Colvin b1d3acb9f7 fix typo: Change < to <= in WebsocketClient::start 2021-11-19 16:30:58 -05:00
John Colvin 68848a74a4 fix build: Correct typo in include path in spreader_tests 2021-11-19 16:30:58 -05:00
John Colvin 9b7ac8d6eb refactor: Shorten field names in SecurityCommon
* security_id -> id
* security_group -> group
* security_desc -> desc
2021-11-19 16:30:58 -05:00
John Colvin 493262c99a Update docker/linux 2021-11-19 16:30:58 -05:00
John Colvin d9ff44cc93 docker (dev/john): Don't backup default .bashrc and .profile 2021-11-19 16:30:58 -05:00
John Colvin 5e3530faef docker (dev/john): Don't build fish docs
This breaks the build for some reason (don't care enough to investigate)
2021-11-19 16:30:58 -05:00
John Colvin c5ca47396b docker (dev/john): Don't install apt fish or git-powerline 2021-11-19 16:30:58 -05:00
John Colvin 2c21d4ddad docker (dev/john): Run apt w/ noninteractive frontend 2021-11-19 16:30:58 -05:00
John Colvin 8d5cae835f docker (dev/john): Update apt before installing fish dep 2021-11-19 16:30:58 -05:00
John Colvin 84221fe0d8 cli: Add emumba deribit demo subcommand 2021-11-19 16:30:58 -05:00
John Colvin 644613749d style (dev/john): Clean up Dockerfile
* Indent command chains
2021-11-19 16:30:58 -05:00
John Colvin c2a783ce96 refactor: Use protos in new Security class 2021-11-19 16:30:58 -05:00
John Colvin 23d645473c Update docker/linux to upgraded_18.04 branch 2021-11-19 16:30:58 -05:00
John Colvin 0f43de79e1 Update externals to use new json.hpp and node_modules 2021-11-19 16:30:58 -05:00
John Colvin eb86db3ef6 build (web): Symlink new node_module dirs in setup_builds 2021-11-19 16:30:58 -05:00
John Colvin 263c0503dc Don't link libiml (it's an artifact from spartan) 2021-11-19 16:30:58 -05:00
John Colvin 47cef95b11 build (web): Upgrade node packages 2021-11-19 16:30:58 -05:00
John Colvin 5a71cb4ac6 Add john's vscode files 2021-11-19 16:30:58 -05:00
John Colvin 0c3b3e9aa6 fix build: Comment out unused refs in websocketclient 2021-11-19 16:30:58 -05:00
John Colvin 09a5343daa Fix fsharp indentation error in gen'd code 2021-11-19 16:30:58 -05:00
John Colvin 254dcff1f6 Try to fix the goddamn web build
These dependencies are way to fragile.  It is a nightmare trying to
upgrade them.
2021-11-19 16:30:58 -05:00
John Colvin 2891e01de1 Add john's dev scripts (docker-related) 2021-11-19 16:30:58 -05:00
John Colvin f42568bed4 docker (john): Get john's vim files in Dockerfile 2021-11-19 16:30:58 -05:00
John Colvin a28f667df5 docker (john): Get john's bash config in Dockerfile 2021-11-19 16:30:58 -05:00
John Colvin ff1d561f7b docker (john): Change user to 'john' 2021-11-19 16:30:58 -05:00
John Colvin 94a91215fb Upgrade dev/john Dockerfile to ubuntu 21.04 2021-11-19 16:30:58 -05:00
John Colvin dccb50d269 fix build: Satisfy new compilers gcc10, clang12 2021-11-19 16:30:58 -05:00
John Colvin 6ca7d3904d Make plugin.py use env python (not hardcoded path) 2021-11-19 16:30:58 -05:00
John Colvin 0f81af3095 cli: Add crypto subcommand
This runs a test/example app that subscribes to binance md and prints
depth to the console
2021-11-19 16:30:58 -05:00
John Colvin 1ae124f0b2 Add SecurityResolver w/ fn bones 2021-11-19 16:30:58 -05:00
John Colvin e83c466bf2 Port over some handy tools from spartan 2021-11-19 16:30:58 -05:00
John Colvin 9a63cfa956 Add .tmp to gitignore 2021-11-19 16:30:58 -05:00
John Colvin 18250a98f7 Add fn to init WebsocketClientConfiguration w/ a url 2021-11-19 16:30:58 -05:00
John Colvin d18547806e Add output operators to websocket classes 2021-11-19 16:30:58 -05:00
John Colvin 03b475add1 fix build: Resolve struct/class fwd decl conflicts 2021-11-19 16:30:58 -05:00
John Colvin b35c43b55c refactor: Rename communication namespace to match path 2021-11-19 16:20:45 -05:00
John Colvin 48862f2b8d refactor: Rename 'communication' dir 'io' 2021-11-19 16:20:45 -05:00
John Colvin 41714fe3f2 Stop tracking .vscode 2021-11-19 16:20:45 -05:00
John Colvin f9db93e41a Add simple HTTPClient
The binance depth stream must be bootstrapped with a depth snapshot,
which is retrieved via an HTTP GET request
2021-11-19 16:20:45 -05:00
John Colvin 6573985bea Overload price comp fns to accept doubles 2021-11-19 16:20:41 -05:00
John Colvin 77dfe79d95 Add proto file settings to clang-format 2021-11-19 16:19:26 -05:00
John Colvin 1679dc61a1 Add bts_assert_msgf macro for templated assert msgs 2021-11-19 16:19:26 -05:00
John Colvin 07afba0b9e Remove websocket bones 2021-11-19 16:19:26 -05:00
John Colvin c018f86671 Add SecurityStore bones/basic impl 2021-11-19 16:19:26 -05:00
John Colvin 7eb8f0d685 Add protos for crypto 2021-11-19 16:19:26 -05:00
John Colvin 2e7bdbcac5 Add classes that mirror binance json structures 2021-11-19 16:19:26 -05:00
John Colvin 66f7474d62 style: Declare default copy ctrs for good taste
This will also satisfy more recent compilers, for when we finally
do upgrade the build
2021-11-19 16:19:26 -05:00
John Colvin 1ed3008c1c refactor: Split OrderGateway classes into sep files 2021-11-19 16:19:26 -05:00
John Colvin b3dbc041b5 refactor: Split md gateway classes into sep files 2021-11-19 16:19:26 -05:00
John Colvin 7bc5385783 Port Book type over from spartan 2021-11-19 16:19:23 -05:00
John Colvin 02513a8779 refactor: Make BookLevel fields non-const
Incremental diff streams would otherwise have to create entire new books
for each update (no copy assignment operator for elements which are stored in
an array)
2021-11-19 16:18:20 -05:00
John Colvin 27100e2e2d Implement OptionSecurity (was empty class) 2021-11-19 16:18:20 -05:00
John Colvin 4860d0cb3d refactor: Move classes out of MarketDataCommon.h into own files 2021-11-19 16:18:15 -05:00
John Colvin a0ce1b361f Add >=, <= operators to ValueWrapper 2021-11-19 15:42:35 -05:00
John Colvin 7ede27e90b refactor: Clean up ValueWrapper 2021-11-19 15:42:33 -05:00
John Colvin 0cfb27feba refactor (flatten): Move ExecutionGatewayFactory to own file 2021-10-25 13:27:12 -04:00
John Colvin 85c567ffc5 refactor (flatten): Move OrderServices to orderman dir 2021-10-25 13:27:12 -04:00
John Colvin 694309f80b refactor (flatten): Move OrderBuilder to orderman dir 2021-10-25 13:27:12 -04:00
John Colvin 0a6a4c35fa refactor (flatten): Move OrderServiceServer to orderman dir 2021-10-25 13:27:12 -04:00
John Colvin 923d9ee512 refactor (flatten): Move ChildOrder to orderman dir 2021-10-25 13:27:12 -04:00
John Colvin f2671ea4ba refactor: Remove unused file IOrderServices 2021-10-25 13:27:12 -04:00
John Colvin 0d3e27932a refactor (flatten): Move OrderRouter to orderman dir 2021-10-25 13:27:12 -04:00
John Colvin cc81fd3244 refactor (flatten): Move ilink3 dir to lib/orderman 2021-10-25 13:27:12 -04:00
John Colvin 014effef90 refactor: Move IExchangeGateways to gateways dir 2021-10-25 13:27:12 -04:00
John Colvin 903e59a814 refactor: Move order msg classes to own files 2021-10-25 13:27:12 -04:00
John Colvin 7e2b21602a refactor: Move Governor defs to .cpp 2021-10-25 13:27:12 -04:00
John Colvin aee394a792 refactor (flatten): Move Governor.h out of own dir 2021-10-25 13:27:12 -04:00
John Colvin e5e20af1f7 style: Clean up OrderServices
* Move non-template definitions to .cpp
* Move template definitions to bottom of .h
2021-10-25 13:27:12 -04:00
John Colvin 2d09a1ce33 Add .clangd to gitignore 2021-10-25 13:27:12 -04:00
John Colvin e0f9e0c48c Add .cache to gitignore 2021-10-25 13:27:12 -04:00
John Colvin f4f67d4289 Let the ui convert synth net change to n ticks
Whether or not to display a price in dollar or n ticks form is a display
setting, and furthermore the front end assumes all prices are in dollar
form
2021-10-25 13:27:12 -04:00
John Colvin ce68617d86 refactor: Rename TestObserver -> TestAlgo 2021-10-25 13:27:12 -04:00
John Colvin ba53334a7c Introduce SyntheticBook class
* Price levels are computed lazily

* Once computed, a price level can be accessed in O(1)

* Unit tests piggy back on rigorous existing unit tests in
  'synthetic_book_computation'

* Not integrated into the matcher, as that is non-trivial
  work, and the March 2021 roll is fast approaching
2021-10-25 13:27:12 -04:00
John Colvin 91925f9ec6 style: Run clang format on a few files 2021-10-25 13:27:12 -04:00
John Colvin 6b9b8ac403 Add ++/-- operators to Quantity 2021-10-25 13:27:12 -04:00
John Colvin 01d9af0bb2 Remove Price::abs method's price param, since it's non-static 2021-10-25 13:27:12 -04:00
John Colvin 63549fd3e2 refactor: Break up BookStatRecorder 2021-10-25 13:27:12 -04:00
John Colvin e3cd1e9fc3 refactor: Replace includes w/ fwd decls to speed up build
Also replace public templated function FifoMatcherContext::reset
with non-templated overloads, which call a private templated impl
2021-10-25 13:27:12 -04:00
John Colvin d0ceed37b5 cli: Remove ValidateFifo cmd (obsolete) 2021-10-25 13:27:12 -04:00
taha afzal 849adc5d7c Completed OrderGatewy inteface 2021-10-22 07:47:39 -04:00
Taha Afzal 317fc93c76 OrderGateway added for EMumba integration 2021-10-20 20:04:42 -04:00
Taha Afzal 3ff6c725a3 Hooked book 2021-10-18 13:51:01 -04:00
Taha Afzal 205953d928 Added more handler code to EmumbaMDListener 2 2021-10-15 19:32:46 -04:00
Taha Afzal 8a01969796 Added more handler code to EmumbaMDListener 2021-10-15 16:13:35 -04:00
Taha Afzal 38d94663cf More flesh on the skeleton 2021-10-14 16:09:14 -04:00
Taha Afzal c85ef44a1b Added skeleton for EmumbaMDListener 2021-10-13 12:48:33 -05:00
Taha Afzal 648a30ecf8 Fixing clang build 2021-10-11 19:46:34 -04:00
Taha Afzal fc7237c7b9 WebsocketClient working after and getting data from binance after adding the SSL handshake 2021-10-08 00:22:52 -04:00
Taha Afzal 936a3b624b Added WebsocketSyncClientTests 2021-10-07 14:20:49 -04:00
Taha Afzal fc4fa3893c added comments to the websocket interface and structures 2021-10-04 17:34:30 -04:00
Taha Afzal e34a2f5195 WebsocketClient - allows a user of this class to connect to a host url, and send and receive data asyncronously 2021-10-04 15:55:46 -04:00
Pedro Pinto ce98e862c3 Upgraded boost 2021-10-03 14:39:36 -04:00
Taha Afzal 930357d11c WebsocketClient 2021-09-27 11:52:57 -05:00
Taha Afzal 43c3584dd2 unified market data interface on which we will connect to crypto exchanges 2021-09-21 13:18:46 -05:00
John Colvin c0def90173 refactor (flatten): Move ExecutionGatewayFactory to own file 2021-09-15 23:53:59 -04:00
John Colvin 0d918510fd refactor (flatten): Move OrderServices to orderman dir 2021-09-15 23:53:59 -04:00
John Colvin 06141850fa refactor (flatten): Move OrderBuilder to orderman dir 2021-09-15 23:53:58 -04:00
John Colvin 8eab9a3f15 refactor (flatten): Move OrderServiceServer to orderman dir 2021-09-15 23:53:58 -04:00
John Colvin a7b7c45657 refactor (flatten): Move ChildOrder to orderman dir 2021-09-15 23:53:58 -04:00
John Colvin 15004f2762 refactor: Remove unused file IOrderServices 2021-09-15 23:53:58 -04:00
John Colvin be8242c7ac refactor (flatten): Move OrderRouter to orderman dir 2021-09-15 23:53:58 -04:00
John Colvin 601fd98508 refactor (flatten): Move ilink3 dir to lib/orderman 2021-09-15 23:53:58 -04:00
John Colvin c8bf9b41e4 refactor: Move IExchangeGateways to gateways dir 2021-09-15 23:53:57 -04:00
John Colvin 8d73cef4b2 refactor: Move order msg classes to own files 2021-09-15 23:53:57 -04:00
John Colvin 6f4a0f7ce4 refactor: Move Governor defs to .cpp 2021-09-15 23:53:57 -04:00
John Colvin a67056fbc9 refactor (flatten): Move Governor.h out of own dir 2021-09-15 23:53:57 -04:00
John Colvin cc67c3ced1 style: Clean up OrderServices
* Move non-template definitions to .cpp
* Move template definitions to bottom of .h
2021-09-15 23:53:57 -04:00
John Colvin edb2f1bac2 Fix server build (linux compiler doesn't like pragma push) 2021-09-15 23:53:57 -04:00
John Colvin 264ce8ddc4 Add .cache to gitignore 2021-09-15 23:53:57 -04:00
John Colvin 17642ca84b build: Use dotnet build (instead of msbuild) for c# projects
Continue using msbuild for c++ (i.e., libspark)
2021-09-15 23:53:57 -04:00
John Colvin f46d91a57e build: Remove erroneous PropertyGroup 2021-09-15 23:53:57 -04:00
John Colvin 8d145c9075 build: Remove erroneous AvailableItemName tags 2021-09-15 23:53:57 -04:00
John Colvin 78403a0baf style: Format msbuild project files 2021-09-15 23:53:57 -04:00
John Colvin 353b2fd7e0 build: Remove unused items in msbuild files 2021-09-15 23:53:57 -04:00
John Colvin ec1e1fda92 Add recursive .vscode dirs to gitignore 2021-09-15 23:53:57 -04:00
John Colvin da5331d8ca Stop tracking .vscode files 2021-09-15 23:53:57 -04:00
John Colvin 939f44b48c build: Refine build scripts so they work out of the box
* Automatically create python virtual envs
* Automatically actvate the vs dev prompt

Note: the python39 virtual env will remain active in the calling shell.
This behavior may be changed down the road.
2021-09-15 23:53:57 -04:00
John Colvin 5939df9345 Define naming conventions in editorconfig 2021-09-15 23:53:57 -04:00
John Colvin c366b9f4c8 style: Fix name violations, etc. on LadderGridHost 2021-09-15 23:53:52 -04:00
Taha Afzal d23baec6d9 comments and los 2021-09-10 09:13:59 -05:00
John Colvin 835e0f50ca Run dotnet format on spark proj 2021-09-06 19:35:31 -04:00
John Colvin ff4f338898 Add dotnet format tool 2021-09-06 19:35:30 -04:00
John Colvin 113871a150 Rename requirements.txt -> requirements27.txt
A requirements39.txt file was created (for a python 3.9 venv) after
requirements.txt, so the version specifier now seems appropriate.
2021-09-06 19:35:30 -04:00
John Colvin c31b5cf2b4 Run omnisharp formatter on spark project 2021-09-06 19:35:24 -04:00
John Colvin 7d75a6c3a9 Make ladder panel prices hyperlinks to jump to price 2021-09-06 18:34:28 -04:00
John Colvin 3995351b54 Fix bug where session range hidden 2021-09-06 18:34:28 -04:00
John Colvin 795942d8a9 Add style.yapf (python formatting config) 2021-09-06 18:34:28 -04:00
John Colvin f4be975fec Add omnisharp.json (c# formatting config) 2021-09-06 18:34:28 -04:00
John Colvin b7a0cc5c24 Add .venv dirs to .gitignore 2021-09-06 18:34:28 -04:00
John Colvin 8a666ae397 Add requirements39.txt for python 3.9 env 2021-09-06 18:34:28 -04:00
John Colvin 2cc8e519d8 Add cached branch build dirs to gitignore 2021-09-06 18:34:28 -04:00
John Colvin 48cd21aa46 build: Add option to cache branch builds 2021-09-06 18:34:27 -04:00
John Colvin 531fbb63be build: Add buildspark.py (bc bat is a horrible language) 2021-09-06 18:27:32 -04:00
John Colvin 6f3945cced Implement IObservable in SingleValuePump for convenience 2021-09-06 18:27:32 -04:00
John Colvin 9dc3c32769 Add bit_span param to auto_phase (hash fn)
Brought over from DJ_ICE bc it seems like a useful param for custom
hash impls (though there isn't an immediate need for it).
2021-09-06 18:27:32 -04:00
John Colvin 3f2f19f73c fix: Load FairValueLine price type in settings dialog 2021-09-06 18:27:32 -04:00
John Colvin 9a013d783e Add fair value lines for DJ 2021-09-06 18:27:32 -04:00
John Colvin 6ea217b674 fix: ContractPicker syncs selected sec/md w/ selected key 2021-09-06 18:27:32 -04:00
John Colvin 0356221066 ui (DJ): Avoid darkening price text in session range in ladder
Put the session range visual beneath the column backgrounds
(on the z axis), and make the background slightly translucent
while leaving the font color fully opaque.  This effectively
darkens the former without changing the latter.
2021-09-06 18:27:32 -04:00
John Colvin 50a0ed3823 Set alpha bits to 'FF' in historic ladder settings colors 2021-09-06 18:27:32 -04:00
John Colvin 1686d41c0c ui (dj): Reduce opacity of session range layer in ladder 2021-09-06 18:27:32 -04:00
John Colvin 65f2efa9a0 ui (dj): Make ladder look more like tt
These changes can be configured via LadderKnobs (defined in UI.proto)
2021-09-06 18:27:32 -04:00
John Colvin 84e9cf5261 fix: Correct visibility binding in ladder session high/low
The other price points visibility bindings were refactored
in a similar manner, for consistency's sake.
2021-09-06 18:27:32 -04:00
John Colvin dd256409e9 feat (DJ): Right align bid, price, and ask column text in ladder
This is hardcoded (not configurable via settings).
2021-09-06 18:27:32 -04:00
John Colvin 1e68c047ea feat (DJ): Give bid/ask cells with markets a lighter background in ladder
There is a small chance this will impact performance when
a large number of ladders (50+) are open.  Therefore, this
behavior can be toggled on/off in config, via
LadderKnobs.lighten_market_background.
2021-09-06 18:27:31 -04:00
John Colvin 56340fcc60 refactor: Consolidate tick tests after tricky merge
The branches that were merged, DJ_ICE and
DJ_ICE_ladder_price_aggregation, both added new
tick tests.  The former put them in a new file,
"TickTests.cs," while the latter added them
to "SecurityTests.cs."  This commit places all
tick tests in "TickTests.cs."
2021-09-06 18:27:31 -04:00
John Colvin af639286e1 Add tooltips to ladder left-panel price points 2021-09-06 18:27:31 -04:00
John Colvin bf32b6262d Tailor default ladder price point settings for DJ 2021-09-06 18:27:31 -04:00
John Colvin f2dd283751 feat (DJ): Display settings for ladder left-panel price points
* Add background and font settings for all price points

* Indicate 'day change' sign with modal settings (positive,
  zero, and negative) for background and font color

* Hide 'day change' leading zeros in tick part

* Don't show 'day change' zero integer part (e.g.,
  '25' instead of '0.25')
2021-09-06 18:27:31 -04:00
John Colvin c27cd8ca54 Make a few classes/structs public in spark_core
They are referenced in spark proj, so prob should have always been
public.
2021-09-06 18:27:31 -04:00
John Colvin 75c86f7b69 config toggle to show/hide ladder scrollbar for dj (defaults to hide) 2021-09-06 18:27:31 -04:00
John Colvin 2e1d65fa33 frozen price lines in ladder (for dj) 2021-09-06 18:27:31 -04:00
John Colvin 5cdd2629bf Copy a few ext methods from DJ_ICE 2021-09-06 18:27:31 -04:00
John Colvin 026bf6fb07 fix ColumnBase.SortDirection binding to DIYGridColumnModel 2021-09-06 18:27:31 -04:00
John Colvin 9054049ebf SelectionModel should only select the pending selection once (was reselecting it every time the items changed) 2021-09-06 18:27:31 -04:00
John Colvin d7a044c894 remove unused 'actual_width' prop from DIYGridColumnModel 2021-09-06 18:27:31 -04:00
John Colvin 2da8895f3e synchronize column model's GridColumnSettings with the column view 2021-09-06 18:27:31 -04:00
John Colvin 1e1a5897bc TextCell available_size is updated in ArrangeOverride 2021-09-06 18:27:31 -04:00
John Colvin d3a635b156 parameterize SecurityStore.join (don't mess with core logic/impl) 2021-09-06 18:27:31 -04:00
John Colvin f08c8a51ad made new SelectorVM (todo: replace refs to old one) 2021-09-06 18:27:31 -04:00
John Colvin 2f08e92a5e add SimpleGridSettingsManagerVM (uses DIYGridColumnModels instead of the view type ColumnBase) 2021-09-06 18:27:30 -04:00
John Colvin 336b009f24 add DIYGridColumnModel, so the DIYGrid column paradigm is cleanear mvvm 2021-09-06 18:27:30 -04:00
John Colvin e027454a36 add get/load_state methods to non-generic IDataGridColumnFilter 2021-09-06 18:27:30 -04:00
John Colvin af968c2c58 add PropertyEqualityComparerAttribute (supports simple automatic equality impl) 2021-09-06 18:27:30 -04:00
John Colvin 25a954b13c unify SecurityCriteria initialization with securities (use pretty_name if single sec) 2021-09-06 18:27:30 -04:00
John Colvin a45d8761e5 remove with_reguard_to_price param from tick 'format' extension 2021-09-06 18:27:30 -04:00
John Colvin e1d9ca6325 fix typo in ConvertUtils.update_value_type (was missing negation '!') 2021-09-06 18:27:30 -04:00
John Colvin d3853ddbf8 fix tick unit tests, and reorganize security tests a bit 2021-09-06 18:27:30 -04:00
John Colvin 7efa62c994 add precision param (epsilon) to tickup/down methods 2021-09-06 18:27:29 -04:00
John Colvin 9284bf5b14 TickFactors are cached in a ThreadStatic dictionary rather than concurrent (no locks required) 2021-09-06 18:27:29 -04:00
John Colvin 88ebf9f86f ticksize extension handles invalid tick props gracefully 2021-09-06 18:27:29 -04:00
John Colvin 85ab9d98de remove unused parameter from TickTestHelper.full_ticks_from_zero 2021-09-06 18:27:29 -04:00
John Colvin b8278bb310 fix ladder session low/high grid animation (was not using the ticks per row setting) 2021-09-06 18:27:29 -04:00
John Colvin 00ef27bf8c LadderGridHost invalidates '_spec' on connect_vm (not just on settings updates) 2021-09-06 18:27:29 -04:00
John Colvin d090a6d851 fix typo in LadderGridHost._spec getter (was accidentally returning the fallback value) 2021-09-06 18:27:29 -04:00
John Colvin 573b5e1c62 make tick unit tests more robust (test tick_up/down, use these methods to covalidate results) 2021-09-06 18:27:29 -04:00
John Colvin f6b1cf7c3a include Sim ContractSpecs in tick unit tests 2021-09-06 18:27:29 -04:00
John Colvin 08643c8af1 ladder settings dialog - fix 'when implied is > 0' label alignment 2021-09-06 18:27:29 -04:00
John Colvin b2b8c083a6 added tick unit test (namely for 'full_ticks_from_zero' method) 2021-09-06 18:27:29 -04:00
John Colvin fa882d5472 added 'full_ticks_from' method which accepts an origin price (instead of just an arbitrary 0) 2021-09-06 18:27:28 -04:00
John Colvin 8760481153 TickUtils.full_ticks_from_zero checks pricebreak 2021-09-06 18:27:28 -04:00
John Colvin 33338d2a0a move LadderUtils methods to TickUtils (all were related to ticks) 2021-09-06 18:27:28 -04:00
John Colvin 5b85c20d32 move tick data\utils to spark_core 2021-09-06 18:27:28 -04:00
John Colvin bbf8decd0a add 'ticks per row' ladder setting 2021-09-06 18:27:28 -04:00
John Colvin d5315054a2 add TickUp/DownCommand dependency props to TickUpDownUInt 2021-09-06 18:27:28 -04:00
John Colvin 6e7aa3fe9a fix ladder autoscroll (works perfect now) 2021-09-06 18:27:28 -04:00
John Colvin 48b42bf41f check pt 2021-09-06 18:27:28 -04:00
John Colvin e2f7c2ef20 Update devcmd.cmd for vs 16 2019 2021-09-06 17:45:53 -04:00
John Colvin 27294822ef Restore .vscode files in dev directory 2021-09-06 17:45:53 -04:00
John Colvin f0250338eb Don't track .vscode files in source control 2021-09-06 17:45:50 -04:00
John Colvin 7ee3ef4737 build: Init spark_build_python_path in Directory.Build.Props 2021-09-06 17:41:56 -04:00
John Colvin 03a1cf0395 Add .tmp to gitignore 2021-09-06 17:41:53 -04:00
John Colvin 5ad70b83d6 build: Add step to copy cpp libs to new client out dir 2021-09-06 17:40:58 -04:00
John Colvin 8eba500d1b Avoid race conditions exposed by new OnDispatcher impl 2021-09-06 17:40:58 -04:00
John Colvin 0a3d361621 refactor code to use dotnet core 6
Most changes revolve around MEF, as the new version (5.0.0) lacks
feature parity with the previous version (3.1)
2021-09-06 17:40:58 -04:00
John Colvin fd5f54d8c9 Implement 'OnDispatcher' for dotnet core 6
That extension method doesn't exist in this version
2021-09-06 17:40:58 -04:00
John Colvin 957daf5392 build: Upgrade client build to net5.0 2021-09-06 17:40:58 -04:00
John Colvin c4953590bc Remove spark_excel from spark_client.sln 2021-09-06 17:40:58 -04:00
John Colvin 578d6c8518 build: Update win compiler to Visual Studio 16 2019 2021-09-06 17:35:03 -04:00
John Colvin 54bcff0b8f import compute_synthetic_book method from spartan 2021-09-06 17:32:34 -04:00
Pete Fisher 9f74e57a05 updating submodule to latest 2021-09-06 17:28:33 -04:00
John Colvin a58298edb9 Update externals for vs 2019 compilation 2021-09-06 15:03:04 -04:00
John Colvin c7e2905255 Disable align related warning in vs 2019 build 2021-09-06 15:03:04 -04:00
John Colvin 799126f06a Update build scripts to use vs 2019 build tools 2021-09-06 15:03:04 -04:00
Taha Afzal 1d041357aa Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2021-04-08 22:59:17 -04:00
Pedro Pinto d53bfb70ff Added structured logging to SQLite. 2021-02-16 18:20:37 -05:00
Pedro Pinto e4a9636583 Added spartan logging. 2021-02-16 16:06:59 -05:00
Taha 3c744e9678 Adding sec/spread (optional) parameter and better logs 2021-02-15 13:42:18 -06:00
Pedro Pinto 28cfa69a23 Added ringbuffer. 2021-02-14 10:26:29 -05:00
Pedro Pinto e4c8437f1f And yet some more. 2021-02-12 12:52:52 -05:00
Pedro Pinto b5668d9534 Fixed the build some more. 2021-02-12 12:39:21 -05:00
Pedro Pinto e756fece66 Fix build. 2021-02-12 12:34:49 -05:00
Pedro Pinto 80c2c58a5a More refactoring 2021-02-12 09:17:28 -05:00
Pedro Pinto 047aa43880 The great flatening. 2021-02-12 09:03:20 -05:00
Pedro Pinto e0d33e6099 Cleaner feed handler. 2021-02-11 17:52:40 -05:00
Pedro Pinto f60a55815d Cleaned up gateway. 2021-02-11 17:47:59 -05:00
Pedro Pinto 33bde966b7 Algo manager. 2021-02-11 17:10:30 -05:00
Pedro Pinto 77210f7c90 Cleaning up Error handling. 2021-02-11 16:58:21 -05:00
Pedro Pinto 058f32c941 IL3 cleanup. 2021-02-11 16:49:33 -05:00
Pedro Pinto 979f06e6d0 Fixed release build. 2021-02-11 14:58:20 -05:00
Pedro Pinto 595b77c3c6 More clean up. 2021-02-11 13:40:51 -05:00
Pedro Pinto 2788ea31ff Moved to delegates. 2021-02-11 13:07:46 -05:00
Pedro Pinto 94d9601d23 Removed obsolete interfaces. 2021-02-10 14:41:24 -05:00
Pedro Pinto 51520e0e0a Changed MD to use delegates. 2021-02-10 14:34:00 -05:00
Pedro Pinto 6bb8da9a36 Minor doc. 2021-02-10 08:52:18 -05:00
Pedro Pinto cde3f7900f Fixed broken build scripts. 2021-02-10 08:50:06 -05:00
Pedro Pinto 357d4625fa Cleaned up delegate. 2021-02-10 08:49:18 -05:00
Pedro Pinto 51b37abae7 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2021-02-09 21:57:18 -05:00
Pedro Pinto cca7ded152 More algo man. 2021-02-09 21:56:37 -05:00
Pedro Pinto 3d9aa58ac1 Added a FAF Delegate. 2021-02-09 21:55:58 -05:00
John Colvin 695d7e4f74 fix: Initialize '_args' member in md subcommands 2021-02-09 16:33:12 -06:00
John Colvin 7bec8a103b build: Change build path to 'build/<compiler>/<build_type>' 2021-02-09 16:33:12 -06:00
John Colvin 3be4c57530 style: Format vscode json files
* Indent with 2 spaces
2021-02-09 12:18:23 -06:00
John Colvin 70d0ed54a4 fix: Apply ib qty change in OrderModification::apply 2021-02-09 12:11:15 -06:00
John Colvin 36ac807635 vscode: Tweak presentation of linux_build task 2021-02-09 12:11:15 -06:00
John Colvin 430a9b38ef refactor: Make SecurityMatcher::book return const BookSide& 2021-02-09 12:11:15 -06:00
Pedro Pinto e3574e9d23 mdp3 removal. 2021-02-09 07:47:01 -05:00
Pedro Pinto 6591ed7a3c less mdp3. 2021-02-08 21:45:17 -05:00
Pedro Pinto 5f292ae46a More mdp3 excising. 2021-02-08 20:30:24 -05:00
Pedro Pinto bd9f5ff862 Removing mdp3. 2021-02-08 19:50:03 -05:00
Pedro Pinto 69614a158e Towards removing mdp3:: 2021-02-08 19:46:37 -05:00
Pedro Pinto cf8ec8bbad Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2021-02-08 16:50:46 -05:00
Pedro Pinto 91c3d820fc Towards an algo manager. 2021-02-08 16:50:40 -05:00
Taha f435203794 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2021-02-08 14:57:20 -06:00
Taha b4c013f4da Logging mode, log shots in addition to logging all active polygon states 2021-02-08 14:54:21 -06:00
Pedro Pinto 37ecb69379 Towards an algo manager. 2021-02-08 15:19:17 -05:00
Pedro Pinto d1643e9a09 More refactoring. 2021-02-08 15:13:37 -05:00
Pedro Pinto 0456d837d8 Continued to refactor feed handler. 2021-02-08 11:29:23 -05:00
Pedro Pinto b493b17602 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2021-02-08 09:24:25 -05:00
Pedro Pinto 206386b263 Separated pure MD interface (IFeedObserver) from analysis obs. 2021-02-08 09:23:16 -05:00
Pedro Pinto 51d336405a More refactoring. 2021-02-08 09:07:40 -05:00
taha e068a3807a Added logs for when file is not found 2021-02-07 00:05:32 -06:00
taha f585f54016 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2021-02-06 22:54:31 -06:00
taha cf3b87d3aa Fixed the logs (and got rid of prev value, we were not using it and it was adding extra unneeded complexity) 2021-02-06 22:54:24 -06:00
Pedro Pinto 3164c0fd56 Refactor. 2021-02-05 21:58:44 -05:00
Pedro Pinto bdfed43b01 Refactor. 2021-02-05 21:09:37 -05:00
Pedro Pinto 1e794aaa12 Refactored. 2021-02-05 20:30:16 -05:00
Pedro Pinto 1297b97b2d Fixed build. 2021-02-05 20:06:18 -05:00
Pedro Pinto ca80857607 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2021-02-05 18:41:02 -05:00
Pedro Pinto 417e331e8e Cleaned up mdp3. 2021-02-05 18:37:12 -05:00
taha 8602da1753 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2021-02-05 00:25:21 -06:00
taha 0c9af3ffee Added order key to 2 log messages 2021-02-05 00:25:15 -06:00
John Colvin 12ba2a2724 fix (cli): Add md->channels subcmd 2021-02-04 13:08:39 -06:00
Pedro Pinto e892b8b3e5 Towards il3 new 2021-02-04 13:49:17 -05:00
John Colvin 8d91d597fe fix: Repair 'sparkd run' cmd (so client/ui can connect)
This was broken in the cli11 revamp.
2021-02-03 23:59:54 -06:00
Pedro Pinto b8f146364b Windows continues to suck ass. 2021-02-03 16:17:28 -05:00
Pedro Pinto 3866f8709f Fucking windows include order bullshit. 2021-02-03 16:17:14 -05:00
Pedro Pinto 0eeffd1984 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2021-02-03 14:54:24 -05:00
Pedro Pinto b15973b00c Adding market segment id. 2021-02-03 14:54:08 -05:00
Pedro Pinto ddf65972c0 Trying to fix windows build. 2021-02-03 14:52:05 -05:00
Taha Afzal c10bf44bfc Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2021-02-03 14:46:35 -05:00
Taha Afzal 4bf9be860b comments added for sniper 2021-02-03 14:46:29 -05:00
Pedro Pinto e0313958b3 Merged 2021-02-03 11:15:57 -05:00
Pedro Pinto cda4c522fd Some refactoring in il3 store. 2021-02-03 11:12:44 -05:00
Taha Afzal 38bd2ac74c Removing sim switch for security names 2021-02-02 20:31:42 -06:00
Pedro Pinto 36da47f66e MDP3 refactoring. 2021-02-02 14:11:04 -05:00
Taha Afzal 805efc912e Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2021-02-02 13:37:59 -05:00
Taha Afzal 3642dbcd86 more guard rails 2021-02-02 13:37:37 -05:00
Pedro Pinto d3cfe1f6e1 Refactor. 2021-02-02 09:43:09 -05:00
John Colvin 88acbdd8b9 refactor: Replace std::maps with boost flat_maps in Trace 2021-02-01 23:44:21 -06:00
John Colvin 214f2667f2 vscode: Reference clang symbols/include paths in c_cpp_properties 2021-02-01 23:44:21 -06:00
John Colvin 7b16cc9d7b fix: Clear used_order_keys in Matcher::clear 2021-02-01 23:44:21 -06:00
John Colvin 9035ed453f vscode: Add spartan dir to include/browse paths 2021-02-01 23:44:21 -06:00
John Colvin b0affc8611 Add BookLevel != operator
Define both == and != operators in BookLevel.cc
2021-02-01 23:44:21 -06:00
John Colvin 09fb35c80b refactor: Move Quantity method/op defs to Quantity.cc
Also restyle code in a manner similar to that of the Price operator
code (it's a little cleaner, and brings about consistency).
2021-02-01 23:44:21 -06:00
John Colvin 6badc8099f refactor: Make ValueWrapper constructors constexpr 2021-02-01 23:44:21 -06:00
John Colvin 8520add970 Replace includes with fwd declarations in FifoMatcherContext 2021-02-01 23:44:21 -06:00
John Colvin 058b4d0020 refactor: Move MatcherOrder struct into its own file 2021-02-01 23:44:21 -06:00
John Colvin 68db9e1254 refactor: Make FifoMatcherContext a class instead of struct 2021-02-01 23:44:21 -06:00
John Colvin 0cddda43f2 Replace includes with fwd declarations in FifoMergedSecurityMatcher 2021-02-01 23:44:21 -06:00
John Colvin 077ce786cb refactor: Rename 'fill_depot' files 'FillDepot' 2021-02-01 23:44:21 -06:00
John Colvin 46de6b8d8b Optimize FifoMergedSecurityMatcher logging
* Reduce string copying by using fmt::format

* Shorten log header prefix (messages that fit on one line are easier to
  read)
2021-02-01 23:44:21 -06:00
John Colvin 1aea4beffe refactor: Matcher conveys updates with OrderModification struct
The OrderModification explicitly indicates which order properties have
changed, so the FifoSecurityMatcher does not need to infer this
information from arbitrary signals in the OrderUpdate.
2021-02-01 23:44:21 -06:00
John Colvin 38a5341d08 fix: Don't automatically reset show qty on passive updates 2021-02-01 23:44:21 -06:00
John Colvin 17752dcce1 refactor: FifoImpliedSecurityMatcher uses new LegDefinition type 2021-02-01 23:44:21 -06:00
John Colvin 1aedac39fd fix: FifoSecurityMatcher::book_side only includes visible qty 2021-02-01 23:44:21 -06:00
John Colvin 1cfb7ee6a4 refactor: Re-implement implied market logic in 'ImpliedMarketModel' 2021-02-01 23:44:21 -06:00
John Colvin 290b5d9da2 refactor: Clean up FifoImpliedSecurityMatcher
* Remove dependency on symbol (was only there to make logs prettier, but
  sec id alone provides sufficient information)

* Remove several includes from the header to reduce compilation overhead
2021-02-01 23:44:21 -06:00
John Colvin b66241b006 Remove unused method in FifoMergedSecurityMatcher 2021-02-01 23:44:21 -06:00
John Colvin cf615efcd0 refactor: Move LegDef into its own file
The struct is renamed 'LegDefinition' to use a naming scheme consistent
with 'SecurityDefinition.'  However, an alias for 'LegDef' is
declared for convenience, and to avoid replacing 'LegDef' with
'LegDefinition' in existing references.
2021-02-01 23:44:21 -06:00
John Colvin c57b832305 fix: Only flip implied_candidates_dirty when they've actually changed 2021-02-01 23:44:21 -06:00
John Colvin e5c3ae1f9f Add permutation 'of length' method, and permutation unit tests 2021-02-01 23:44:21 -06:00
John Colvin e9232e3bae Add math utils 'factorial' and 'choose' 2021-02-01 23:44:21 -06:00
John Colvin f4bb9544d4 fix: Fill same-priced passive icebergs evenly
When an agressor order crosses multiple [direct/implied] passive markets
at the same price, the aggressor is filled against the visible quantity
in each passive market, before passive icebergs (if any) are reloaded.
This simple iterative step is repeated until the aggressor is filled, or
no longer crosses the market.
2021-02-01 23:44:21 -06:00
John Colvin 28aaf22ea8 refactor: Change Matcher structs to be classes instead 2021-02-01 23:44:20 -06:00
John Colvin de49920af7 fix: Don't change show qty when order is filled (matcher) 2021-02-01 23:44:20 -06:00
John Colvin e05c01fc77 Clean up set_total_qty method
* remove unused vars

* replace if/else with ternary operator
2021-02-01 23:44:20 -06:00
John Colvin 9f6dc5da11 Pipe event id through the matcher for better tracing 2021-02-01 23:44:20 -06:00
John Colvin 84c9eb87e6 refactor: Replace size_ts with EventID alias 2021-02-01 23:44:20 -06:00
John Colvin 9f290b550b Pass effects vector to FifoSecurityMatcher calls 2021-02-01 23:44:20 -06:00
John Colvin 6e4950ec1c clang-format: PenaltyReturnTypeOnItsOwnLine
Discourage clang from putting the return type on its own line.
2021-02-01 23:44:20 -06:00
John Colvin c727389f53 refactor: Replace map with unordered_map in Matcher 2021-02-01 23:44:20 -06:00
John Colvin 20e8ac2910 fix: FifoMergedSecurityMatcher handling of icebergs
The iceberg quantity is expected to be null in all updates (i.e., only
non-null when the order is added).  Once added, the iceberg quantity is
redundant, as show qty changes are interpretted through visible qty
changes (the qty actually visible in the book), and the total qty is
immutable.

This patch fixes a bug where the iceberg quantity was not being assigned
back to an updated order before it was passed to the 'fill' method,
which in turn, misled the matcher to think the order was completed when
its visible qty alone was filled.
2021-02-01 23:44:20 -06:00
John Colvin 7e59145102 add TestObserver (IAlgoModel)
This is an empty implementation of IAlgoModel, so new algo ideas may be
tested without the overhead of creating new classes/files.
2021-02-01 23:44:20 -06:00
John Colvin 5e01a37b6e feat (cli): Add cmd to record matcher event proc times 2021-02-01 23:44:20 -06:00
John Colvin 95d2363435 feat (cli): Add cmd to record matcher fills
This works in a similar fasion to the cmd that records matcher books.
Both generate a csv file designed to be imported into a sqlite database,
so the matcher's output may be joined/compared with actual data from the
exchange.
2021-02-01 23:44:20 -06:00
John Colvin 82332bf92f refactor: Replace SimBooks cmd with Matcher->BooksCmd
This is in anticipation of adding a similar subcommand to record fills,
and proc times.  Basic functionality expected to be shared by these
three commands is abstracted out of the former SimBooks command into
common classes.
2021-02-01 23:44:20 -06:00
John Colvin 042c451bd6 refactor: Move classes from sim_common.h into their own files
* Move MatchEffect into 'back_testing/common/MatchEffect.h'
* Move MBPUpdate into 'back_testing/common/MBPUpdate.h/cc'
* Move OrderUpdate into 'back_testing/common/OrderUpdate.h/cc'
2021-02-01 23:44:20 -06:00
John Colvin 3e66c3e5db refactor: Move Fill into domain/fill 2021-02-01 23:44:20 -06:00
John Colvin a6f3852846 refactor: Improve Stopwatch impl 2021-02-01 23:41:23 -06:00
John Colvin 1f622b0c1e Optimize logging in IcebergFileCache
* Replace std::cout call with 'Info' log

* Use const char * templates to reduce string copying
2021-02-01 23:41:23 -06:00
John Colvin 48aaf9de6c refactor: Move iceberg_file_cache to matcher/common/IcebergFileCache
Also change static 'iceberg_file_cache' namespace methods to static
'IcebergFileCache' class methods
2021-02-01 23:41:23 -06:00
John Colvin 8b5e86c1ba refactor: Make Iceberg related structs classes instead
* IcebergInput

* IcebergInputBuilder

* IcebergFinder
2021-02-01 23:41:23 -06:00
John Colvin 2a975c95b2 Account for nan in Price::to_double 2021-02-01 23:41:23 -06:00
John Colvin b89555a2e2 Account for nan in price comparison methods 2021-02-01 23:41:23 -06:00
John Colvin 166ab7d299 refactor: Make ValueWrapper binary ops constexpr 2021-02-01 23:41:23 -06:00
John Colvin d2bf8f1b53 Add security_groups field to SecurityCriteria 2021-02-01 23:41:23 -06:00
John Colvin e363840937 refactor: Rename SecurityCriteriaClause -> SecurityCriteria::Clause 2021-02-01 23:41:23 -06:00
John Colvin d8fb275b20 fix: PCapOrderChangeBootstrapper
Bootstrap observers with resting orders on the first event in which the
security's status transitions to 'ReadyToTrade.' This simplifies the
previous implementation, which did not bootstrap observers until the
security's second consecutive event with 'ReadyToTrade' status.
2021-02-01 23:41:23 -06:00
John Colvin 13719170c9 refactor: Move OrderKey.h into domain/order 2021-02-01 23:41:23 -06:00
John Colvin 2c4db5bf02 refactor: Move Order types into domain/order 2021-02-01 23:41:23 -06:00
John Colvin 7e957527ac Add Price::nan method 2021-02-01 23:07:01 -06:00
John Colvin b94a1d943f refactor: Clean up Price
* Move impl from Price.h to Price.cc

* Make ctrs, methods, ops constexpr (where possible)

* Overload all binary ops to accept Price, or int64 param
2021-02-01 23:07:01 -06:00
John Colvin 3efb4da14b diag: Add Trace parameter to matcher constructor
This makes it easy for matcher-validation commands to bind trace
parameters, such as order/event ids, to cli options.
2021-02-01 22:56:21 -06:00
John Colvin 9c53f4b949 refactor: Move Trace into its own file 2021-02-01 22:56:21 -06:00
John Colvin 35d395fc35 refactor: Hide private matcher members behind PImpl 2021-02-01 22:56:21 -06:00
John Colvin cf19a63aac Delete superfluous move constructor/operator in Matcher 2021-02-01 22:56:21 -06:00
John Colvin 6456060a6c refactor: Define AlgoEventID struct, and EventID alias
A few advantages the struct offers (over an alias for a pair of size_ts):

* A custom output operator

* Eliminates potential conflict with pairs of size_ts that don't
  represent an algo id

* The ability to (eventually) choose precise member names for both
  components of the event, rather than 'first' and 'second'
2021-02-01 22:56:21 -06:00
John Colvin 702547a88b refactor: Revamp 'md' command with CLI11 App
The files 'run_md.h/cpp' are removed, as their functionality is
distributed among the subcommands: md, run, and web.
2021-02-01 22:56:21 -06:00
John Colvin 2447da3c08 refactor: Rename 'map_utils.h' -> 'MapUtils.h/cc'
Also refactor the relevant namespace 'bts::utils' methods to be static
methods in the newly created class 'MapUtils.'  This is part of the
effort to favor static class methods over namespaced functions.
2021-02-01 22:56:21 -06:00
John Colvin 8df420c37c refactor: Rename 'table_display.h' -> 'TableDisplay.h/cc'
Also refactor the namespace 'table_display' methods to be static methods
in the newly created class 'TableDisplay.'  This is part of the effort
to favor static class methods over namespaced functions.
2021-02-01 22:56:21 -06:00
John Colvin d18a345b5b refactor: Rename 'permutation.h' -> 'Permutation.h/cc'
Also refactor the namespace 'all_permutations' methods to be static
methods in the newly created class 'Permutation.'  This is part of
the effort to favor static class methods over namespaced functions.
2021-02-01 22:56:21 -06:00
John Colvin 1770274dd0 refactor: Rename 'action_summarizer' -> 'ActionSummarizer' 2021-02-01 22:56:21 -06:00
John Colvin 746dd506f8 refactor: Rename 'file_stream_utils.h' -> 'FileUtils.h/cc'
Also refactor the namespace 'file_stream_utils' methods to be static
methods in the newly created class 'FileUtils'.  This is part of
the effort to favor static class methods over namespaced functions.
2021-02-01 22:56:21 -06:00
John Colvin 78be0004af refactor: Rename 'reverse_comp.h' -> 'ReverseComp.h' 2021-02-01 22:56:21 -06:00
John Colvin 333a378230 refactor: Rename 'string_splitter.h' -> 'StringUtils.h/cpp'
Also refactor the namespace 'string_splitter' methods to be static
methods in the newly created class 'StringUtils'.  This is part of
the effort to favor static class methods over namespaced functions.
2021-02-01 22:56:21 -06:00
John Colvin 5e8f776334 refactor: Rename dir 'spartan/util' -> 'spartan/utils' 2021-02-01 22:56:21 -06:00
Pedro Pinto 5470a82b94 Real time ilink3 handler code complete. 2021-02-01 20:28:44 -05:00
Pedro Pinto 7959c96bcd Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2021-02-01 13:57:37 -05:00
Pedro Pinto aeb4bec02d Refactored sim types to have a sim prefix. 2021-02-01 13:57:16 -05:00
Taha Afzal b92df15594 Reducing logging 2021-01-30 23:37:29 -06:00
Taha Afzal 86089ec3b4 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2021-01-30 20:04:14 -05:00
Pedro Pinto 2cffaa9d73 Refactored include path for spartan. 2021-01-30 15:11:46 -05:00
Taha Afzal 94da28c5cc Better log messages 2021-01-29 22:41:58 -05:00
Pedro Pinto 86b7f30e0e Towards realtime il3 handler. 2021-01-29 15:22:32 -05:00
Taha Afzal e5b01ad92f Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2021-01-29 11:28:41 -05:00
Taha Afzal 9d381c2848 Sniper code complete 2021-01-29 11:28:35 -05:00
Pedro Pinto f81c0280e4 Initial cert tests pass. 2021-01-28 22:35:16 -05:00
Pedro Pinto b13ffff044 Tests work for il3 connection setup. 2021-01-27 20:56:37 -05:00
Pedro Pinto d068ac40ec Am able to set party details. 2021-01-27 14:27:23 -05:00
Pedro Pinto db5e428709 Starting to test il3. 2021-01-25 16:42:32 -05:00
Pedro Pinto 77396111aa Can build. 2021-01-25 12:57:22 -05:00
Taha Afzal 7af05e3f4a Cleaned up, tested a fair bit, few (safety related) features to come 2021-01-24 21:56:34 -05:00
Pedro Pinto 8665ad24c1 Refactored. 2021-01-22 14:59:35 -05:00
Pedro Pinto 72e6e11238 Towards il3 gateway. 2021-01-20 16:49:07 -05:00
Taha Afzal 3468201f32 Moving sniper data and initialization to SniperAlgoCommon 2021-01-18 20:43:31 -05:00
Pedro Pinto fb7496aaf2 Added commission model to sim. 2021-01-18 15:21:03 -05:00
Pedro Pinto 9193653773 Added new spartan 'test' subcommand. 2021-01-18 15:20:47 -05:00
Pedro Pinto a80641f8f4 Added testing note to docs. 2021-01-16 16:04:27 -05:00
Pedro Pinto eb7f1ba9ee Disabled IB cross test. 2021-01-16 12:38:19 -05:00
Pedro Pinto 39820205ce Market matcher tests as part of spartan. 2021-01-16 12:33:38 -05:00
Pedro Pinto 2cffcb4e25 Merged 2021-01-16 12:32:34 -05:00
Pedro Pinto 2d2c664ce9 More il3 gateway work. 2021-01-16 11:53:04 -05:00
John Colvin ca4e477f56 fix: CLI11 integration
* Run 'sparkd tests' outside of the CLI::App framework
  (delegate to 'catch', which has a solid cli).  This
  fixes a bug which prevented callers from specifying
  test tags (in the form of '[<tag>]'), as the CLI::App's
  parse method removes square brackets from cli options.

* Bind cli options to instance members of their subcommand's
  CLI::App derived class.  This seems to fix a bug which caused
  the [static instance] binding source to be destructed twice.

 * Add help text for several subcommands
2021-01-16 00:01:15 -06:00
Pedro Pinto 3ec36c4db1 Refactoring IReactorConnection and friends. 2021-01-15 09:41:11 -05:00
Pedro Pinto d593696df2 Tagged spartan tests. 2021-01-15 08:49:28 -05:00
John Colvin 45de55a552 Remove unused files 'args_parser.h/cpp' 2021-01-15 00:32:55 -06:00
John Colvin 17d20bac8b Remove unused file 'ImpliedFifoSecurityMatcher.h'
This was an old version of the implied fifo matcher,
now defined in 'FifoImpliedSecurityMatcher.h'.
2021-01-15 00:32:55 -06:00
John Colvin f42137d86c Don't assert that an iceberg order's vis qty <= show qty
There isn't a compelling reason to enforce this
constraint.  The show qty is the 'reload' qty, and
is orthogonal to the current [visible] qty.
2021-01-15 00:32:55 -06:00
John Colvin 456177af30 typo: Flip ternary op clauses, and delete superfluous 'return' 2021-01-15 00:32:55 -06:00
John Colvin 41374d62ea spartan cli: Add SimBooks command
This command is a diagnostic tool that produces a
csv file of matcher-generated books for a
particular pcap, which can then be imported to
sql, and joined with the actual books table for
comparison.
2021-01-15 00:32:55 -06:00
John Colvin 25395fcac3 refactor: Replace api::Side w/ spartan::Side 2021-01-15 00:32:55 -06:00
John Colvin 9b49c66136 fix: Require valid side param in 'has_min_qty' method
Although the side can be inferred by comparing the
first two price levels, the book may not have two
price levels to compare.
2021-01-15 00:32:55 -06:00
John Colvin 36bfc9e770 Add SecurityCriteria struct to filter instrument sets
Inspired by the c# 'SecurityCriteria' class from
spark's front end.  This may come in handy as a cli
option for spartan subcommands, among other things.
2021-01-15 00:32:55 -06:00
John Colvin 2a04341b3b Allow for non-null, or non-empty effects vector in 'match' method 2021-01-15 00:07:02 -06:00
John Colvin c0a7f1b3fe refactor: Use c++ 'char_traits::length' instead of c 'strlen' 2021-01-15 00:07:02 -06:00
John Colvin 66e1b94d1b refactor: Revamp cli with CLI11 App 2021-01-15 00:07:02 -06:00
John Colvin 25e07d0a60 refactor: Move BookStatRecorder into 'feed_observers' dir 2021-01-14 21:25:14 -06:00
Pedro Pinto 2731f2b287 Fixed weird duplicate symbol issue. 2021-01-14 13:53:31 -05:00
Pedro Pinto 5140cb1c2c Towards an order gateway. 2021-01-14 13:09:39 -05:00
Pedro Pinto e11566537c More refactoring. 2021-01-13 14:50:29 -05:00
Pedro Pinto b884dc910e Refactor MDP3 feed handler types. 2021-01-13 14:48:13 -05:00
Pedro Pinto 35cefe3b89 Added IL3 Parser. 2021-01-13 12:04:34 -05:00
Pedro Pinto 96af106a9d Refactored MDP3Parser 2021-01-13 11:16:23 -05:00
Pedro Pinto ac5d961a70 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2021-01-13 09:47:34 -05:00
Pedro Pinto 8f4e529766 Refactoring SBE parsing. 2021-01-13 09:47:23 -05:00
Taha Afzal 19a7e2898e normalizing ticks/price/cash in the report 2021-01-12 18:12:45 -05:00
Pedro Pinto 0ef29c181a Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2021-01-12 15:48:10 -05:00
Pedro Pinto 81d3d5f11d Adding ilink3 notes 2021-01-12 15:47:54 -05:00
Pedro Pinto c4e0518228 Whitespace. 2021-01-12 11:57:45 -05:00
Taha Afzal 121b7df59e Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2021-01-12 11:28:21 -05:00
Taha Afzal 6740f6b1fb Adding status col to polygon_values 2021-01-12 11:27:52 -05:00
Pedro Pinto 5a7a267daf Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2021-01-12 11:10:59 -05:00
Pedro Pinto fb1040fb2c Cleaned up generation of mdp3 files. 2021-01-12 11:10:39 -05:00
Taha Afzal ecad5518eb Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2021-01-12 11:10:37 -05:00
Taha Afzal 4361e2277a vid constraint on polygon values 2021-01-12 11:10:24 -05:00
Pedro Pinto 7d7e25fd25 More refactoring. 2021-01-12 10:38:59 -05:00
Pedro Pinto 8f0cfe2c2a Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2021-01-12 10:32:10 -05:00
Pedro Pinto c470c5f161 Cleaned up iLink3 code generation. 2021-01-12 10:31:36 -05:00
Taha Afzal 2302e5f37e Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2021-01-12 09:40:19 -05:00
Pedro Pinto fc1b84f966 Refactor of directory names. 2021-01-12 09:02:50 -05:00
Pedro Pinto 25ad869030 Adding iLink3 generation code 2021-01-12 08:57:16 -05:00
Taha Afzal a35559da30 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2021-01-11 22:35:18 -05:00
Taha Afzal 0103abbec3 merging 2021-01-11 22:34:57 -05:00
Pedro Pinto ee725747ad Added trade summary signal 2021-01-11 13:23:28 -05:00
Taha Afzal ef0f044e8d Adding more data to polygon_values 2021-01-11 12:58:23 -05:00
Pedro Pinto d42b72ea79 Added Trade summary signal to spartan. 2021-01-11 11:56:52 -05:00
Pedro Pinto f177441d07 Refactored. 2021-01-11 10:14:38 -05:00
Pedro Pinto 939c6442be Added book signa to realtime handler. 2021-01-11 10:10:35 -05:00
Pedro Pinto 33dad3db73 More book tweaks. 2021-01-10 18:02:25 -05:00
Pedro Pinto ef296d4b1c More clean up. 2021-01-10 17:21:15 -05:00
Pedro Pinto 58fbb8e04f Cleaning up book merging. 2021-01-10 17:17:45 -05:00
Pedro Pinto 0200b53c3e Refactored Book class. 2021-01-10 14:16:48 -05:00
Pedro Pinto cdaef11761 Refactored Book class. More to follow. 2021-01-10 14:16:27 -05:00
Pedro Pinto 853d9f8ddd Refactor Book. 2021-01-08 20:29:30 -05:00
Pedro Pinto 61aac1f1b2 Refactoring book. 2021-01-08 19:37:45 -05:00
Pedro Pinto 48f33e7e4c Added some comments. 2021-01-08 18:20:57 -05:00
Pedro Pinto 216ebb2454 Moved security snapshot to domain. 2021-01-08 18:17:54 -05:00
Pedro Pinto 5c36f21f06 Refactored. 2021-01-08 18:13:04 -05:00
Pedro Pinto 66360844b2 Refactor. 2021-01-08 14:58:10 -05:00
Pedro Pinto 8eae549af3 Refactor 2021-01-08 14:49:58 -05:00
Pedro Pinto 721bc6d68f Refactor. 2021-01-08 14:43:53 -05:00
Pedro Pinto b7d7b3dceb Refactored. 2021-01-08 14:27:36 -05:00
Pedro Pinto d3ad5ee823 Refactor. 2021-01-08 14:06:00 -05:00
Pedro Pinto c119b4b6ef Refactor. 2021-01-08 13:52:37 -05:00
Pedro Pinto 9aa5e6435d Cleaned up quicktest. 2021-01-08 10:57:29 -05:00
Pedro Pinto b4eced0cd3 Set buffer size and non blocking option on reactor. 2021-01-08 10:57:03 -05:00
Pedro Pinto 1f159aacf0 Getting market data from the wire. 2021-01-08 10:37:07 -05:00
Pedro Pinto d2ed70b6dd Added a few comments. 2021-01-08 10:36:24 -05:00
Pedro Pinto 76be885a60 Algoman. 2021-01-07 17:56:50 -05:00
Pedro Pinto f7173cd477 Towards algoman 2021-01-06 16:11:46 -05:00
Pedro Pinto b448db51f4 More refactor. 2021-01-06 09:15:25 -05:00
Pedro Pinto a413b2401b Refactor. 2021-01-06 09:11:33 -05:00
Pedro Pinto 37a673d336 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2021-01-05 11:35:39 -05:00
Pedro Pinto 37cb60a777 Refactor. 2021-01-05 11:35:24 -05:00
Pedro Pinto 18fc857b78 Towards algoman. 2021-01-05 11:34:27 -05:00
Taha Afzal aa4912bba9 Opp summary 2021-01-05 10:17:15 -05:00
Pedro Pinto 7eff7f89d1 Towards an algo framework. 2021-01-04 14:58:24 -05:00
Taha Afzal 9010003a0d Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2021-01-04 10:07:10 -05:00
Taha Afzal 9a0bc05b8b Added edge filter for static analysis 2021-01-04 10:06:51 -05:00
Pedro Pinto 0e4327c3f9 Merged 2021-01-04 09:36:24 -05:00
Pedro Pinto cc9b4b874c Renamed MDP3Price to Price. 2021-01-04 09:04:35 -05:00
Pedro Pinto 333609d23a Renamed MDP3Price::price() to MDP3Price::to_double() 2021-01-04 08:56:48 -05:00
Pedro Pinto 1f7e682900 Fixed some tests that were using MDP3Price. 2021-01-04 08:53:00 -05:00
John Colvin 635d4196f1 build: Resolve QuantityTag template parameter conflict
The linker was mixing up the QuantityTag template
parameter structs declared in the aliases
'bts::Quantity,' and 'bts::spartan::mdp3::Quantity.'
2021-01-03 22:46:02 -06:00
John Colvin 3f7ce90cef spartan cli: Add 'book_stats' command
Generates a csv file consisting of basic stats
about each book update (one row per per update).
2021-01-03 22:46:02 -06:00
John Colvin 1c8859ced6 Inline 'event_flags_name' method 2021-01-03 22:35:50 -06:00
John Colvin 04257535e1 clang-format: Add 'AlwaysBreakTemplateDeclarations: true' 2021-01-03 22:34:37 -06:00
John Colvin ae71fb9c33 Overload Formatter::join to accept ostream&
* Existing join methods all create and return a
  string, while the overload passes values directly
  to the ostream&, and avoids creating/copying a string.

* This will come in handy when creating csv rows.
2021-01-03 22:34:31 -06:00
Pedro Pinto 8f68e5afaf Dowgraded default filter message in polygons to Info. 2021-01-03 17:10:50 -05:00
Pedro Pinto 23160f7843 Fixed bug in algo effect sort order. 2021-01-03 17:10:17 -05:00
Taha Afzal 2788e39cd6 Refining the pandas code for sniper analysis 2021-01-01 20:15:28 -05:00
Pedro Pinto e536cae63a Droppped md::IntPrice in favour od MDP3Price. 2021-01-01 16:32:22 -05:00
Taha Afzal e6b96b3fc3 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2021-01-01 12:56:52 -05:00
Taha Afzal 6d357c8d22 One place to look at static analysis of sniper opportunuities 2021-01-01 12:56:44 -05:00
Pedro Pinto 02dcd57817 IntPrice 2020-12-31 17:17:54 -05:00
Pedro Pinto 7a2c5425a1 Towards replacing md::IntPrice 2020-12-31 17:13:31 -05:00
Pedro Pinto 8b667e056c Removed security db class. 2020-12-31 17:01:29 -05:00
Pedro Pinto 125fe90aaf Refactored instrument definition. 2020-12-31 16:56:47 -05:00
Pedro Pinto c7a4d08372 Working on instrument definition. 2020-12-31 16:01:38 -05:00
Pedro Pinto d2bae92e92 Refactored. 2020-12-31 13:07:21 -05:00
Pedro Pinto 9ff4c81a11 More refactor. 2020-12-31 12:15:24 -05:00
Pedro Pinto bda105c550 Merged 2020-12-31 12:08:17 -05:00
Pedro Pinto df36b6d24f Refactored iceberg quantity. 2020-12-31 12:06:33 -05:00
Pedro Pinto b34ef9283d Refactored quantity. 2020-12-31 11:57:22 -05:00
Pedro Pinto 7e13e8cb67 More refactoring. 2020-12-31 11:48:21 -05:00
Taha Afzal a51f96cc6f Added product to polygon values 2020-12-31 01:43:07 -05:00
Taha Afzal 99ea103944 merging 2020-12-31 00:34:55 -05:00
Taha Afzal 3b2e5e5d95 Spartan run with sql option, can optionally (based on config) not write the books to the database 2020-12-30 23:24:46 -05:00
Pedro Pinto e06ce66513 Refactor MDP3TimeStamp to TimeStamp. 2020-12-30 21:11:00 -05:00
Pedro Pinto 738862cb22 Tweaked header layout. 2020-12-30 17:32:41 -05:00
Pedro Pinto de063e51f0 Another clang-format run, changed how parameters are binned 2020-12-30 17:30:10 -05:00
Pedro Pinto 8f21a77150 Ran clang-format across all files 2020-12-30 17:11:18 -05:00
Pedro Pinto a27321df2e Apparently you need a newline at the end of afile 2020-12-30 16:50:01 -05:00
Pedro Pinto 0fb7ba5987 Ran clang-format on spartan, changed format defaults. 2020-12-30 16:30:37 -05:00
Pedro Pinto a0a508e64f More documentation. 2020-12-30 16:16:46 -05:00
Pedro Pinto d8a80419eb Added some documentatio, run clang-format on iLink3 code. 2020-12-30 14:22:56 -05:00
Pedro Pinto 862df2efb6 Made MDP3 compression tolerant of data loss. 2020-12-30 14:02:08 -05:00
Pedro Pinto 9dcbab9628 Refactor. 2020-12-29 20:02:04 -05:00
Pedro Pinto ae7b25e120 Refactor. 2020-12-29 20:01:48 -05:00
Pedro Pinto bb1e7df7a9 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-12-29 17:15:38 -05:00
John Colvin b620d33f98 fix build: correct typo 'view' -> 'views'
Both 'view' and 'views' are namespaces within
the 'ranges' namespace.  They contain some methods
with identitical signatures, although those in
the former are deprecated.
2020-12-29 16:10:18 -06:00
Pedro Pinto 19b5004920 Merged 2020-12-29 16:46:49 -05:00
John Colvin 337fb2ae45 Restore (uncomment) iceberg impl in Sim
The bug that was the reason it was originally commented out
has been fixed.
2020-12-29 12:58:24 -06:00
John Colvin e87d4a796a fix: IcebergFinder bootstraps with 'orders' instead of 'order_changes' 2020-12-29 12:58:24 -06:00
John Colvin a419ee9ed1 cli: Make icebergs_csv cmd's columns match those in sql 2020-12-29 12:58:24 -06:00
John Colvin 2fe6e3dcab cli: Make icebergs_csv command always generate new csv
Change the command so it does not attempt to retrieve the
icebergs from a bin file before observing the pcap, nor does it
write the icebergs to a bin file after observation.  This behavior
was originally intended as a way to avoid wasting time regenerating
the same set of icebergs when pcap observation was significantly slower.
2020-12-29 12:58:24 -06:00
John Colvin 262b6352a6 test: Add unit tests for synth book computation 2020-12-29 12:58:24 -06:00
John Colvin a18d29b66a Add several MDP3Quantity int binary operators 2020-12-29 12:58:24 -06:00
John Colvin b464b9ab88 Overload SidePriceComp '()' operator for SmallBookLevel 2020-12-29 12:58:24 -06:00
John Colvin 8bf8b6b36e Clean up, and optimize compute_synthetic_book method
* Improve code-readability

* Add documentation

* Avoid copying leg books
2020-12-29 12:58:24 -06:00
John Colvin cbd10c7a7c Refactor book_utils::fmt_ladder
* use md::IntPrice/MDP3Quantity rather than double/uint32_t

* overload fmt_ladder to accept a single book-side, and an
  optional 'side' argument.  If 'side' isn't specified, deduce
  the side by comparing 2 price levels.
2020-12-29 12:54:47 -06:00
John Colvin a6bfa8f976 fix: compute_synthetic_book sometimes only populates 1st price level
Incorrect 'limiting factor' logic was causing the method to exit
when the qty in the first price level of the first leg was used.
2020-12-29 12:54:47 -06:00
John Colvin 8850d7d188 fix: running_cost accumulation in 'change_unit_qty' method 2020-12-29 12:54:47 -06:00
Taha Afzal 9b62a70c8f PolygonFinder can be parameterized for symbols(assets), expirations 2020-12-29 12:54:47 -06:00
Taha Afzal 950887851a Added a product list config for polygon generation 2020-12-29 12:54:47 -06:00
Pedro Pinto 6f5c41ca14 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-12-29 08:06:54 -05:00
Pedro Pinto 5223529af1 Sorted match effects so that price updates are delivered before order updates. 2020-12-29 08:06:27 -05:00
Taha Afzal 2632d7ea9f Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-12-28 23:17:28 -05:00
Taha Afzal de60a0abd1 PolygonFinder can be parameterized for symbols(assets), expirations 2020-12-28 23:17:23 -05:00
Pedro Pinto c4e4ff57d8 Multiple changes to sniper including use of quantity in shot selection. 2020-12-28 20:06:43 -05:00
Pedro Pinto b6f108f7ea More precise alignment of sim time and pcap time. 2020-12-28 20:05:33 -05:00
Pedro Pinto 96c39e68ee More deterministic names for polygons. 2020-12-28 20:03:49 -05:00
Pedro Pinto a3d5e63fb6 DB Fixes. 2020-12-28 20:03:35 -05:00
Pedro Pinto c1be834e54 Changed logging. 2020-12-28 20:02:48 -05:00
Pedro Pinto caf0914b4d Better names for sim time. 2020-12-28 20:02:24 -05:00
Pedro Pinto 0fc522f8c2 Removed commented out code. 2020-12-25 13:41:46 -05:00
Pedro Pinto a247f7e396 Re-enabling all polygons. 2020-12-25 13:36:45 -05:00
John Colvin 03d5047798 fix: compute_synthetic_book sometimes only populates 1st price level
Incorrect 'limiting factor' logic was causing the method to exit
when the qty in the first price level of the first leg was used.
2020-12-24 14:22:58 -06:00
John Colvin 391b8ece7a fix: running_cost accumulation in 'change_unit_qty' method 2020-12-24 14:22:42 -06:00
Taha Afzal 7d75654cf0 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-12-24 12:53:31 -05:00
Taha Afzal 6a46ad2b0e Added a product list config for polygon generation 2020-12-24 12:53:27 -05:00
Pedro Pinto e413ad216e Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-12-24 10:44:43 -05:00
Pedro Pinto d582005d64 Added assert to make sure books are correct. 2020-12-24 10:44:29 -05:00
Pedro Pinto 02fa07552b Added expiration to instrument definition. 2020-12-24 10:44:08 -05:00
Taha Afzal b032926581 hooking polygon book calc to polygon_values 2020-12-23 18:05:03 -05:00
Pedro Pinto 189cb66daf Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-12-23 14:24:47 -05:00
Pedro Pinto 36f1df58f0 Intermediate commit. 2020-12-23 14:24:23 -05:00
Taha Afzal 8489eda3a6 Merging 2020-12-23 12:42:37 -05:00
Taha Afzal 3e189a751d Allow negative payups 2020-12-23 12:32:45 -05:00
Pedro Pinto b2f6be6d10 Added back all polygons, had a temp break to debug synth book. 2020-12-23 12:22:48 -05:00
John Colvin b656632e86 fix: synthetic book computation
* the fix was technically in the 'change_unit_qty' method,
  which is called from 'compute_synthetic_books.'

* Although the 'change_unit_qty' method was correctly dividing
  quantity by 'unit_qty', it was not scaling the prices.
2020-12-23 10:28:59 -06:00
John Colvin 22cf50282c .vscode: change python interpreter path setting 2020-12-23 10:28:59 -06:00
Taha Afzal 7650e15a52 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-12-23 10:55:20 -05:00
Taha Afzal 235d6ecd2f Polygon values have legs books (as text columns), and synthetic books. There is a also new view that joins polygon values with events 2020-12-23 10:55:10 -05:00
Pedro Pinto c9a0d4489b Added max loss, added start/stop times for simulation, added price only order changes. 2020-12-22 10:58:05 -05:00
Pedro Pinto c6697b82fe Added code to convert ptime to mdp3 time. 2020-12-22 10:56:16 -05:00
Pedro Pinto e0231c7dd5 Fixed PCapReader destructor. 2020-12-22 10:55:42 -05:00
Pedro Pinto f3bcbf85dd Reduced console logging. 2020-12-21 10:16:41 -05:00
Pedro Pinto 7e04f9a5b3 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-12-21 10:00:13 -05:00
Pedro Pinto 1835d490a3 Added the ida of parameter sets in the simulator. 2020-12-21 09:59:38 -05:00
Taha Afzal 36bf94aad9 placeholder orders are not fired in file mode 2020-12-18 09:17:28 -05:00
Taha Afzal 468df062c3 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-12-17 12:15:27 -05:00
Taha Afzal 544a9212cf Sniper launched placeholder orders that are then used to snipe 2020-12-17 12:15:19 -05:00
Pedro Pinto 822f43c5a1 Better logging of shot sequence number. 2020-12-17 10:22:53 -05:00
Pedro Pinto 85106cb293 Better logging of clean/saved/forced shots. 2020-12-17 10:22:33 -05:00
Pedro Pinto ebd0fa4809 Added utility to parse performance logs. 2020-12-17 09:40:04 -05:00
Pedro Pinto 43f4fe2011 Better logging for sniper model. 2020-12-17 09:39:41 -05:00
Taha Afzal ffcebdf94a Perf logs in the sniper 2020-12-16 00:05:31 -05:00
Pedro Pinto 0e7b104c76 Added more performance logging. 2020-12-15 18:04:10 -05:00
Pedro Pinto f0b76f244c Added packet structure to sql DB. 2020-12-15 17:01:27 -05:00
Pedro Pinto e4dc9103e1 Fixed typo in md.sql 2020-12-15 14:17:42 -05:00
Pedro Pinto afb88122ad Added performance logging. 2020-12-15 13:40:08 -05:00
Pedro Pinto 18a0fa7fb9 Tweak to md sql DB. 2020-12-15 13:34:55 -05:00
Pedro Pinto b491b2b4cd Added seq numbers to top of the book and opportunity views. 2020-12-15 09:45:53 -05:00
Pedro Pinto 4b1e9afe28 Corrected corid for trade summary signal. 2020-12-15 09:45:35 -05:00
Pedro Pinto abb9a56761 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-12-14 11:56:52 -05:00
Pedro Pinto 09505b2005 Added pause between shots, added clean flag to shot outcome. 2020-12-14 11:56:37 -05:00
Pedro Pinto e3a9adbf3f Fixed clean up of sim db. 2020-12-14 11:55:47 -05:00
Taha Afzal 9aafed66c0 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-12-14 10:50:15 -05:00
Taha Afzal a259aa8419 Lookeahd book top guessed aggressively 2020-12-14 10:50:06 -05:00
Pedro Pinto 4daf6e127e Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-12-14 10:32:52 -05:00
Pedro Pinto 1ac36e932e Fixed unbuscription from trade signal on algo termination. 2020-12-14 10:32:26 -05:00
Pedro Pinto 23b038a6a7 Optionall automatically clear previous runs from sim_db. 2020-12-14 10:17:54 -05:00
Pedro Pinto e2069c8584 Fixed key remapping in sim. 2020-12-14 10:17:25 -05:00
Pedro Pinto 525cf4652e Removed old proto from include. 2020-12-14 10:17:07 -05:00
Pedro Pinto 6eb3595294 Added sniper_run view to sim_db. 2020-12-14 10:16:14 -05:00
Taha Afzal 8c421d0726 Slight log change 2020-12-14 10:15:12 -05:00
Pedro Pinto 870c69b834 Removed incorrect assertions. 2020-12-13 18:08:09 -05:00
Pedro Pinto 4f39307b9b Disabled icebergs because of show quantity set to 0. 2020-12-13 18:07:37 -05:00
Pedro Pinto b687e339a4 Improved logging during sniper run. 2020-12-13 18:07:11 -05:00
Pedro Pinto 8623f2369f Fixed a bug in sniper model. 2020-12-13 18:06:56 -05:00
Taha Afzal 7eade56042 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-12-13 16:29:08 -05:00
Taha Afzal 1091c983f9 More logs 2020-12-13 16:29:02 -05:00
Pedro Pinto 533ca3e601 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-12-13 10:33:21 -05:00
Pedro Pinto e4b8594d44 Ran clang format. 2020-12-13 10:33:07 -05:00
Taha Afzal 22e5a53e32 FillType flag 2020-12-12 21:48:22 -05:00
Pedro Pinto 6c5f5116b4 Tweaked 'shots' view in sim db. 2020-12-12 20:03:51 -05:00
Pedro Pinto b5e455ff75 Adjusted polygon filter to include dec/march. 2020-12-12 19:20:18 -05:00
Pedro Pinto 03cd5c164f Improved caching of pcap data during simulations. 2020-12-12 19:19:26 -05:00
Pedro Pinto c4aa99636e Added pay up to sniper model. 2020-12-11 19:45:16 -05:00
Pedro Pinto ed0eb9be19 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-12-11 14:13:32 -05:00
Pedro Pinto d155f8ed12 Tweaked python analysis tools. 2020-12-11 14:12:32 -05:00
Pedro Pinto ffcfe3cf9c Added more parameters to sim db. 2020-12-11 14:11:59 -05:00
Taha Afzal d848a15217 lookahead diagnostics log 2020-12-11 11:03:55 -05:00
Taha Afzal 951f8e9442 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-12-11 10:00:58 -05:00
Taha Afzal f10f46b811 corid and use_lookahead logged 2020-12-11 10:00:50 -05:00
Pedro Pinto d7e80a1303 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-12-10 22:24:09 -05:00
Pedro Pinto de0d6c5891 Cleaned up sniper model 2020-12-10 22:21:52 -05:00
Pedro Pinto 4e7c0122d7 Cache preload of sim. 2020-12-10 22:21:07 -05:00
Pedro Pinto cb75e46161 Better DBs. 2020-12-10 22:20:11 -05:00
Taha Afzal 6954f5842f Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-12-10 12:36:16 -05:00
Taha Afzal cbc1cc6b5b using trade summs of atleast 2 messages, more logs 2020-12-10 12:35:57 -05:00
Pedro Pinto 3cc2cf0783 Hard coded filtering of polygon opportunities to just the one polygon. 2020-12-10 12:22:46 -05:00
Pedro Pinto b3e7bcf2e1 Fixed iceberg table in sql command. 2020-12-10 12:22:00 -05:00
Pedro Pinto dd3c33387d Forgot to add the number of levels to the actual interface. 2020-12-10 11:02:21 -05:00
Pedro Pinto 84a8f11846 Added number of levels to trade signal. 2020-12-10 10:50:33 -05:00
Pedro Pinto 4d2ba5fc41 Fixed initialization bug in sniper. 2020-12-10 09:10:10 -05:00
Pedro Pinto b980e39ebb Merged 2020-12-10 09:03:14 -05:00
Pedro Pinto 0dc97dd2d9 Refactor part 8. 2020-12-10 08:56:14 -05:00
Pedro Pinto cef6815e5c Refactor, part 8. 2020-12-10 08:47:07 -05:00
Pedro Pinto 4e84b7d789 Refactor, part 7 2020-12-10 08:44:25 -05:00
Pedro Pinto f632fa2e50 Refactor, part 6 2020-12-10 08:42:09 -05:00
Pedro Pinto 1919440a83 Refactor, part 5. 2020-12-10 08:25:26 -05:00
Taha Afzal 1a43dafb2e Evaluating in response to trade summary,improved logs 2020-12-09 18:52:57 -05:00
Taha Afzal bd54f19bdb More logging 2020-12-09 17:13:22 -05:00
Pedro Pinto 5f2e98beed More clean up. 2020-12-09 14:58:55 -05:00
Pedro Pinto f7ea0cd254 Removing old sim code part 3. 2020-12-09 14:51:58 -05:00
Taha Afzal af1ab49219 added sweep test for the sell side 2020-12-09 14:49:57 -05:00
Taha Afzal 2ac74c5e29 Clang build fix, sweep book calc test 2020-12-09 14:35:32 -05:00
Pedro Pinto fb42df3117 Removing old sim, part2 2020-12-09 14:34:31 -05:00
Pedro Pinto 443dacaefb Removing old simulator, part 1. 2020-12-09 14:26:10 -05:00
Taha Afzal 0d5b3d9018 detaching all children before completing the sniper after each shot 2020-12-09 13:15:51 -05:00
Taha Afzal cc75c46b1a sniper turns itself off after shooting 2020-12-09 12:54:35 -05:00
Taha Afzal 1ee60f743e added the cumm price/qty constraint, everything hooked up 2020-12-09 12:11:24 -05:00
Taha Afzal dc8fd8baef Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-12-09 09:55:39 -05:00
Taha Afzal 67b6884200 cumm edge/qty parameter to sniper 2020-12-09 09:55:30 -05:00
Pedro Pinto 03a81280f4 Merged 2020-12-09 08:49:27 -05:00
Pedro Pinto 34675696f3 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-12-09 08:38:44 -05:00
Pedro Pinto 0e1687c853 Changed trade summary signal to include last qty. 2020-12-09 08:38:00 -05:00
John Colvin ccf8a8e492 fix iceberg integration with new simulator
* Sim uses MergedMatcher::reset to inject a particular exchange state
  into the matcher (the matcher does not reset the visible quantity to the
  show quantity in a reset op).

* iceberg_helper::add_iceberg_annotation does not set the visible
  quantity to the show quantity if the order change type is 'added'.
2020-12-09 00:12:31 -06:00
John Colvin a0d0a30ad3 refactor 'is_exhausted' -> 'is_empty' in compute_synthetic_books 2020-12-09 00:11:51 -06:00
John Colvin ff02801000 compute_synthetic_book doesn't copy leg market tuples as it iterates through them 2020-12-09 00:11:51 -06:00
John Colvin 590ca3892d compute_synthetic_book was multiplying leg prices by their qty twice
This is a pre-emptive bug fix, as the method has only been fed synths
with leg quantities +/-1.
2020-12-09 00:11:51 -06:00
John Colvin 1674486dc0 vscode (build): change linux build task to run in docker
* prompts user for configuration (debug or release)

* looks for docker instance named "${USER}s_docker"
2020-12-09 00:11:51 -06:00
John Colvin dc5301f8b0 vscode (intellisense): add build/ninja_debug/src to browse path 2020-12-09 00:11:51 -06:00
Taha Afzal 436f7eefe9 Added logic for book calculation based on sweep 2020-12-09 00:57:34 -05:00
John Colvin 258d4a3fc1 import compute_synthetic_book method from spartan 2020-12-08 23:00:18 -06:00
John Colvin c53f6425cd import IntPrice arithmetic operators from spartan
The compute_synthetic_book method (also to be imported
from spartan) depends on a couple of them.
2020-12-08 22:52:28 -06:00
Taha Afzal fd8bd63f55 Added payup ticks to sniper and logic to alternate bw main book and lookahead book 2020-12-08 21:47:25 -05:00
Pedro Pinto 64b42aef99 Trade summary signal code complete. 2020-12-08 16:01:46 -05:00
Pedro Pinto 1d323ddc37 Fixed bug in parsing a few sim run options. 2020-12-08 11:42:26 -05:00
Pedro Pinto c1331df2fe Fixed cumm qty. 2020-12-08 11:03:19 -05:00
Pedro Pinto cb1946a8d0 Delayed simulation start until first algo order to improve accuracy. 2020-12-08 09:14:54 -05:00
Pedro Pinto 09c043b11f Added some validation for the sniper synth book. 2020-12-08 08:47:16 -05:00
Pedro Pinto 6df3dce95d Commented out the IB annotation until we get it sorted out. 2020-12-07 19:51:00 -05:00
John Colvin 9787f2ed8e Merged in spartan_tas.sim_icebergs (pull request #415)
integrate new IcebergInput logic into sim runs

Approved-by: Pedro Pinto
2020-12-08 00:37:00 +00:00
John Colvin 654f79b42d integrate new IcebergInput logic into sim runs 2020-12-07 17:55:26 -06:00
Taha Afzal 1840120af8 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-12-07 14:31:30 -05:00
Taha Afzal b90ac3d629 Adding jupyter notebooks for ES sniper analysis 2020-12-07 14:31:21 -05:00
Pedro Pinto e846420f9d Fixed bug in valuation 2020-12-07 14:29:49 -05:00
John Colvin 87a7fca75c overload compute_synthetic_book with standard Book type params 2020-12-07 11:22:05 -06:00
Pedro Pinto a9c07ec770 Merged 2020-12-07 11:43:52 -05:00
Pedro Pinto fc2bd8230a Merge branch 'spartan_tas' into sim2 2020-12-07 11:42:38 -05:00
Pedro Pinto 36c2b7b952 Added skelleton for min_cumm_qty and min_cumm_price params. 2020-12-07 11:39:58 -05:00
John Colvin fb3f843309 (vscode) setting: don't configure cmake on open 2020-12-06 20:24:56 -06:00
John Colvin 12eef87fb0 fix typos to remove clang build warnings 2020-12-06 20:24:56 -06:00
Taha Afzal 4c066859c4 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-12-06 20:31:01 -05:00
Taha Afzal b4716db99d Adding synthetic test runner to jason 2020-12-06 20:30:56 -05:00
John Colvin 07f13de58e Merge remote-tracking branch 'origin/sim2' into spartan_tas 2020-12-06 18:09:05 -06:00
Pedro Pinto 92bdb06ceb Integrated commission model.. 2020-12-06 12:41:07 -05:00
John Colvin 256b1aeb59 implement MergedMatcher::clear 2020-12-06 11:30:23 -06:00
John Colvin 9b20c2a230 remove CheckedMatcher struct, replace usage with matcher (was only using the matcher member anyways) 2020-12-06 11:30:23 -06:00
John Colvin 78c3617749 add missing comma to settings.json 2020-12-06 11:30:23 -06:00
John Colvin 9a041af544 MergedMatcher uses new '_asset_matcher' method to remove redundant code 2020-12-06 11:28:35 -06:00
Pedro Pinto 8687de6fa2 Added better logging of param values. 2020-12-06 11:45:59 -05:00
Pedro Pinto c7a4bb461a Sim2 working. 2020-12-05 21:54:34 -05:00
Pedro Pinto c96f142709 Towards simple sim. 2020-12-04 20:57:54 -05:00
John Colvin 6367375ac6 add clear, reset methods to Direct/MergedMatcher (for state injections during sim runs) 2020-12-03 23:51:25 -06:00
John Colvin 0530e50a04 fix documentation of iceberg_helper::add_iceberg_annotation 2020-12-03 18:29:21 -06:00
John Colvin afd05f3c7c add missing comma to generated books csv 2020-12-03 17:11:34 -06:00
John Colvin fff7faab90 added some diagnostic spartan cmds to track down sim_books mismatches 2020-12-03 17:11:34 -06:00
John Colvin e4c36c8470 improve iceberg deduction 2020-12-03 17:11:34 -06:00
Pedro Pinto 11527282c8 Added some matcher validatio helpers. 2020-12-03 08:39:40 -05:00
John Colvin 085764b9a4 add src/.clang-format to .gitignore 2020-12-01 13:44:44 -06:00
Pedro Pinto 96e3c3b9ac Added updated_price only change to possible order changes.
This is needed to facilitate iceberg management.
2020-12-01 13:43:41 -06:00
Pedro Pinto 2c9893c524 Accelerated CSV generation. 2020-12-01 13:42:47 -06:00
John Colvin cbf444d5ed added IcebergStateMapper to determine exact sequence of iceberg state per event id 2020-12-01 13:41:14 -06:00
John Colvin 25e52df136 add create_polygon_books.sql 2020-12-01 12:44:25 -06:00
John Colvin 85afd6966c add some docker scripts (start_docker.sh, docker_bash.sh) 2020-12-01 12:44:25 -06:00
John Colvin 724df36bdc refactor vector<tuple<price,qty>> to SmallBook (vector alias), and SmallBookLevel (actual struct instead of tuple) 2020-12-01 12:44:25 -06:00
John Colvin afb0cdfbaf added SyntheticBookRecorder and polygon_books spartan command 2020-12-01 12:44:22 -06:00
Pedro Pinto 2de4ec6ebe Sim2 and polyobserver agree. 2020-12-01 07:44:59 -05:00
John Colvin 70ca670955 overload 'Formatter::fmt_values' for any Iter type 2020-11-30 22:00:02 -06:00
John Colvin acea32f618 add 'analysis/data' to .gitignore (I symlink this to pcap/sqlite data for jupyter-notebooks) 2020-11-30 22:00:02 -06:00
John Colvin be11f93de7 add src/.clang-format to .gitignore 2020-11-30 22:00:02 -06:00
John Colvin 067ec9b2b9 extracted member functions from FifoImpliedSecurityMatcher into book_utils namespace 2020-11-30 11:33:11 -06:00
Pedro Pinto 398397ca7f Towards self-correcting simulator. 2020-11-29 17:05:45 -05:00
Pedro Pinto 3599fa2b0c Added reference code. 2020-11-21 18:24:17 -05:00
Pedro Pinto f650177758 Towards better pcap DB generation and use. 2020-11-21 18:23:43 -05:00
Pedro Pinto 56227b77d2 Updated .gitignore 2020-11-20 12:18:41 -05:00
Pedro Pinto 9deaf6bc6d More analysis tools 2020-11-20 12:16:50 -05:00
Pedro Pinto 0f4d5a7047 Updated jupyter notebooks 2020-11-19 08:08:02 -05:00
Pedro Pinto b82004cf26 Improved analysis. 2020-11-18 17:09:11 -05:00
Taha Afzal 59a0eba902 Fixing the aggressive order's qty adjustment for icebergs 2020-11-16 12:12:12 -05:00
Taha Afzal e979fc86b2 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-11-16 11:09:55 -05:00
Taha Afzal b28ba12146 Added some comments to the matcher test and traced back the failing test to crossing order (that bnecomes a resting order) bug 2020-11-16 11:09:48 -05:00
Pedro Pinto 4cfd4bec24 Fixed lost fills on aggressor 2020-11-15 15:06:32 -05:00
Pedro Pinto d9aa4eea38 Minor refactor 2020-11-14 17:52:15 -05:00
Pedro Pinto fefe716d2f Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-11-14 12:42:51 -05:00
Pedro Pinto c6c0dc21e2 Added better logging to simulator 2020-11-14 12:42:44 -05:00
Taha Afzal cd6bdb1576 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-11-11 10:22:11 -05:00
Taha Afzal 9266e919b6 Bridge is untested but completed 2020-11-11 10:21:58 -05:00
Pedro Pinto 116131f0a8 Cleaned up and sped up sim log. 2020-11-10 20:06:46 -05:00
Pedro Pinto 7fb644ee3e Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-11-10 12:01:10 -05:00
Pedro Pinto 321550d418 More updates to sim db. 2020-11-10 11:59:59 -05:00
Taha Afzal 4234087c34 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-11-10 11:35:57 -05:00
Taha Afzal bdac6bc3fa Callbacks in the AlgoBridge are routed back 2020-11-10 11:35:45 -05:00
Pedro Pinto 524e83c595 Streamlined sim db schema for easier querying. 2020-11-10 10:49:14 -05:00
Pedro Pinto f9b2f413d7 Accoutend for algo transaction latency in simulation. 2020-11-10 10:48:50 -05:00
Pedro Pinto d2f21c4b36 Deterministic names for polygons. 2020-11-10 10:47:46 -05:00
Pedro Pinto 95d8d8a42d Better logging for sniper. 2020-11-10 10:47:34 -05:00
Pedro Pinto 63a2ba032d Cleaned up some queries in md.sql. 2020-11-10 10:46:52 -05:00
Taha Afzal e8ccd265ca More bridge work 2020-11-10 08:48:56 -05:00
Taha Afzal 2c2968fe1a Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-11-08 23:44:59 -05:00
Taha Afzal 2df07f446b Bridge filling in 2020-11-08 23:44:53 -05:00
Pedro Pinto a906eb951e Mapped order ids to be unique 2020-11-08 11:57:08 -05:00
John Colvin 50f3e39b2f Matcher asserts against duplicate/recycled keys 2020-11-06 19:52:30 -06:00
Pedro Pinto 7c730f7b96 Multiple changes. 2020-11-06 19:17:02 -05:00
Pedro Pinto 7bb19d446d Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-11-06 13:10:45 -05:00
Pedro Pinto 8887962d6f Towards a patient sniper 2020-11-06 13:10:41 -05:00
Taha Afzal 2f032def09 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-11-06 11:50:13 -05:00
Taha Afzal 426781a839 Security translation in the bridge 2020-11-06 11:50:01 -05:00
John Colvin 65b3addfdb FifoMergedSecurityMatcher passes order changes directly to FifoSecurityMatcher when implied_matching is off 2020-11-05 16:48:12 -06:00
Taha Afzal b104326036 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-11-05 16:31:28 -05:00
Taha Afzal 74267bbba9 Filling in the bridge 1 2020-11-05 16:31:22 -05:00
Pedro Pinto 5f454bcd6e Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-11-05 15:52:11 -05:00
Pedro Pinto c300bdcac9 Fixed up md.sql. 2020-11-05 15:51:44 -05:00
John Colvin b85604097d fix matcher partial-fills bug (part 2, fill at actual order price if implied matching is off) 2020-11-05 11:57:58 -06:00
Taha Afzal 89d9585ad8 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-11-05 11:53:30 -05:00
Taha Afzal 8e992a6979 IAlgoServices adapter 2020-11-05 11:53:24 -05:00
Pedro Pinto 51a4aabc09 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-11-04 16:37:49 -05:00
Pedro Pinto b423872e66 More DB work. 2020-11-04 16:37:28 -05:00
John Colvin a5ef9fd3cb fix matcher partial-fills bug 2020-11-04 16:15:56 -05:00
Taha Afzal a48686ce11 Adding corid to logs 2020-11-04 10:55:31 -05:00
Pedro Pinto 440a68cb9b Added correlation id to IAlgoServices. 2020-11-04 08:51:35 -05:00
Pedro Pinto 480fd57ea4 Merged 2020-11-04 08:45:40 -05:00
Pedro Pinto f07e018fbd Many changes. 2020-11-04 08:42:43 -05:00
Taha Afzal 95a2093dc3 SniperPolygon was not getting the pid assigned 2020-11-03 17:34:35 -05:00
Taha Afzal e3ec53c3f3 better logs 2020-11-03 11:16:30 -05:00
Taha Afzal 6d679f302b Adding cancel in no side affect orders 2020-11-02 23:24:01 -05:00
Taha Afzal 85fa61768f Commenting out shooting orders till code review 2020-11-02 23:14:31 -05:00
Taha Afzal 447d1a3997 Bridge work start 2020-11-02 23:07:35 -05:00
Taha Afzal a5520204f5 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-11-01 23:13:28 -05:00
Taha Afzal 9b8ebe32d4 Sniper 1.0 completed 2020-11-01 23:13:22 -05:00
Taha Afzal 7914ed4147 Shooting real order 2020-11-01 10:19:04 -05:00
Pedro Pinto a851dc6bb5 Rigged sniper to terminate simulation early so that we iterate quicker 2020-11-01 09:47:06 -05:00
Pedro Pinto c9d9ab9a20 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-11-01 08:55:32 -05:00
Pedro Pinto 84e75c28e5 More tweaks to DB. 2020-11-01 08:55:21 -05:00
John Colvin 1e6829afc7 fix affect-free matching (actually add hypothetical fills to effects vector) 2020-10-31 12:47:01 -04:00
Pedro Pinto 1d23955868 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-30 18:42:30 -04:00
Pedro Pinto aebe59a69f Added early termination of simulation. 2020-10-30 18:41:53 -04:00
John Colvin 0b125e3299 fix ERROR logging macro in FifoMergedSecurityMatcher 2020-10-30 18:20:01 -04:00
John Colvin 46b4fab4ed FifoMergedSecurityMatcher affect-free matching impl (assumes no implied markets) 2020-10-30 18:18:10 -04:00
John Colvin 2d6ca5a347 FifoMergedSecurityMatcher should subtract fill qty from working before the post-fill order state is logged 2020-10-30 16:30:20 -04:00
Taha Afzal 145cf2b482 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-29 13:36:57 -04:00
Taha Afzal 0a94c729e5 -ve edge allowed, can also be modified on the fly 2020-10-29 13:36:47 -04:00
Pedro Pinto a31331be0c Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-29 12:26:12 -04:00
Pedro Pinto 67ab58a99b Added exporting of matcher/sim generated books. 2020-10-29 12:25:03 -04:00
Taha Afzal 3835824d36 Key type is a parameter in the UI 2020-10-29 12:22:02 -04:00
Taha Afzal 02f98accd3 Polygon files can have bts keys or exchange keys (optionally) 2020-10-29 11:19:08 -04:00
Taha Afzal d84119ca6a Merge 2020-10-28 23:32:56 -04:00
Taha Afzal c39fb79fda Fixed the algo string params (SniperAlgo uses it now) 2020-10-28 23:13:20 -04:00
Pedro Pinto d6a5a4023b Fixed sim input bootstraped orders priority 2020-10-28 17:39:21 -04:00
Taha Afzal 8b0a0269ec Better logging and some cleanup 2020-10-28 17:02:28 -04:00
Pedro Pinto 334493c1be Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-27 19:21:47 -04:00
Pedro Pinto 71bae99c38 Added more data to the polygon valuation. 2020-10-27 19:21:18 -04:00
John Colvin 3d1ab364dc change bts_assert to log error instead 2020-10-27 18:02:26 -04:00
John Colvin 46820eecff FifoSecurityMatcher::has_same_orders returns the error msg (shouldn't return an empty error msg on failure, as that indicates success) 2020-10-27 17:49:26 -04:00
John Colvin 4bc5f07815 add version header to .icebergs file 2020-10-27 17:46:15 -04:00
John Colvin c78731e033 IcebergFinder subtracts qty changes from estimated qty (the matcher should adjust the total qty incrementally) 2020-10-27 17:40:58 -04:00
John Colvin f063d7ecbd tone down console output in MatcherValidationObserver; change hardcoded GC to ES (temp measure until the cmd accepts symbol args) 2020-10-27 17:40:58 -04:00
John Colvin f67071708d fix iceberg handling in MatcherValidationObserver 2020-10-27 17:40:58 -04:00
John Colvin 09d7d996cd iceberg_helper::subtract_iceberg_fills protects against overfills 2020-10-27 17:40:58 -04:00
John Colvin a143d851f2 add != operators for IcebergQuantity and optional<IcebergQuantity> 2020-10-27 17:40:58 -04:00
John Colvin a25f089810 fix iceberg_file_cache (matcher validation observer saves ibs in file to speed up repeated runs on same pcap) 2020-10-27 17:40:58 -04:00
John Colvin 862d2a7ee8 remove unnecessary field '_side' from FifoSecurityMatcher::BookKeeper 2020-10-27 17:40:58 -04:00
Taha Afzal 408ae423c6 Modifications to the book affecting bit 2020-10-27 16:15:48 -04:00
Taha Afzal 0e1da96e52 Added test for sim order with no book effects 2020-10-27 14:38:03 -04:00
Taha Afzal d0aa686693 FifoMatcher can match without affecting the existing markets 2020-10-27 11:54:07 -04:00
Pedro Pinto 317da795ec Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-27 08:52:10 -04:00
Taha Afzal 07887e60c5 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-26 18:47:12 -04:00
Taha Afzal a2a7859a04 SniperAlgo 2020-10-26 18:47:04 -04:00
Pedro Pinto d69aee25f9 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-26 17:53:17 -04:00
John Colvin 87e855086d FifoSecurityMatcher recomputes book lazily to improve performance 2020-10-26 17:27:38 -04:00
Pedro Pinto e918521266 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-26 15:26:42 -04:00
Pedro Pinto 969a3fd843 Intermediate commit 2020-10-26 15:25:57 -04:00
John Colvin 4adfe5708a enable implied matching again (GatewayAgent uses MergedMatcher) 2020-10-26 14:59:24 -04:00
John Colvin d270f60c2c speed up FifoPriceLevelMatcher::populated() method (return as soon as 1 qty is detected) 2020-10-26 14:59:24 -04:00
Pedro Pinto 192f6ef390 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-26 13:38:17 -04:00
Pedro Pinto df552e27d6 More views in sim_db. 2020-10-26 13:37:51 -04:00
Pedro Pinto 4850d279f6 CMAke 2020-10-26 13:37:35 -04:00
Pedro Pinto 29896b5ca4 Better logging. 2020-10-26 13:37:27 -04:00
John Colvin 710e05b029 migrate recent iceberg improvements over to DirectMatcher, and disable implied matching (need to resolve slowness in the MergedMatcher) 2020-10-26 12:40:52 -04:00
Pedro Pinto f627bf9238 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-26 10:21:32 -04:00
Pedro Pinto 8a59948fe5 Made sniper check available depth before shooting, added a sniper mode
to just log.
2020-10-26 10:20:53 -04:00
Pedro Pinto 5de34a52bd Added some new DB functionality, added utilities to manipulate book. 2020-10-26 10:18:44 -04:00
John Colvin 511b9551e3 delete old test code, clean up logging/console output in FifoMergedSecurityMatcher 2020-10-23 18:20:02 -04:00
John Colvin 8ddaaac244 define mdp3quantity operators with macro 2020-10-23 17:26:43 -04:00
John Colvin ff0d0a2592 add implied_book method to Matcher, make book/implied_book methods const 2020-10-23 16:33:20 -04:00
John Colvin 919d5eb880 uncommented macro to enable implied matching in simulator (enables new iceberg code by side effect) 2020-10-23 16:32:21 -04:00
John Colvin 2e65f52802 Matcher gets iceberg qty directly from MDP3Order (since they are now generated w/ sim_input) 2020-10-23 16:12:19 -04:00
John Colvin 048f170727 fix build 2020-10-23 14:03:43 -04:00
John Colvin bef915fd56 better iceberg deduction; integrate deduced icebergs into matcher 2020-10-23 13:29:37 -04:00
John Colvin 4f493aaf29 add pragma once to security_comp.h 2020-10-23 13:28:26 -04:00
Pedro Pinto 6b91e28d40 added icebergs to simulator input. 2020-10-23 11:28:56 -04:00
Pedro Pinto 895e3eebdd Fixed clang build. 2020-10-23 08:29:57 -04:00
Pedro Pinto 2fed9da9fa Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-23 08:28:52 -04:00
Pedro Pinto f6641e2ed1 Added observer algo to help validate the simulator. 2020-10-23 08:28:29 -04:00
Pedro Pinto e5579871b5 Adjusted logging levels as per console/file discussion. 2020-10-23 08:28:08 -04:00
Pedro Pinto e7a68a2ab3 Added top of the book view. 2020-10-23 08:27:32 -04:00
Pedro Pinto 0a58d69083 Faster combination generation. 2020-10-22 11:27:45 -04:00
Pedro Pinto ed1915582c Added view to summarize opportunity. 2020-10-22 11:27:30 -04:00
Pedro Pinto 5ea147efec Trying to speed up polygon valuations. 2020-10-21 10:34:17 -04:00
Pedro Pinto f1c5ba93d3 Fixed bugs in handling of CME fixed sized strings. 2020-10-21 10:31:37 -04:00
Pedro Pinto e741b33810 Added command to list securities. 2020-10-21 10:30:24 -04:00
Pedro Pinto 044b331d27 Fixed build. 2020-10-19 10:18:13 -04:00
John Colvin 9f3124793a implied matching seems slow, added macro in GatewayAgent.cpp to toggle it on or off while i investigate 2020-10-19 00:17:02 -04:00
John Colvin f7c33b5eee tone down logging/console output in matcher 2020-10-19 00:16:12 -04:00
John Colvin d1fc809553 integrate implied matching into simulator 2020-10-18 23:06:25 -04:00
Pedro Pinto e305ad124e Toned down logging 2020-10-17 21:41:26 -04:00
Pedro Pinto f68458a0f8 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-17 21:34:44 -04:00
Pedro Pinto b33251fc64 Better opportunity static analysis. 2020-10-17 21:34:14 -04:00
John Colvin 695e484fd7 update externals (added ranges-v3 lib) 2020-10-17 20:28:42 -04:00
John Colvin 281c1d1919 add fifo implied matching facilities 2020-10-17 19:55:56 -04:00
John Colvin 62ad17011e IntPrice * operator for regular ints 2020-10-17 19:34:44 -04:00
Pedro Pinto 52420a1256 build. 2020-10-16 20:19:21 -04:00
Pedro Pinto 9a2ff85669 Logged missing CPP's rather than crashing. 2020-10-16 20:14:54 -04:00
Pedro Pinto 76e0bced60 More realistic limits for polygon search space. 2020-10-16 20:14:37 -04:00
Pedro Pinto e9cdb26d46 Better logging. 2020-10-16 20:13:39 -04:00
Pedro Pinto e780ba5867 Merged 2020-10-15 14:25:39 -04:00
Pedro Pinto e5d77593d1 Changed logging 2020-10-15 14:24:02 -04:00
Pedro Pinto 6580f3883b Added logging of cancel/replace 2020-10-15 14:18:57 -04:00
Pedro Pinto 5e825b70d2 Added logging of cancel/replace 2020-10-15 14:18:28 -04:00
Pedro Pinto 2e13820e28 Dropped polygon opportunities with quantity 0 2020-10-15 10:56:56 -04:00
Pedro Pinto 24c06c5492 Fixed query. 2020-10-15 09:57:28 -04:00
Pedro Pinto ad8ac601ce Added commonly needed indexes to md DB, fixed duration calculation in
polygon opportunity calculation.
2020-10-15 09:53:49 -04:00
Pedro Pinto fc21544cf2 Better polygon opportunity analysis. 2020-10-15 09:17:26 -04:00
Pete Fisher a66eae66bb fixing for python3 2020-10-14 21:56:49 -04:00
Pedro Pinto af6636b44b Added polygon opportunity analysis to SQL. 2020-10-14 21:17:36 -04:00
Pedro Pinto 7ab55a2fe6 Generating merged books. 2020-10-14 16:54:17 -04:00
Pedro Pinto 973cc1195a Added implied book merging. 2020-10-14 12:30:47 -04:00
Pedro Pinto ef849f04a4 Fixed reporting of event id in shout outcome in sniper. 2020-10-14 10:07:04 -04:00
Pedro Pinto f1b91625e2 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-14 10:05:21 -04:00
Pedro Pinto 1100d8e1cd Added event it so sniper shots. 2020-10-14 10:00:46 -04:00
Taha Afzal 18bcd7e911 fixing the merge 2 2020-10-13 14:10:03 -04:00
Taha Afzal 5a4e3f5acc Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-13 13:25:58 -04:00
Taha Afzal efacf2986f fixing merge conflict 2020-10-13 13:25:52 -04:00
Pedro Pinto 1f6255f751 Another broken build, I hope no one is watching 2020-10-13 13:16:01 -04:00
Taha Afzal 79d03c73d7 Added some more n_contracts, symbol, ticks to sniper output 2020-10-13 12:56:09 -04:00
Pedro Pinto 2905a80138 Massively improved memory usage for simulations. 2020-10-13 11:56:56 -04:00
Pedro Pinto 5cbab11310 Fixed the build, sorry. 2020-10-13 11:06:10 -04:00
Pedro Pinto 51edfb5d61 Improved performance, reduced memory usage in simulation. 2020-10-13 10:44:43 -04:00
Pedro Pinto 7324c160f8 Reduced logging. 2020-10-13 10:44:23 -04:00
Pedro Pinto cb6f67f689 Avoided copying events. 2020-10-13 08:52:37 -04:00
Pedro Pinto 6cfd1cd070 Added better logging of polygon opportunities. 2020-10-13 08:24:32 -04:00
Pedro Pinto d732b7d691 Added better dimenionsing of shot to Sniper. 2020-10-13 08:23:55 -04:00
Pedro Pinto 588319478e Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-12 21:26:47 -04:00
Pedro Pinto 814b9f810b Added polygon opportunities logging to sql command. 2020-10-12 21:26:02 -04:00
John Colvin f41f2e5d55 add 'on_order_completed' and 'reset' method placeholders to FifoSecurityMatcher 2020-10-12 15:31:59 -05:00
John Colvin 4d592b1c3b fix FifoSecurityMatcher::book_level (skip empty levels) 2020-10-12 13:52:53 -05:00
Pedro Pinto 1a1de31457 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-12 10:15:12 -04:00
Pedro Pinto 38b800981b Tweaks to queries. 2020-10-12 10:14:36 -04:00
Pedro Pinto 89ef56f131 Naming polygons in the SQL DB. 2020-10-12 10:13:45 -04:00
Taha Afzal 2400f5b91c Function for John to be used for implied matching 2020-10-11 18:31:27 -04:00
Taha Afzal 85c3ba0fa3 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-11 10:34:53 -04:00
John Colvin c6822be685 add 'fill' method placeholder to FifoSecurityMatcher 2020-10-10 23:09:57 -04:00
Pedro Pinto cb81b0e53e Cleaned up DB. 2020-10-10 18:32:27 -04:00
Taha Afzal 180d776929 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-10 15:45:12 -04:00
Pedro Pinto 332f98b3a7 Fixed non deterministic order for events. 2020-10-10 12:44:23 -04:00
Taha Afzal 08a65a290d Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-10 11:59:02 -04:00
Pedro Pinto 8bb5301fbb Not sure how I messed this up. 2020-10-10 11:58:06 -04:00
Taha Afzal 51d402fbd5 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-10 10:29:11 -04:00
Taha Afzal 6e5f2f1a49 Added better logging in Matcher 2020-10-10 10:29:05 -04:00
Pedro Pinto 3a73b6cb9e Changed sniper, md 2020-10-10 10:15:09 -04:00
Pedro Pinto 64f35f869e Re-enabled sniper. 2020-10-09 14:50:04 -04:00
Pedro Pinto 67d9758ad2 Sped up matching. 2020-10-09 14:15:28 -04:00
Pedro Pinto bcf4a04409 Disabled sniper, added logging to report sim progress. 2020-10-09 11:43:03 -04:00
Pedro Pinto 3be5afc08b Fixed some sniper bugs. 2020-10-09 10:31:47 -04:00
Pedro Pinto 637a8f1efc Added progress logging to simulation. 2020-10-09 10:31:31 -04:00
Pedro Pinto 00f9c9ec2e Fixed utility. 2020-10-09 10:31:11 -04:00
Pedro Pinto 722750faeb Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-09 08:12:57 -04:00
Taha Afzal 74d10749b7 Bug where orders changing levels and getting completely filled were not marked as inactive 2020-10-08 23:38:05 -04:00
Pedro Pinto 9dd96b05e2 Better logging. 2020-10-08 17:10:25 -04:00
Taha Afzal e927b35586 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-08 14:31:26 -04:00
Taha Afzal e1fb9319a0 better error checking and validation in the matcher 2020-10-08 14:31:19 -04:00
Pedro Pinto 684b7d54b6 Fixed incorrect qty parameterization 2020-10-08 14:25:42 -04:00
Pedro Pinto 925997947f Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-08 14:09:10 -04:00
Pedro Pinto dcbd86c1f5 Updated cpp reference data, improved polygon discovery 2020-10-08 14:08:58 -04:00
Taha Afzal 2f45ee3fe3 validation of incoming OrderChange 2020-10-08 13:26:18 -04:00
Pedro Pinto 0d4888111d Merged 2020-10-08 11:50:19 -04:00
Pedro Pinto a062dbe321 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-08 11:48:12 -04:00
Pedro Pinto 6ab0824532 Added polygon descriptors 2020-10-08 11:23:21 -04:00
Taha Afzal 385de5108e Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-08 11:08:05 -04:00
Taha Afzal c25310c491 assert for correct OrderUpdate state 2020-10-08 11:07:58 -04:00
Pedro Pinto 0fb6bc72a4 Merge remote-tracking branch 'refs/remotes/origin/spartan_tas' into spartan_tas 2020-10-08 10:43:39 -04:00
Pedro Pinto 88039a4c83 Refactored PandL facilties. 2020-10-08 10:43:24 -04:00
Taha Afzal fd1ac28302 clean up period changed 2020-10-08 09:25:38 -04:00
Pedro Pinto e8c6a2ad1c Re-enabled run_sim command. 2020-10-07 18:08:30 -04:00
Pedro Pinto 1ee21c8d3e Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-07 18:07:08 -04:00
Pedro Pinto c5388b07f9 code complete for sim logging. 2020-10-07 18:06:46 -04:00
Taha Afzal a165d6d193 Moved MatcherOrder in common 2020-10-07 14:16:58 -04:00
Taha Afzal 77f02d81d5 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-07 12:46:34 -04:00
Taha Afzal fc8620939f speed up 2020-10-07 12:46:13 -04:00
Pedro Pinto d319c7ddb8 Fixed build. 2020-10-06 16:10:30 -04:00
Pedro Pinto 24df444584 Driving the simulator across days and parameter variations. 2020-10-06 16:08:33 -04:00
Pedro Pinto 6984676e7f Towards orchestration of simulator runs. 2020-10-06 10:56:40 -04:00
Pedro Pinto 6356cf68f8 Added a field to instrumentdefinition. 2020-10-05 13:13:53 -04:00
Pedro Pinto 8ef76590a1 Many changes related to sniper simulation. 2020-10-05 11:57:20 -04:00
Taha Afzal 724eea5403 Added cancel perf test 2020-10-03 22:18:31 -04:00
Pedro Pinto 96cf8dcfac Added better pnl 2020-10-02 11:27:11 -04:00
Pedro Pinto 5add27a107 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-02 11:12:09 -04:00
Pedro Pinto 2683bb6c34 Re-enabled P&L 2020-10-02 11:12:00 -04:00
Taha Afzal 8bdce09aec Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-02 11:01:56 -04:00
Taha Afzal a732e926a9 Speed improvements, plus missing sec in execution report filled 2020-10-02 11:01:49 -04:00
Pedro Pinto 2fdec04336 Fixed build. 2020-10-02 10:19:25 -04:00
Pedro Pinto 3199689772 Temporarily disabled display factor adjustment until we have secs in fills. 2020-10-02 10:15:47 -04:00
Pedro Pinto 69efd022bd Fixed P&L calculation for algos. 2020-10-02 10:14:31 -04:00
Pedro Pinto 1604beb3f8 More refactoring. More to come. 2020-10-02 07:25:34 -04:00
Pedro Pinto 0ad57ef290 Fixed build. 2020-10-02 07:08:47 -04:00
Pedro Pinto 376c250802 Refactored. 2020-10-02 07:06:32 -04:00
Pedro Pinto cf1191bf0a Refactoring 2020-10-02 06:46:42 -04:00
Pedro Pinto e1a8870dda Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-01 10:33:42 -04:00
Pedro Pinto 7991b8e8bd Improved output 2020-10-01 10:33:20 -04:00
Taha Afzal 198d52eca1 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-10-01 10:24:19 -04:00
Taha Afzal 707c8fbd41 Fixed the side in the matcher execution report 2020-10-01 10:24:13 -04:00
Pedro Pinto 299bf7b4da Sniper is sniping. We are going to be simulated millionaires. 2020-10-01 09:38:00 -04:00
Pedro Pinto 1fb1af7132 First run of the simulator. 2020-09-30 17:17:57 -04:00
Pedro Pinto ce2a6d3b2f Sped up sim runs by caching simulator inputs. 2020-09-30 14:41:22 -04:00
Pedro Pinto 271e14ae5b Cleaned up polygon generation. 2020-09-30 09:51:40 -04:00
Pedro Pinto 110af7795e Cleaned up simulator input generation. 2020-09-30 08:25:33 -04:00
Pedro Pinto 617b4e2bba Added polygons to SQL DB. 2020-09-29 14:35:06 -04:00
Pedro Pinto 5f9705cbdb Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-09-29 13:50:23 -04:00
Pedro Pinto 54333ccb7b Improved polygon detection speed and correctness. 2020-09-29 13:39:02 -04:00
Taha Afzal 5049212af5 FifoMatcher can optionally ignore internally matched orders 2020-09-29 12:53:21 -04:00
Taha Afzal a5a1f87528 Moved the matcher tests into its own file 2020-09-29 11:09:42 -04:00
Taha Afzal f83d57fc0c Spreader tests pass while sending orders to sim 2020-09-28 21:32:19 -04:00
Pedro Pinto e2f4fc83a2 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-09-28 15:03:12 -04:00
Pedro Pinto 2bb246262c Refactored to modularize pcap queries. Added pcap polygon generation cmd. 2020-09-28 15:02:12 -04:00
Taha Afzal ed3cc43e59 Fixed the first ack issue 2020-09-28 14:04:36 -04:00
Taha Afzal 4c505f58c5 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-09-27 22:27:25 -04:00
Taha Afzal 47ac6c5dd3 tests for the spreader bridge 2020-09-27 22:26:48 -04:00
Pedro Pinto e889d0835f Added views to md.sql, documented better. 2020-09-26 12:08:36 -04:00
Pedro Pinto 01ce2211f3 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-09-26 11:53:16 -04:00
Pedro Pinto ffc39be466 Added polygon generation. 2020-09-26 11:52:55 -04:00
Taha Afzal dcfada0b81 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-09-24 14:26:16 -04:00
Taha Afzal ee03de52b7 Events were not getting passed back to the spreader 2020-09-24 14:26:03 -04:00
Pedro Pinto 2fc3a797eb Fixed bug in import. 2020-09-24 12:06:32 -04:00
Pedro Pinto 419dc355e3 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-09-24 08:37:26 -04:00
Pedro Pinto ec994a93e7 Fixed bug in CSV generation. 2020-09-24 08:36:58 -04:00
Taha Afzal 679330ba53 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-09-24 00:21:53 -04:00
Taha Afzal 87d0f93043 spreader ready to go with sim 2020-09-24 00:21:43 -04:00
Pedro Pinto 7e85f390b3 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-09-23 18:02:52 -04:00
Pedro Pinto ef18b37fd3 Added additional security info to sqlite. 2020-09-23 18:02:24 -04:00
Taha Afzal ef016bfafc SpreaderChildOrderUpdate takes a side arg to work better with IAlternateOrderGateway 2020-09-23 17:48:50 -04:00
Taha Afzal 9824ef7686 Added order indirection interface 2020-09-23 12:37:27 -04:00
Taha Afzal 2f21e73d8d Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-09-22 11:24:01 -04:00
Taha Afzal 22f4a7a324 order bridge bw spark and spartan has one link remaining 2020-09-22 11:23:50 -04:00
Pedro Pinto 6bf4966fb3 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-09-22 11:17:08 -04:00
Pedro Pinto 0e552bbcad Improved order deduction. Improved iceberg deduction. 2020-09-22 11:15:08 -04:00
Taha Afzal 4a6b14caa4 Merging 2020-09-21 14:40:31 -04:00
Taha Afzal 519d08cb78 Interfacing sim with spreader 60-70% done 2020-09-21 14:31:32 -04:00
Pedro Pinto e89b4206f9 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-09-21 14:05:21 -04:00
Pedro Pinto 4adbe82e1e Simulator is code complete. 2020-09-21 11:24:21 -04:00
Pedro Pinto 18b7f71020 More simulator framework. 2020-09-21 09:27:13 -04:00
Taha Afzal 86e631ae3e Calling spreader's initialization functions from SimSpreader 2020-09-19 17:22:20 -04:00
Taha Afzal 87bc9b2d25 SimSpreader and some cleanup 2020-09-18 23:49:32 -04:00
Pedro Pinto c7b65ac062 Added simulator framework. 2020-09-18 14:22:14 -04:00
Taha Afzal cb07fc1cb7 Cleaning up FIFO 2020-09-17 11:37:18 -04:00
Taha Afzal 5f489a33f7 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-09-16 14:49:56 -04:00
Taha Afzal a22e3efb64 Filling in matcher 2020-09-16 14:49:51 -04:00
Pedro Pinto fc51a03a70 Fixed estimation of iceberg order to take into account fill status. 2020-09-14 17:16:13 -04:00
Pedro Pinto 090a9dfb17 Added iLink3 documentation. 2020-09-14 12:02:37 -04:00
Taha Afzal ad5000d835 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-09-14 10:11:21 -04:00
Taha Afzal abd1651034 Events causing IB issues added list of traced events 2020-09-14 10:11:15 -04:00
Pedro Pinto 8d94794cdb Added the hability to run the simulator across multiple channels. 2020-09-13 15:53:58 -04:00
Pedro Pinto ab6ffebe20 Simulator is code complete. 2020-09-11 18:59:00 -04:00
Pedro Pinto 0698aa90b3 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-09-11 08:19:17 -04:00
Pedro Pinto 00deda50ec Fixed fifo validation, more refactoring of sim 2020-09-11 08:18:59 -04:00
Taha Afzal c914d97376 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-09-10 12:46:37 -04:00
Taha Afzal b574de32ae facility for fifo to ignore events, plus log a mismatch istead of asserting 2020-09-10 12:46:31 -04:00
Pedro Pinto ab6be7624e Added allowance for self match prevention when deducing orders 2020-09-10 10:56:52 -04:00
Pedro Pinto 300ba5a16e Skipped bad events. 2020-09-10 08:53:47 -04:00
Taha Afzal 9da7784b1b Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-09-09 19:40:50 -04:00
Pedro Pinto 8b2046a4c4 Skiped first 40K events in fifo validation, for speed 2020-09-09 17:45:07 -04:00
Pedro Pinto a5b9e40b53 Skipped open when testing fifo 2020-09-09 17:40:57 -04:00
Pedro Pinto 6c6dd86c02 More refactoring of sim. 2020-09-09 16:42:55 -04:00
Taha Afzal 109a12412a Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-09-09 14:06:07 -04:00
Taha Afzal 10edd13593 Log adjustments again 2020-09-09 14:06:01 -04:00
Pedro Pinto d7014ce172 Better deduced order detection, refactored sim 2020-09-09 13:47:28 -04:00
Pete Fisher 27aa43f44d fixed time on ilink2 audit 2020-09-09 12:16:57 -04:00
Pedro Pinto 19e087aa69 Fixed time reporting in iLink3. 2020-09-09 10:58:34 -04:00
Taha Afzal 899218ccf6 Moving MatchingCommon to the new matching directory 2020-09-09 10:41:41 -04:00
Taha Afzal 5fbd5b8804 Fixing merge conflict 2020-09-09 10:35:14 -04:00
Taha Afzal 8a564c38e9 More selective logging to catch the offending orders 2020-09-09 10:13:04 -04:00
Pedro Pinto 5758b56296 Improved iceberg detection 2020-09-09 10:00:52 -04:00
Pedro Pinto da8c8c271a Merged 2020-09-08 11:59:38 -04:00
Pedro Pinto 26a0508e03 Simulator in progress. 2020-09-08 11:55:45 -04:00
Taha Afzal 80294f9f37 Fixing merge 2020-09-08 10:19:31 -04:00
Taha Afzal c408825a8d better logging to trace down specific orders 2020-09-08 10:09:29 -04:00
Pedro Pinto 5cdc4f5a66 Flushing out simulator. 2020-09-07 14:41:23 -04:00
Pedro Pinto d5bc1a0acb Tweaked test. 2020-09-07 14:41:08 -04:00
Pedro Pinto 0f8ae1e345 Refactored simulator names, structure. 2020-09-07 09:03:58 -04:00
Pedro Pinto 6bcd13f30c Added generation of sim input. 2020-09-04 14:14:38 -04:00
Pedro Pinto a330ecf24d Skipped icebergs in FIFO validation. 2020-09-04 10:34:19 -04:00
Pedro Pinto 8df3bf38cd Cleaned up sqlite file generation. 2020-09-04 08:32:00 -04:00
Pedro Pinto 9e1f72df94 Added a SQL command that generates a SQL DB from a pcap. 2020-09-03 21:01:49 -04:00
Pedro Pinto b615a6105a Added to md.sql documentation. 2020-09-03 11:50:30 -04:00
Pedro Pinto 5c9595f4a6 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-09-03 11:46:57 -04:00
Pedro Pinto efa8aa297d Working Sim. 2020-09-03 11:46:44 -04:00
Taha Afzal 47b45d2a53 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-09-03 11:39:20 -04:00
Taha Afzal cf3eae1311 added comments to the columns in the sql script 2020-09-03 11:39:01 -04:00
Pedro Pinto f197077e78 Ran clang-format on spartan. 2020-09-03 10:33:19 -04:00
Pedro Pinto 0240be755a Added icebergs 2020-09-02 15:58:09 -04:00
Pedro Pinto 0c69024f7a Added Icebergs to CVS output. 2020-09-02 15:30:40 -04:00
Pedro Pinto 15be25a382 Added helper in FIFO matcher. 2020-09-02 11:18:45 -04:00
Pedro Pinto 3047cc2570 Included priorIty In deduced order, why not. 2020-09-02 11:18:26 -04:00
Pedro Pinto 4369cb61fe Cleaned up debug output 2020-09-02 09:29:16 -04:00
Pedro Pinto 04c4674582 Improved diagnostics. 2020-09-02 09:26:44 -04:00
Pedro Pinto 504ef84da3 Better diagnostic 2020-09-01 17:27:26 -04:00
Pedro Pinto 8cc564da96 Merged 2020-09-01 17:13:47 -04:00
Pedro Pinto 2abc69fd7c Fixed a bug in deducing orders, improved output. 2020-09-01 17:06:44 -04:00
Taha Afzal 87d0498c23 Improved the on_same_orders return message 2020-09-01 16:34:32 -04:00
Taha Afzal ecb3893370 Fixing merge conflict 2020-09-01 14:21:49 -04:00
Taha Afzal f974d90eaa FifoSecurityMatcher::on_same_orders now returns an optional<string> 2020-09-01 13:40:27 -04:00
Pedro Pinto 6a4e06873b Added diagnostics, fixed order priority insertion 2020-09-01 11:02:17 -04:00
Taha Afzal 3b235efd3f Changing Info logging to Diag 2020-08-31 16:21:20 -04:00
Taha Afzal 2f8436e131 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-08-31 16:17:16 -04:00
Taha Afzal e801951820 More logging 2020-08-31 16:17:11 -04:00
Pedro Pinto 2b61e65bf5 Added seamless XZ decompression on any spartan cmd. 2020-08-31 10:45:31 -04:00
Pedro Pinto f5fe552cd9 Working on adding seamless decompression. 2020-08-31 08:00:41 -04:00
Taha Afzal 6b529d0f7e Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-08-29 23:54:58 -04:00
Taha Afzal 4c3ad827c5 fixed bug, more logs, ahdered to new IB in MDP3Quantity 2020-08-29 23:54:47 -04:00
Pedro Pinto 6b09e18948 Referenced iml. 2020-08-28 15:50:43 -04:00
Pedro Pinto 9103a00f20 cleaned up slightly 2020-08-28 13:46:04 -04:00
Pedro Pinto 7a7588f8d9 Changed the fifo matcher harness 2020-08-28 13:44:12 -04:00
Pedro Pinto 7ee0068ff0 Added inital harness to test fifo. 2020-08-28 12:01:06 -04:00
Pedro Pinto 9b586b2ae2 Better documentation. 2020-08-28 10:38:05 -04:00
Pedro Pinto 09f7879c83 Comment in SQL. 2020-08-28 10:35:32 -04:00
Pedro Pinto d80e27f989 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-08-27 12:04:17 -04:00
Pedro Pinto 45f9e53f10 Fixed deduced orders, iceber orders. 2020-08-27 12:03:26 -04:00
Taha Afzal e2d11cb59b Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-08-27 10:41:20 -04:00
Taha Afzal d0b923339d fixed cross IB test (bug was in the test) 2020-08-27 10:41:09 -04:00
Pedro Pinto 9deb6182d0 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-08-27 08:27:37 -04:00
Pedro Pinto 4c4e870c67 Merge branch 'master' into spartan_tas 2020-08-27 08:24:01 -04:00
Pedro Pinto 167c8c23a0 Fixed batching of orders under iLink3. 2020-08-27 08:19:47 -04:00
Pedro Pinto 3f3b481654 Merged 2020-08-26 11:21:40 -04:00
Pete Fisher 0fa870ea40 added MJF 2020-08-26 11:05:15 -04:00
Pedro Pinto 2b3b551898 Merged 2020-08-26 11:03:15 -04:00
Pedro Pinto ad4d97c17e Tweaked IB struct. 2020-08-26 08:29:09 -04:00
Taha Afzal c941105502 IB cross order 2020-08-25 19:24:16 -04:00
Taha Afzal 174743cdb6 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-08-25 13:44:48 -04:00
Taha Afzal a752ad0cbc fixed bug with iceberg filling 2020-08-25 13:44:43 -04:00
Pedro Pinto 477e33eb81 Merged 2020-08-25 13:39:56 -04:00
Pedro Pinto 052268f052 Better json printing, faster processing on sec status change, progress in iceberg detection. 2020-08-25 13:37:43 -04:00
Taha Afzal 27294f125d iceberg test 2020-08-25 11:39:19 -04:00
Pete Fisher d235f4be41 fixed jetfix.conf ports on relay 2020-08-25 10:03:09 -04:00
Pete Fisher e80c634bd1 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-08-25 09:01:28 -04:00
Pete Fisher 37f33778e1 fixed jetfix.conf 2020-08-25 09:01:13 -04:00
Taha Afzal c540fdd11f Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-08-24 23:17:14 -04:00
Taha Afzal e7f9e98f0a Resting IB matching engine completed 2020-08-24 23:17:05 -04:00
Taha Afzal 253586fc79 Iceberg reloading 2020-08-24 20:40:11 -04:00
Pedro Pinto ec43dbd82d Maybe fixed the self match prevention problem. 2020-08-24 17:02:58 -04:00
Pedro Pinto f07998d6a6 Fixed order rounding error in ilink3 2020-08-24 16:17:31 -04:00
Pedro Pinto 9d0c99a17b Richer console logging 2020-08-24 16:16:11 -04:00
Pedro Pinto 58992eb893 Changed logging subsystem from ilink3 to iLink3 2020-08-24 16:16:11 -04:00
Pete Fisher a471670a91 added audit log scripts to be run by the docker container 2020-08-24 16:15:27 -04:00
Pete Fisher 96e1d25ca4 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-08-24 15:22:54 -04:00
Pete Fisher d4bb88dbfe added jetfix going to cert relay 2020-08-24 15:21:45 -04:00
Taha Afzal bbc2277bae Order's exchange priority need not be kept around 2020-08-24 12:25:14 -04:00
Taha Afzal d54861a9d0 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-08-24 12:02:18 -04:00
Taha Afzal a5d98a32b6 Iceberg related changes 2020-08-24 12:01:59 -04:00
Pedro Pinto b3dc2cdcd4 Changed logging subsystem from ilink3 to iLink3 2020-08-24 11:06:44 -04:00
Pedro Pinto a2ea2239da Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-08-24 08:37:41 -04:00
Pedro Pinto 5e56a66171 Multiple improvements. 2020-08-24 08:37:08 -04:00
Taha Afzal fa0674a657 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-08-21 23:23:36 -04:00
Taha Afzal 2eb2b07f8f fixed bug with sweeps 2020-08-21 23:23:26 -04:00
Taha Afzal b7f15986ad tests for order remove/modify and its affects on the book 2020-08-21 18:49:00 -04:00
Pedro Pinto 3e0cdde714 Corrected how we handle security tradus status changes. 2020-08-21 17:49:12 -04:00
Pedro Pinto 3334f1b709 A few more tweaks. 2020-08-21 17:49:12 -04:00
Taha Afzal 29e080da71 remove tests 2020-08-21 16:18:24 -04:00
Taha Afzal 927cd60d41 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-08-21 12:15:56 -04:00
Pedro Pinto 7c5cb5b7f7 Updated csv generation to include implied matching status. 2020-08-21 12:13:23 -04:00
Taha Afzal 9f84f7215c Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-08-21 12:09:45 -04:00
Taha Afzal 14fd296aa2 some iceberg adjustments, and more tests 2020-08-21 12:09:32 -04:00
Pedro Pinto 470f94f6e1 Added support for implied matching status. 2020-08-21 11:48:33 -04:00
Pedro Pinto 9bfd33320e More changes to instrument definition. C++ continues to mistify. 2020-08-21 10:33:48 -04:00
Pedro Pinto f7a2693952 Cleaned up instrument definition. 2020-08-21 09:28:44 -04:00
Pedro Pinto d573447d64 Added method to visit security 2020-08-21 09:03:47 -04:00
Pedro Pinto ccd7d29501 Fixed some bugs in cvs export 2020-08-21 01:00:10 -04:00
Pedro Pinto 291699fb9b Added books to CSV output. 2020-08-21 00:22:36 -04:00
Pedro Pinto 056e0f8aa7 Removed debug break 2020-08-20 17:25:44 -04:00
Pedro Pinto 45ed583d46 Fixed a few bugs, made it possible to stream through a pcap once only 2020-08-20 17:13:52 -04:00
Pedro Pinto 54a2131b20 Fixed typo. 2020-08-20 12:01:51 -04:00
Taha Afzal a4bbb6c88b Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-08-20 10:59:02 -04:00
Taha Afzal e6c2ceb931 tests for single price level 2020-08-20 10:58:57 -04:00
Pedro Pinto c43ec4a56d Added script to easily compress pcaps. 2020-08-20 10:43:58 -04:00
Pedro Pinto b871cc4e09 Cleaned up code. 2020-08-20 09:25:38 -04:00
Pedro Pinto 6aec729b6a Added prettier logging when observing spartan pcaps 2020-08-19 21:16:54 -04:00
Pedro Pinto 025625e0b9 Simplified console logging 2020-08-19 21:15:40 -04:00
Pete Fisher 0963aee137 added audit log scripts to be run by the docker container 2020-08-19 17:49:47 -04:00
Pedro Pinto 5c5bc243d2 Added new spartan command to clean up pcaps to just what we need. 2020-08-19 16:29:49 -04:00
Taha Afzal 0d0af32b85 Merge branch 'spartan_tas' of bitbucket.org:bluetradesys/spark into spartan_tas 2020-08-19 14:30:17 -04:00
Taha Afzal 46c2d2e916 cleaning 2020-08-19 14:30:10 -04:00
Taha Afzal ff6d0f0e1b cleaning up, fixing the sorting of prices 2020-08-19 14:14:40 -04:00
Pedro Pinto 86ca092f18 Fixed bug that was preventing import of oil data. 2020-08-18 13:06:58 -04:00
Pedro Pinto ec3d642cee Better export to CSV. 2020-08-18 10:58:42 -04:00
Pedro Pinto 7489d70c95 Added some sql tools, added order deduction 2020-08-18 07:51:16 -04:00
Pedro Pinto 81bb5404cb Merged 2020-08-18 07:50:59 -04:00
Taha Afzal a0155beb83 Fifo Matching Engine 2020-08-18 00:02:10 -04:00
Pedro Pinto c2f8e92b10 Hopefully fixed the ilink3 filled qty reporting problem.
This was crashing the spreader.
2020-08-13 08:42:43 -04:00
Pedro Pinto 7ae0142dff Fixed reset of sequence numbers problem 2020-08-12 11:56:08 -04:00
Taha Afzal 780b74fc56 Basic scaffolding plus price level match 2020-08-11 20:09:09 -04:00
Pedro Pinto 78bc14348d Miscelaenous improvements. 2020-08-10 13:46:59 -04:00
Pedro Pinto 52bc0f1a17 Better spelling. 2020-08-09 17:24:55 -04:00
Pedro Pinto c52c24c3f2 Fixed some more issues. Everything looks good now. 2020-08-09 17:06:53 -04:00
Pedro Pinto 0d9277bf6a Added test file, discovered feeds automatically. 2020-08-08 16:32:54 -04:00
Pedro Pinto 761797dc24 Fixed a few more bugs. 2020-08-07 20:32:31 -04:00
Pedro Pinto 39a560c394 Fixed a couple more serious bugs. 2020-08-07 14:15:04 -04:00
Pedro Pinto b4f01da8d8 Added print. 2020-08-07 13:13:33 -04:00
Pedro Pinto f7ca1efdb8 Fixed a number of bugs. 2020-08-07 13:08:51 -04:00
Pedro Pinto 1b4ed339d6 More bugs, more fixes. 2020-08-06 12:20:00 -04:00
Pedro Pinto 5af89e0124 Fixed a few more bugs. 2020-08-06 12:11:58 -04:00
Pedro Pinto 1fddbf1cca More tests, more fixes. 2020-08-06 08:58:10 -04:00
Pedro Pinto 1cd1a23c80 Added a unit test and fixed some bugs. 2020-08-05 11:22:09 -04:00
Pedro Pinto b987ec6a8a Added a smoke test for MD. 2020-08-04 17:28:17 -04:00
Pedro Pinto f509026815 Code complete on MD. 2020-08-04 17:13:48 -04:00
Pedro Pinto 557b658146 Almost done. 2020-08-04 16:54:00 -04:00
Pedro Pinto e3c4960622 Fixed build. 2020-08-04 08:32:42 -04:00
Pedro Pinto 350b4307dc Refactor. 2020-08-03 20:59:54 -04:00
Pedro Pinto 762ca47a59 Refactored. 2020-08-03 20:47:25 -04:00
Pedro Pinto 79b83ba494 Refactored. 2020-08-03 20:47:04 -04:00
Pedro Pinto 51f5155a1a Removed obsolete code. 2020-08-03 20:42:53 -04:00
Pedro Pinto d0b3124813 Recovery complete. 2020-08-03 20:36:42 -04:00
Pedro Pinto 29128dd014 Almost code complete. 2020-08-03 18:15:46 -04:00
Pedro Pinto 9e8f5809c3 Starting work on integrating recovery with realtime processing. 2020-08-03 11:11:06 -04:00
Pedro Pinto 7e2001744c More refactoring. 2020-08-03 09:43:51 -04:00
Pedro Pinto f5b83efade Incremental Queue completed. 2020-08-02 16:22:57 -04:00
Pedro Pinto aedb9d2ae1 Refactored for consistency. 2020-08-02 16:10:54 -04:00
Pedro Pinto 5ccd28d84d Refactored. 2020-08-01 20:38:53 -04:00
Pedro Pinto 3320888fc8 Instrument defintion copy. 2020-07-30 17:16:35 -04:00
Pedro Pinto 456e9bf357 Finished real time feed processor. 2020-07-30 16:11:35 -04:00
Pedro Pinto 275a757eb7 Finished up InstrumentSnapshot. 2020-07-30 10:32:10 -04:00
Pedro Pinto d51d170891 Lots of progress on real time feed processing 2020-07-29 13:22:34 -04:00
Pedro Pinto 87d138740f More refactoring and tools. 2020-07-27 08:45:18 -04:00
Pedro Pinto 625f165a63 Life-time management bug, one & cost a whole day. 2020-07-24 18:13:56 -04:00
Pedro Pinto 8421ed0ae9 Small changes. 2020-07-24 18:13:39 -04:00
Pedro Pinto 2a03eb323d Initial tests run. 2020-07-21 12:08:27 -04:00
Pedro Pinto cac6a9cd53 Refactoring. 2020-07-20 09:38:22 -04:00
Pedro Pinto a148b8fdcb More recovery work. 2020-07-20 08:29:18 -04:00
Pedro Pinto d635e8a978 Getting close to recovery. 2020-07-17 20:16:57 -04:00
Pedro Pinto 7aadd38934 More refactoring. 2020-07-17 08:52:46 -04:00
Pedro Pinto b63b11982b Refactoring. 2020-07-15 12:24:01 -04:00
Pedro Pinto 88a4d2ed80 Crazy template stuff. 2020-07-12 16:40:08 -04:00
Pedro Pinto 26bdef7ddd Merged with master 2020-07-11 12:30:06 -04:00
Pedro Pinto db0ffba8ed Fixed windows build 2020-07-10 13:00:20 -04:00
Pedro Pinto a274a214b4 Merged with master 2020-07-10 11:31:47 -04:00
Pedro Pinto bbcfa3c75a merged with prod 2020-07-10 10:45:10 -04:00
Pedro Pinto 89229d65f1 Merge branch 'master' of bitbucket.org:bluetradesys/spark 2020-07-10 10:43:34 -04:00
Pedro Pinto 0e75cde409 Fixed a bad asser in recovery, a few typos, haderned against bad securities. 2020-07-10 10:36:03 -04:00
Pedro Pinto 42fa6dfaff Fixed life cycle of exe reports and config during replay. 2020-07-09 16:06:39 -04:00
Pedro Pinto 400143c84d Protected against ticker subs for expired securities. 2020-07-09 14:45:51 -04:00
Pedro Pinto e915945880 Trying to replay fix logs. 2020-07-09 14:27:22 -04:00
Taha Afzal ca6673e98f Merge branch 'prod' 2020-07-09 13:09:57 -04:00
Taha Afzal 479f3dccff Adding OnSignal (this is a new algo which is hidden by default) 2020-07-09 13:07:28 -04:00
Pedro Pinto 9601ebab20 Adding replay of stored messages. 2020-07-09 10:16:31 -04:00
Taha Afzal c272d8a8c2 Pyramid Algo: Takes care of the rounding error when Top == sum (child orders) 2020-07-08 13:35:21 -04:00
Pedro Pinto b344ab3377 Fixed an issue with order recovery from Exec reports. 2020-07-08 12:07:48 -04:00
Pedro Pinto ae3080b031 Refactoring. 2020-07-08 10:10:14 -04:00
Pedro Pinto f0464331cb Added better handling of cancel rejects. 2020-07-08 09:52:18 -04:00
Pedro Pinto 0648b618bf Refactored. 2020-07-08 08:42:53 -04:00
Pedro Pinto 59282b8c70 Added one more test to manual order entry list. 2020-07-08 08:42:18 -04:00
Pedro Pinto 34a86009ce Doc and tool minor update. 2020-07-08 07:44:01 -04:00
Pedro Pinto 0ad9ae9001 Small tweak to logging tool. 2020-07-07 20:19:59 -04:00
Pedro Pinto a296e1e772 Fixed parsing of stop px in link3. 2020-07-07 20:19:41 -04:00
Pedro Pinto 7f53d8b161 Improved logging, fix iceberg order, removed duplicate logging. 2020-07-07 17:01:24 -04:00
John Colvin fbd8bbd4a8 algo abbreviation code uses string.Join instead of list_string (the latter method is redundant, should be removed) 2020-07-07 13:16:18 -05:00
John Colvin 3da52b350f fix pure crash (algo abbreviation code choked on names that end with a space) 2020-07-07 13:15:55 -05:00
Pedro Pinto 243d6827d4 Merge remote-tracking branch 'refs/remotes/origin/ilink3_final' into ilink3_final 2020-07-07 12:12:09 -04:00
Pedro Pinto 00221f9bd9 Fixed spread order entry. 2020-07-07 12:11:11 -04:00
Pedro Pinto a6171ae405 Fixed spread order entry. 2020-07-07 11:55:05 -04:00
Pedro Pinto be5d01a797 Fixed fills. 2020-07-07 06:47:58 -04:00
Pedro Pinto e5d9d324bf Order order entry manual test. 2020-07-06 18:22:39 -04:00
Pedro Pinto c34dee9d96 Taked order status from execution report, parse error message in il3 2020-07-06 18:21:44 -04:00
Pedro Pinto e5a98aab41 Merged with master 2020-07-06 12:49:24 -04:00
Pedro Pinto 10cd35372b Can enter, modify, cancel orders. 2020-07-06 11:38:17 -04:00
Pedro Pinto ad4515be39 Renamed NativeOrder to GLBXNativeOrder 2020-07-06 09:47:34 -04:00
Pedro Pinto ff4d87dd6b Fixed IL3 execution report parser to convert exchange prices. 2020-07-06 09:34:26 -04:00
Pedro Pinto 8ddde3f9da Part 2 of MBO service fix. 2020-07-06 09:34:09 -04:00
Pedro Pinto 51093dc3a5 Added simple tool to watch spark logs. 2020-07-06 09:33:35 -04:00
Pedro Pinto 5d5db9ad9f Fixed MBO parser to extract the right exchange key. 2020-07-06 09:33:06 -04:00
Pedro Pinto fca808fe0d Made ilink3 gw wait for start() before its starts. 2020-07-03 14:11:22 -04:00
Pedro Pinto 07d14f877b More nonsense 2020-07-02 20:28:49 -04:00
Pedro Pinto 5ea6dccdd4 Something here breaks 2020-07-02 19:04:49 -04:00
Pedro Pinto ac956a5c02 Renamed ExchangeOrderIDu64 to ExchangeOrderID64 2020-07-02 19:00:32 -04:00
Pedro Pinto 1fba09cf94 Refactor of ids. 2020-07-02 11:05:04 -04:00
Pedro Pinto 0baa6b875e Fixed merge error. 2020-07-02 09:09:20 -04:00
Pedro Pinto cdacc2d4d4 Merged 2020-07-02 07:26:43 -04:00
Pedro Pinto 1433541947 Automatically advanced our own seq number on connection failure.
It is fairly easy for our sequence number to be behind CME if we
crash. Since we can detect this issue (CME tells us about it) we can
try to fix it automatically by incrementing our own sequence
number. This should allow us to recover automatically in some
scenarios.
2020-07-02 06:57:01 -04:00
Pedro Pinto 1070ca7ace Ran clang-format. 2020-07-02 06:28:32 -04:00
Pedro Pinto 56fa27dd7e Handled non text timestamp in native order. 2020-07-02 06:23:07 -04:00
Pedro Pinto d87b522bc6 Added better logging when terminated by exchange. 2020-07-02 06:22:38 -04:00
Eric Harding 166cb03782 Provide account when parsing execution reports. 2020-07-01 14:40:10 -04:00
John Colvin 40bad84c48 algo studio includes algos with undefined children in the dropdown 2020-07-01 12:09:12 -05:00
Eric Harding c3786d9d64 ilink3: Provide SecurityOracle to execution report parser 2020-07-01 11:50:03 -04:00
Pedro Pinto 9080e3124b Filled in cust_order_handing_inst 2020-07-01 11:29:47 -04:00
Pedro Pinto d9c536124a Fixed logging of session seq numbers. 2020-07-01 11:29:30 -04:00
Pedro Pinto 7de6b2907e Filled in sendercompid in routing record.
iLink3 requires this.
2020-07-01 10:48:01 -04:00
Eric Harding 75f017e9f8 ilink3: Get PartyDetails from sender_cmp_id 2020-07-01 10:29:20 -04:00
Pedro Pinto 7757ab3ea0 Fixed a few bugs. 2020-06-30 19:35:53 -04:00
Pedro Pinto 3186dd383c We can connect now. 2020-06-30 19:03:35 -04:00
Pedro Pinto 45f751c9c6 Bad merge. 2020-06-30 19:03:35 -04:00
Pedro Pinto e4d3774980 Better logging. 2020-06-30 19:03:35 -04:00
Eric Harding eedb3ce05d Clear hmac for json logging 2020-06-30 17:11:01 -04:00
Eric Harding 6a7d38c0fd flip session bool 2020-06-30 16:10:26 -04:00
Eric Harding 7f9967834d add readme note 2020-06-30 15:34:03 -04:00
Eric Harding 31ccbfcd19 Switch to ilink3 logging group 2020-06-30 14:43:38 -04:00
Eric Harding c2abf90cc4 IL3MessageFramer owns outgoing messages so it needs to outlive ILinkGW 2020-06-30 14:36:02 -04:00
Eric Harding 8dc4735248 ilink3: set_state(Error) only after disconnect 2020-06-30 14:25:59 -04:00
Pedro Pinto d940d9f11d For now, caught serialization error in some ilink3 msgs. 2020-06-30 14:10:07 -04:00
Pedro Pinto 1e0c75c6c7 Added iLink3 subsystem for logging. 2020-06-30 14:09:55 -04:00
Eric Harding fbaa17bc40 Add some comments to marketdata.proto 2020-06-30 13:16:30 -04:00
Eric Harding 38e3cd6197 Update market data readme 2020-06-30 13:13:48 -04:00
Pedro Pinto 3bb9961af4 Refactor. 2020-06-30 11:35:40 -04:00
Pedro Pinto da8088fd8d Rebased 2020-06-30 11:27:56 -04:00
Eric Harding 748a65f671 Merge branch 'ilink3_gateway' of bitbucket.org:bluetradesys/spark into ilink3_gateway 2020-06-30 10:05:33 -04:00
Eric Harding 66d80136bd ilink3: Keep outgoing messages alive forever. 2020-06-30 10:04:42 -04:00
Eric Harding 10386311d4 Update market data readme 2020-06-29 12:25:30 -04:00
Eric Harding 629a7f8130 Remove unused class in MD 2020-06-29 12:25:14 -04:00
Pedro Pinto 81189bb2cc Forgot to add message logger. 2020-06-29 12:08:22 -04:00
Pedro Pinto e5681a50f2 Made session name come from date. 2020-06-29 10:59:15 -04:00
Pedro Pinto 69fe4569e3 Made FIX session name available as uint64_t as well as strings. 2020-06-29 10:57:40 -04:00
Pedro Pinto faedb0a49e Feed handler. 2020-06-29 07:34:51 -04:00
Pedro Pinto c7caf66f9c Changed the ILink3 log format to json. 2020-06-26 19:11:05 -04:00
Pedro Pinto 14504f4a94 Cleaned up comment. 2020-06-26 19:10:49 -04:00
Pedro Pinto 5b601a4016 Fixed encofing of clorid. 2020-06-26 19:10:23 -04:00
John Colvin e3207b921a truncate list of securities in transitive compare test (was timing out due to too many permutations) 2020-06-26 13:32:27 -05:00
Pedro Pinto d148255917 Refactored mdp3feedhandler. 2020-06-26 08:08:07 -04:00
Taha Afzal 98db8e61a5 Removing hardcoded ref's to Katallage 2020-06-25 17:05:10 -04:00
Pedro Pinto 45aa75e8bb Brought back the ilink3/ilink2 encoding abstraction. 2020-06-25 16:49:46 -04:00
Pedro Pinto b2471d45b2 Added tool 2020-06-25 16:49:10 -04:00
Pedro Pinto 11e2df8c76 Tweaked build tools. 2020-06-25 16:49:10 -04:00
Pedro Pinto cba6852655 Updated docker 2020-06-25 16:49:10 -04:00
Pedro Pinto 5eeaedde26 Added a few build tools. 2020-06-25 16:49:10 -04:00
Pedro Pinto b63052dbaa Updated ICE Onixs 2020-06-25 16:49:10 -04:00
Pedro Pinto 29f5bc798e Added +x 2020-06-25 16:49:10 -04:00
Pedro Pinto 04603acbb9 Added publishing of new routing info when orders are recorevered from disk 2020-06-25 16:49:10 -04:00
Pedro Pinto bc6890055e temp commit, fixing glbxnative order 2020-06-25 16:49:10 -04:00
Pedro Pinto ea94c09c78 Eric intermediate ilink3 fixes 2020-06-25 16:49:10 -04:00
Pedro Pinto 00b1d3c51c Feed handler 2020-06-25 06:02:17 -04:00
Eric Harding e3c3bc78fc Note what this address list is for 2020-06-24 20:55:20 -04:00
Eric Harding a11d390dcd ilink3 message logging 2020-06-24 20:52:21 -04:00
Eric Harding 7c74a961d4 Add canned cert sessions for ilink3 nrcert 2020-06-24 20:43:27 -04:00
Eric Harding 5db21ad2ca fix build, session and clordid changes 2020-06-24 19:32:12 -04:00
Pedro Pinto b68c963b5e c2 2020-06-24 19:16:59 -04:00
Pedro Pinto a43070f812 c1 2020-06-24 19:15:14 -04:00
Eric Harding f703dabdfe Raw msg should be 2 strings 2020-06-24 17:53:30 -04:00
Eric Harding 237d3eea4b encode_clordid needs security key 2020-06-24 17:29:06 -04:00
Taha Afzal e009316bfb Merge branch 'DJ_ICE' of bitbucket.org:bluetradesys/spark into DJ_ICE 2020-06-24 17:13:38 -04:00
Taha Afzal 5528efd2d2 Cleaning up 2020-06-24 17:13:31 -04:00
Eric Harding 818bdec130 Add NrCert keys 2020-06-24 15:07:02 -04:00
John Colvin 09f91735fe Security sort tests run with ice securities 2020-06-24 12:58:29 -05:00
John Colvin d9fc18547b SecurityHelper.Compare fallsback on 'ToString' then 'Id' comparisons to guarentee deterministic sort 2020-06-24 12:56:29 -05:00
Eric Harding d257cf2c77 Disable broken ilink3 tests for now 2020-06-24 13:28:33 -04:00
Eric Harding 079f46404f Add some testing notes 2020-06-24 10:57:15 -04:00
Pedro Pinto f6b5ab040c Refactor. 2020-06-24 08:25:56 -04:00
Pedro Pinto 86ddf3078d Refactor. 2020-06-24 07:32:59 -04:00
Pedro Pinto bc4fe19bdb Refactor. 2020-06-24 07:32:33 -04:00
Eric Harding edcc73e934 Remove old ILink3ExecutionGateway. Instead use GlbxIlink3ExecutionGateway 2020-06-23 22:41:33 -04:00
Taha Afzal 5905ca3e92 Merging frmo master 2020-06-23 13:51:14 -04:00
Pedro Pinto bb259b128a More tools 2020-06-23 13:43:05 -04:00
Pedro Pinto bc7ac8523b Added tool 2020-06-23 13:06:15 -04:00
Eric Harding 0c4c2b7231 cme autocert msgw_failover test script 2020-06-23 13:05:32 -04:00
Eric Harding 420351c093 Replay refactor #4 2020-06-23 12:01:52 -04:00
Eric Harding f69e6b89c5 Sequence number fixes 2020-06-22 22:23:13 -04:00
Eric Harding c3e22e4b23 Recovery revamp #3 2020-06-22 20:16:21 -04:00
John Colvin 32b7b7f40d quantity conversion for ladder right click order 2020-06-22 17:02:23 -05:00
Pedro Pinto 1d443531fd Merge branch 'master' into spartan_tas 2020-06-22 11:27:43 -04:00
Pedro Pinto 54e5a68730 Tweaked build tools. 2020-06-22 08:41:19 -04:00
Pedro Pinto 880c95d92b Tweaked build tools. 2020-06-20 17:17:22 -04:00
Pedro Pinto 40956c5335 More spartan tools. 2020-06-20 17:13:50 -04:00
Pedro Pinto 44aba08978 Tweaked build tools. 2020-06-20 17:13:29 -04:00
John Colvin e7da6dd79e remove unused 'save/remove_template_cmd' props from OrderPropertiesEditor 2020-06-19 16:42:38 -05:00
John Colvin 8bf78aa880 cleanup/normalize whitespace in OrderDataHelper.cs 2020-06-19 16:37:21 -05:00
John Colvin 1c44165181 remove unused methods/props in OrderDataHelper.cs 2020-06-19 16:35:15 -05:00
John Colvin 8165ec0e3d fix AlgoProvider.get_permitted_algos (seed intersection aggregate a full set instead of empty) 2020-06-19 16:14:58 -05:00
John Colvin 7d1ec5b82a Merge remote-tracking branch 'refs/remotes/origin/DJ_ICE' into DJ_ICE 2020-06-19 15:48:55 -05:00
John Colvin 02e7fb1ee0 iceberg 'show quantity' param uses display divisor 2020-06-19 15:45:17 -05:00
John Colvin c0ea6943e1 AlgoProvider ensures synthetic security algo's last child is a Spreader algo 2020-06-19 15:12:42 -05:00
John Colvin 4c914a2d48 Merge branch 'DJ_ICE_algo_config' into DJ_ICE 2020-06-19 10:59:10 -05:00
Taha Afzal 0ee86f2dd4 CPP override fix 2020-06-19 11:58:58 -04:00
Taha Afzal 00bf3c7f47 Fixing the PNL timestamp 2020-06-19 11:10:23 -04:00
Taha Afzal b61e18d10e CPP logic 2020-06-19 00:44:13 -04:00
John Colvin 90b2607f86 pnl window symbol filter items are sorted 2020-06-18 13:06:41 -05:00
John Colvin e452697088 remove struct contraint on TKey in KeyedMultiSelector, and TableUpdateItemsFilter 2020-06-18 12:50:23 -05:00
John Colvin 1988443497 fix pnl symbol filter (was checking the security.Symbol instead of the 'pnl_symbol') 2020-06-18 12:40:07 -05:00
John Colvin 3f33627f00 add pnl_cpp_tuple extension method bones (taha will implement) 2020-06-18 12:14:44 -05:00
John Colvin 0610612ae6 make PNLData.with a member method instead of extension so it isn't
passed by value (it's a large struct)
2020-06-18 11:35:00 -05:00
John Colvin efcf78bb95 pnl window restores fill/market price decimal format when workspace loaded 2020-06-18 11:28:17 -05:00
John Colvin 03678e79a5 PNLSettings.cs line endings (need to figure out why they keep changing) 2020-06-18 11:00:32 -05:00
Taha Afzal c15a364496 Merge branch 'DJ_ICE_pnl_decimals' into DJ_ICE 2020-06-17 23:50:17 -04:00
Taha Afzal d8ec713dc5 Spreads in PNL show under a different symbol 2020-06-17 23:22:33 -04:00
Taha Afzal daaa7311a0 Merge branch 'DJ_ICE_pnl_symbol' into DJ_ICE_cpp_mult 2020-06-17 22:58:10 -04:00
Taha Afzal f893af1930 Strip Legs are not counted toward futures 2020-06-17 22:57:08 -04:00
Taha Afzal 6ec413c516 Dictinction bw spread legs and strip legs 2020-06-17 15:50:06 -04:00
John Colvin a2a0d88a81 pnl window disposes filters of type IDisposable 2020-06-17 12:39:59 -05:00
John Colvin 7a4dca9589 PNLWindow uses special pnl_symbol (taha will implement pnl_symbol method later, returns regular symbol in meantime) 2020-06-17 12:30:01 -05:00
John Colvin b21cd12cea copy AppendTable extension from another branch 2020-06-17 12:24:58 -05:00
John Colvin ec0b726751 ladder mid tick rounds down for negative numbers (still rounds up for positive) 2020-06-16 16:40:28 -05:00
Pedro Pinto 9ec1c8fdae Merge branch 'master' into spartan_tas 2020-06-16 17:05:11 -04:00
John Colvin a9f2b4ad9a PNL window - setting for market/fill price column decimal places 2020-06-16 15:32:51 -05:00
Taha Afzal 9cb3a21e5a position service exposes both cpp and overridden cpp 2020-06-15 23:05:53 -04:00
Eric Harding 3231ffb343 Meaningless autocert code 2020-06-15 22:48:28 -04:00
Eric Harding 8d7f1738cf update cert secure logon 2020-06-15 22:47:30 -04:00
John Colvin 60d4dd87fd rename ISecurityAlgoProvider.cs -> IAlgoProvider.cs 2020-06-15 17:01:02 -05:00
John Colvin 3a7eeda70e AlgoProvider.subscribe_algos always fires at least once (doesn't depend on studio algos being present) 2020-06-15 17:00:13 -05:00
John Colvin 712146e028 Merge branch 'algo-type-config' into DJ_ICE_algo_config 2020-06-15 16:57:07 -05:00
Eric Harding 9101214e66 Add message logger and revamp replay sequence handling 2020-06-15 14:51:41 -04:00
Taha Afzal f381d536d6 Merge branch 'DJ_ICE' into DJ_ICE_cpp_mult 2020-06-15 09:53:32 -04:00
Pedro Pinto d8d5f3b93c Merge branch 'DJ_ICE' of bitbucket.org:bluetradesys/spark into DJ_ICE 2020-06-15 09:29:08 -04:00
Pedro Pinto 1d4dc47a62 Added missing update to session/high low. 2020-06-15 09:28:23 -04:00
Taha Afzal 482c300b72 Merge branch 'DJ_ICE_space_bar_recenter' into DJ_ICE 2020-06-14 21:08:51 -04:00
Pedro Pinto 59774ccbb5 Updated docker 2020-06-14 15:27:18 -04:00
Pedro Pinto fcb6c9b8d9 Added a few build tools. 2020-06-14 15:27:01 -04:00
Pedro Pinto 69ad995ba9 Updated docker 2020-06-14 15:23:18 -04:00
Pedro Pinto 0b26ec1132 Added a few build tools. 2020-06-14 15:21:55 -04:00
John Colvin 3de494c80f recenter all ladders on spacebar (don't require shift) 2020-06-12 17:05:53 -05:00
Eric Harding c6b2e2f21e OMF setting to true, always 2020-06-12 17:49:37 -04:00
Eric Harding 2eac97c1a9 meaningless cert change 2020-06-12 15:18:20 -04:00
Eric Harding b4b0e10f29 Fix IOC=FAK order type (not FOK) 2020-06-12 15:17:38 -04:00
John Colvin 7deb25dd1c fix ladder recenter on spacebar 2020-06-12 13:16:57 -05:00
Pedro Pinto 7a29ae1a83 Merge branch 'DJ_ICE' of bitbucket.org:bluetradesys/spark into DJ_ICE 2020-06-12 08:44:36 -04:00
Pedro Pinto 6da893128c Cleaned up logging. 2020-06-12 08:44:20 -04:00
Pedro Pinto 2cb458af2d Added OnBehalfofcompid tag to ICE as per cert. 2020-06-12 08:42:40 -04:00
Taha Afzal 04db38d627 Merge branch 'DJ_ICE_release_candidates' into DJ_ICE 2020-06-11 21:22:18 -04:00
John Colvin a144b03361 ladder recenter on spacebar (across thread barrier) 2020-06-11 18:28:37 -05:00
John Colvin 9c89a9a47e TabDocument forwards key press events to IShellWindows 2020-06-11 18:24:26 -05:00
John Colvin 007af71bb2 fix ladder center-on-settle behavior once and for all 2020-06-11 17:09:05 -05:00
John Colvin 7cfe8f4214 add override cpp context menu item in pnl window 2020-06-11 16:33:28 -05:00
John Colvin 24f8e66953 add IPositionModel (has function to override cpp) 2020-06-11 16:30:35 -05:00
John Colvin 90fc6d901f add PropertyEditor control/dialog 2020-06-11 16:29:45 -05:00
Eric Harding 38d9db4a90 Session and sequence number fixes 2020-06-11 11:36:37 -04:00
Taha Afzal a216d1cc81 Fixing sell order check for distance from settlement 2020-06-11 09:19:03 -04:00
Pedro Pinto f8395c11b5 Fixed application, vendor tags for DJ. 2020-06-11 08:26:26 -04:00
John Colvin 2b0e46ed38 fix ladder center around settle behavior 2020-06-11 00:36:11 -05:00
John Colvin 5f3b243265 'max settlement cross ticks limit' ladder setting 2020-06-10 18:16:52 -05:00
John Colvin c9ce2d18bf simplify 'Safety Checks' content alignment in ladder settings dialog 2020-06-10 17:33:13 -05:00
John Colvin 7b563ba66c ladder centers around settlement price if no bid/ask market 2020-06-10 13:17:01 -05:00
Eric Harding 6a679ff78c Fix for cancel/replace 2020-06-10 14:13:28 -04:00
Taha Afzal 3e1be70923 Fix for HHD Balmo spreads 2020-06-10 13:57:19 -04:00
John Colvin aadd7df6c6 quantity divisor is 1 for 'ICE Lots' secs 2020-06-09 22:49:57 -05:00
Eric Harding aba3f21020 stop order does not carry price 2020-06-09 19:18:36 -04:00
John Colvin 8206132a37 quantity conversion in pnl for dj 2020-06-09 17:27:29 -05:00
John Colvin f8b3fd2e14 QuantityConversionData.to/from_display extensions use 'safe_divide' 2020-06-09 17:10:21 -05:00
Eric Harding fede19fd11 stop-limit success 2020-06-09 16:30:00 -04:00
John Colvin 8b17ee72ff quantity conversion in ladder when last size is transposed over volume column 2020-06-09 10:50:06 -05:00
Pedro Pinto 0508858859 Better parser 2020-06-09 10:04:15 -04:00
Eric Harding 3fa8dbf112 Cannot send price with market order 2020-06-08 23:09:10 -04:00
Eric Harding 77ae4703b3 Fix clOrdID and custOrdCapacity 2020-06-08 22:58:53 -04:00
John Colvin 31ed473999 quantity conversion in time and sales for dj 2020-06-08 17:25:13 -05:00
John Colvin 673805a7f4 quantity conversion in fills for dj 2020-06-08 17:10:39 -05:00
John Colvin 91422449e9 quantity conversion in manual fills for dj 2020-06-08 17:02:55 -05:00
John Colvin 438089a1cd quantity conversion in mview for dj 2020-06-08 16:36:57 -05:00
John Colvin 6a186d1d7e MarketViewRow - remove unreferenced fields 2020-06-08 16:33:55 -05:00
John Colvin 9d831a2569 fix line endings in MarketViewVM.cs 2020-06-08 16:33:55 -05:00
John Colvin d47cf1a54e (Dynamic)DoubleDivisorConverter uses safe_divide extension 2020-06-08 16:33:55 -05:00
John Colvin 8c9f669e72 refactor IsRealNonZero to is_real_positive (orig name was a typo), add a few more similar extensions to MathUtils 2020-06-08 16:33:55 -05:00
John Colvin f5bda11797 quantity conversion in orderbook for dj 2020-06-08 12:19:43 -05:00
John Colvin 1841a75fec quantity conversion in ladder/ticket for dj 2020-06-08 12:19:43 -05:00
John Colvin 34cdaeec93 don't use Disposable.replace bc it creates the next disposable before disposing the previous one 2020-06-07 16:01:27 -05:00
Taha Afzal 3230fb9e48 Regular TAS contract's formatting did not have the word TAS in it 2020-06-05 16:42:05 -04:00
Taha Afzal 888b4e22c0 Ignoring strips with > 512 components 2020-06-05 14:11:34 -04:00
Taha Afzal 534ce5a8ec strips are XL too 2020-06-05 13:12:57 -04:00
Taha Afzal c2b9ac57dc Fixing build 2020-06-05 11:55:54 -04:00
Taha Afzal 2783361325 Merge branch 'master' into DJ_ICE 2020-06-05 10:50:42 -04:00
Taha Afzal 46d35131d7 Overridable cpps 2020-06-05 10:01:18 -04:00
Pedro Pinto 3b95154c04 Updated ICE Onixs 2020-06-05 09:11:03 -04:00
Pedro Pinto e840b9617f Tweaked MD to Json parsing. 2020-06-05 08:22:24 -04:00
Pedro Pinto 19ee603413 Merged from master 2020-06-04 13:48:13 -04:00
Pedro Pinto 1a6b918853 Updated docker 2020-06-04 13:43:25 -04:00
Pedro Pinto bc22605a25 Added +x 2020-06-04 13:43:00 -04:00
Pedro Pinto f3d28add1c Added publishing of new routing info when orders are recorevered from disk 2020-06-04 13:41:34 -04:00
Eric Harding a28bfa1175 execution report handling tweaks 2020-06-04 10:05:44 -04:00
Eric Harding 4e4a48283d bool parse_report(string&, SecurityOracle&, ExecutionReport*); 2020-06-03 13:09:56 -04:00
Taha Afzal 63d260a6f8 Security formatting for ICE 2020-06-03 09:42:44 -04:00
Pedro Pinto 7a761d00ce Added security oracle to SessionStore so we can resolve exe reports. 2020-06-03 08:51:31 -04:00
Pedro Pinto 968be6a99a Added storage for sessions. Still missing parsing of exec reports. 2020-06-02 17:13:53 -04:00
Taha Afzal 9b4a63b4a8 Changes to make HNG/HIS/HEN/HHD to work 2020-06-02 11:15:47 -04:00
Pedro Pinto 03404eb3f1 Made some progress in GLBXiLink3ExecutionGateway 2020-06-02 09:16:02 -04:00
Pedro Pinto ff1a970982 Fixed build some more 2020-05-28 14:29:45 -04:00
Pedro Pinto ed890b4d84 Fixed broken tests for subscribe_exe_report change 2020-05-28 13:50:04 -04:00
Pedro Pinto e87003cc41 Merged with master 2020-05-28 12:21:51 -04:00
Eric Harding bc06037843 Fix the build 2020-05-28 12:20:30 -04:00
Pedro Pinto a502c365e5 Build tweaks 2020-05-28 12:15:16 -04:00
Pedro Pinto c4c7cebfc5 Updated externals 2020-05-28 12:12:46 -04:00
Pedro Pinto f18bcd2995 Build tweaks 2020-05-28 12:12:46 -04:00
Pedro Pinto a6a1b6ac53 Fixed clang build. 2020-05-28 12:12:46 -04:00
Pedro Pinto fdacd8b543 Added -f when removing simlinks in build setup. 2020-05-28 12:02:46 -04:00
John Colvin 3d1de9a0c7 nuget_restore.cmd uses externals package source (builds offline) 2020-05-28 12:02:31 -04:00
John Colvin b2b3fa5949 update jenkinsbuild.cmd to use externals nuget source (for windows) 2020-05-28 12:02:17 -04:00
Pedro Pinto 86ecf69820 Updated external subrepos 2020-05-28 11:53:51 -04:00
Eric Harding 8c3da4e43c Re-arrange some methods in ILinkGW.h 2020-05-27 16:51:36 -04:00
Eric Harding 06b955dceb Exchange seq number fix 2020-05-27 11:49:08 -04:00
Eric Harding e75d15146c cme cert test update 2020-05-26 23:55:27 -04:00
Eric Harding cb07384c9f Fix problem with party details 2020-05-26 23:55:13 -04:00
Eric Harding fc9e502539 cert refactor 2020-05-26 12:40:16 -04:00
Eric Harding fcbf3388c0 update ilinkbinaryxml templates 2020-05-26 12:40:04 -04:00
Eric Harding 899bea940f improve ilinkgw logging 2020-05-26 12:39:55 -04:00
Eric Harding 14b7509607 ensure local launch timezone 2020-05-26 12:39:41 -04:00
Pedro Pinto 8f537a8fda Merged in build_improvements (pull request #414)
Build improvements
2020-05-26 16:32:43 +00:00
Pedro Pinto 01b9ff6b47 Dropped celoxica 2020-05-26 12:28:35 -04:00
Pedro Pinto 2609663d3e Updated setup_builds to work even if its run outside the tree. 2020-05-26 12:06:08 -04:00
Eric Harding 25668e8df0 dont' build web client on wsl2 2020-05-26 11:54:19 -04:00
Pedro Pinto fd89241611 Updated externals pointer 2020-05-26 11:49:29 -04:00
John Colvin a69118c5d3 fix line endings in release_notes 2020-05-22 23:42:27 -05:00
John Colvin 5accd0e2b4 Merge branch 'master' into prod 2020-05-22 19:14:16 -05:00
John Colvin df5ad61cd2 release notes for synthetic gui integer tick sizes 2020-05-22 19:12:29 -05:00
John Colvin 4a7674eb29 synthetic gui supports integer tick sizes 2020-05-22 18:15:53 -05:00
Eric Harding 5a458287f4 update license search info in disable_onixs.py 2020-05-22 15:18:46 -04:00
John Colvin 5921f9f6b5 Merge branch 'master' into prod 2020-05-22 12:34:18 -05:00
John Colvin 4c73a63ae8 release notes for bug fix (unsorted custom state grid params in orderbook) 2020-05-22 12:30:53 -05:00
John Colvin 42b1c921a8 OrderBook custom state grid params are sorted alphabetically (again) 2020-05-22 12:24:42 -05:00
Pedro Pinto fab3334b1e Updated release notes 2020-05-22 11:23:03 -04:00
Pedro Pinto 7239dd3ade Merge branch 'master' into prod 2020-05-22 11:20:17 -04:00
John Colvin dd4c8eb649 Merged csharp-api-examples-sln into master 2020-05-22 10:19:13 -05:00
John Colvin 76a29bdc8a client ui supports all integer tick sizes (not just 1) 2020-05-21 15:26:50 -05:00
John Colvin 06d708f3ea new csharp api examples 2020-05-21 15:17:32 -05:00
John Colvin e2f70cbc19 minor config tweaks needed after upgrading VisualStudio 2020-05-21 13:04:00 -05:00
Pedro Pinto 9d54e47a03 Update CMakeDeps 2020-05-19 17:00:24 -04:00
Eric Harding 5345ba8ff8 securities for sending orders ilink3 test 2020-05-19 15:58:56 -05:00
John Colvin faccdf581e Merged in limit-algo-clean-history (pull request #413)
Limit algo clean history
2020-05-19 13:53:07 +00:00
Pedro Pinto 515ed5aabd Merged with master 2020-05-19 07:07:13 -04:00
John Colvin 1a64714a54 always log errors observed in LadderGridHost._volume_from_row (not just when it fails after max_num_tries) 2020-05-18 17:03:39 -05:00
John Colvin 3ba6792a85 wrap LadderGridHost._volume_from_row in try/catch (addresses Pure client crash) 2020-05-18 16:46:23 -05:00
Pedro Pinto c32a7f1d62 Made native orders calculate route when recovered from disk.
This is in response to the Pure debacle of May 17th. CME changed the
MSGW used for certain products. As we only route orders once, when
they are created, any orders that already existed never transitioned
to the new MSGW. This made it so that users could no longer control
these orders. With this change we recalculate routes when the orders
are first loaded from disk. Assuming we have up to date securities,
something that sometimes does not happen unfortunately, this should
result in the order being automatically relocated to its new MSGW. As
a bonus we also get the hability to change MSGW configuration even if
there are working for that MSGW.
2020-05-18 08:59:42 -04:00
Pedro Pinto 12e068a3d1 Refactor of Spartan 2020-05-17 11:16:28 -04:00
John Colvin 10e75f30e6 fix algo params grid enum template for GenericOrderVMs 2020-05-15 13:16:25 -05:00
John Colvin 20eac19c4f GenericOrderVM - normalize white space 2020-05-15 13:16:25 -05:00
John Colvin 8c0765a2c7 fix build 2020-05-15 10:34:59 -05:00
Pedro Pinto 8268599893 TAS does not support GTC orders. 2020-05-15 09:50:38 -04:00
Taha Afzal 7a1f88e813 Merge branch 'limit-algo-clean-history' of bitbucket.org:bluetradesys/spark into limit-algo-clean-history 2020-05-14 22:01:32 -04:00
Taha Afzal 3420f14c8a DeleteAndCover detached hedges by default: 2020-05-14 22:01:22 -04:00
Eric Harding 9bf05973bd Add in/out to logs 2020-05-14 20:51:15 -05:00
John Colvin 86277dfbfe config toggle for new 'specific' CustomOrderDefinition params dialog (disabled by default) 2020-05-14 20:14:51 -05:00
John Colvin 4839e464c6 added dialog to edit CustomOrderDefinition params of a specific algo node 2020-05-14 20:02:14 -05:00
John Colvin dc2ad071a9 GenericOrderHelper should use 'FirstOrDefault' (not 'First') 2020-05-14 19:59:06 -05:00
John Colvin 65e49992f9 LimitCoverAlgo.do_update - remove redundant conversion from DynamicOrderDefinition to LimitCoverDefinition 2020-05-14 17:08:01 -05:00
John Colvin afbb9ae92d LimitCover algo - 'Hedge Ticks' and 'Top Ticks Offset' params actually assigned to DeleteAndCover child 2020-05-14 12:29:29 -05:00
John Colvin ff088142d9 fix custom state output grid 2020-05-14 12:29:29 -05:00
Pedro Pinto 93b7cf346b Added an option for the Cover algo to detach hedges. 2020-05-14 10:20:46 -04:00
Eric Harding f0edeadd50 Make shared mem size configurable 2020-05-13 20:29:38 -05:00
Eric Harding cea4d05bc4 log every msg 2020-05-13 20:19:48 -05:00
Taha Afzal 8ee9b84488 Merge branch 'limit-algo-clean-history' of bitbucket.org:bluetradesys/spark into limit-algo-clean-history 2020-05-13 20:39:13 -04:00
Taha Afzal e3648f5373 Better Logging 2020-05-13 20:39:07 -04:00
John Colvin facd3a9d81 LimitCoverAlgo - remove unnecessary else block in 'do_before_launch' 2020-05-13 17:26:13 -05:00
John Colvin 84969cb481 LimitCoverAlgo - dont update me->child_qty in the child_changed callback, since its async 2020-05-13 17:21:32 -05:00
John Colvin 6d521e77db LimitCoverAlgo - don't override do_launch_attached (it's not supported) 2020-05-13 17:15:30 -05:00
John Colvin 82c49f8f49 remove redundant methods: tick_up/less, payup/less 2020-05-13 17:15:30 -05:00
John Colvin e074309da1 typo broke build (missed constructor in 'TickOffset' -> 'PriceOffset' refactor) 2020-05-13 17:15:30 -05:00
John Colvin 2d622a5f39 LimitCover algo - convert 'ticks_offset' param be in price terms 2020-05-13 16:55:01 -05:00
John Colvin d51d20e84c LimitCover algo - remove cancel_on_blah params, add hedge_ticks 2020-05-13 16:18:46 -05:00
John Colvin 2ccdef9dc5 fix clang build errors 2020-05-13 15:59:45 -05:00
John Colvin 42e62a30bf to_string(OrderError) uses generated protobuf enum Name method 2020-05-13 15:32:27 -05:00
Eric Harding 0b7208784b Can't take the double negatives anymore 2020-05-13 14:01:16 -05:00
John Colvin c233c607fa Formatter.h - pass strings/templated args by const ref instead of value 2020-05-13 13:40:07 -05:00
John Colvin 462cb930f7 dont redefine ChildTemplate 2020-05-13 13:20:55 -05:00
Eric Harding 059ccbdab6 Merge branch 'master' of bitbucket.org:bluetradesys/spark into ilink3_gateway 2020-05-13 11:05:31 -05:00
Pedro Pinto 2c0f920422 Merge branch 'master' of bitbucket.org:bluetradesys/spark 2020-05-13 08:54:14 -04:00
Pedro Pinto 5ee26065ca Updated .gitignore 2020-05-13 08:53:52 -04:00
John Colvin 550a4e8d50 add config toggle to enable/disable LimitCover algo 2020-05-12 19:11:16 -05:00
John Colvin 99b8221efc LimitCoverAlgo unit tests 2020-05-12 19:11:16 -05:00
John Colvin 19e74c30f8 AlgoTestDriverBase - AlgoState << operator 2020-05-12 19:03:53 -05:00
John Colvin 26693a4c98 AlgoTestDriverBase - after_child_changed callback, and find_child method 2020-05-12 19:03:53 -05:00
John Colvin d8bdb69a7c AlgoTestDriverBase - ChildTemplate impl, added OrderDefinition param to child_launching callback 2020-05-12 19:03:53 -05:00
John Colvin 6d357a74e1 AlgoTestDriverBase - expose cancel/cancel_child methods 2020-05-12 19:03:53 -05:00
John Colvin 73f4e4814c LimitCover algo for pure 2020-05-12 19:03:53 -05:00
John Colvin 312bc4be15 add Formatter.h (defines commonly needed << operators for algos, basic string formatting utils) 2020-05-12 18:55:37 -05:00
John Colvin a0c3ba449a add DynamicOrderAdapter (util to keep param proto conversion code out of the algo) 2020-05-12 18:55:37 -05:00
John Colvin d5a2a7f3f0 orderman_utils.h pragma once 2020-05-12 18:55:37 -05:00
John Colvin eda8c94def replicate_to_linux_vm.py - ignore some dirs generated by visual studio 2020-05-12 18:55:37 -05:00
John Colvin 9a8e80e149 add payup/less price calc utils (Security.h)' 2020-05-12 18:55:37 -05:00
John Colvin 6a7e3d739d fix typo 'epislon' -> 'epsilon' 2020-05-12 15:58:00 -05:00
Taha Afzal e6b8274813 DeletAndCoverOrderDefinition does not contain the nested enum anymore 2020-05-12 15:58:00 -05:00
Taha Afzal 9783520c62 DeleteAndCover completed 2020-05-12 15:58:00 -05:00
Taha Afzal 7e7f0bc37f Adding DeleteAndCover proto 2020-05-12 15:58:00 -05:00
Eric Harding 75eaf8c3d4 IL3ExecutionReportParser 2020-05-12 13:54:28 -05:00
John Colvin b9e2ecdffa Merged in transitive-security-compare (pull request #411)
Transitive security compare

Approved-by: Eric Harding
2020-05-11 19:42:50 +00:00
Eric Harding f1c021a474 Merged in security_preload (pull request #412)
Security preload
2020-05-11 19:41:00 +00:00
Eric Harding 6fda54ffa1 Merged master into security_preload 2020-05-11 15:44:50 +00:00
Taha Afzal bdb0adc16c TASCounter test fixed 2020-05-07 13:07:44 -04:00
Eric Harding 4b19b0ea14 update launch.json 2020-05-06 18:26:03 -05:00
Eric Harding fab1b4dd0f Add SecurityPreload key to pre-load securities from the security DB for sunday startup. 2020-05-06 18:25:29 -05:00
John Colvin f3ed3075cf fix Security comparison impl (its transitive now) 2020-05-06 17:35:46 -05:00
John Colvin 742af36b93 Security comparison unit test (addresses bug that caused Krandall OrderBook crash) 2020-05-06 17:35:46 -05:00
John Colvin c573b5fbb2 add ProtoBufCapture extension (writes TableUpdate state to file when subscription is disposed) 2020-05-06 17:30:00 -05:00
Eric Harding 2d6d4af594 add vscode spark local linux debugger settings 2020-05-06 12:27:11 -05:00
Eric Harding 1e8fcd794f Update ExecutionReport::exchange_order_id 2020-05-06 12:22:33 -05:00
John Colvin 2dcfad979c move FileStreamHelper.cs to spark_core 2020-05-06 12:11:03 -05:00
Eric Harding 726329c4bf Add ilink3 execution report parser and order test 2020-05-06 11:56:52 -05:00
Eric Harding 2d01f3f0f4 CME Certification requires very specific UUID generation 2020-05-06 11:56:01 -05:00
Eric Harding 2a595c0fd7 cme cert hard coding 2020-05-06 11:54:32 -05:00
Taha Afzal ba7e35649e Ignore Spread Pos Limits are defaulted to true 2020-05-06 10:36:40 -04:00
Eric Harding 5f9866c9e8 SecurityCache now hands out raw pointers. SecurityOracle now indexes exchange security key 2020-05-05 11:17:16 -05:00
Pedro Pinto 6365378947 Changed TAS order to be GTC rather than DAY (since we logout). 2020-05-05 06:52:11 -04:00
Pedro Pinto cda4a870b7 Merge branch 'master' of bitbucket.org:bluetradesys/spark 2020-05-05 06:14:30 -04:00
Pedro Pinto b3a8564365 Fixed int32 params in DynamicOrders to be int32 rathern than uint32. 2020-05-05 06:13:40 -04:00
Pedro Pinto 1e0114a4cf Treated disconnected orders as working. 2020-05-05 06:13:06 -04:00
Eric Harding 3a6e95ef05 Downgrade security scanner message to info 2020-05-04 16:16:55 -04:00
Eric Harding 78f1cf88e0 cmake needs love too 2020-05-04 11:16:21 -05:00
Eric Harding 4877436877 Ilink3 order unit test 2020-05-04 11:32:30 -04:00
Pedro Pinto 78d238fdfb Ran clang-format on ICEExecutionGateway.cpp 2020-05-04 09:33:40 -04:00
Eric Harding 1b43124756 Add ReentrancyGuard.h 2020-05-02 13:10:49 -04:00
Eric Harding 6875263743 Update 'update' instructions for spark_sdk 2020-05-01 14:17:07 -04:00
Taha Afzal eac828f323 Merge branch 'master' into TASCounter 2020-05-01 13:49:27 -04:00
Taha Afzal 1635d6f649 Added test for TASCounter 2020-05-01 13:48:50 -04:00
Eric Harding a1feb3fddf PrimaryGatewayConnectionEnforcement 2020-05-01 13:22:35 -04:00
Eric Harding 2da535e9ff Update onixs license 2020-05-01 12:51:31 -04:00
Eric Harding 024328bf8b Refactor empty session 2020-05-01 11:44:03 -04:00
Pedro Pinto d90fa1a1e8 Launched regular spark after TAS is concluded. 2020-05-01 07:41:23 -04:00
Taha Afzal a98be44a40 Merge branch 'master' into TASCounter 2020-04-30 13:59:49 -04:00
John Colvin 6210ac2ee6 OrderBook custom state grid only shows data if the selected rows are of the same root/branch 2020-04-29 16:21:17 -05:00
Pedro Pinto 3e817d4fb0 Refactor 2020-04-29 13:16:16 -04:00
Eric Harding 80d7e34bf1 Fixes for updated sbe codegen 2020-04-28 18:16:45 -04:00
Pedro Pinto cfebab0488 Merged in api_improvements (pull request #405)
Api improvements

Approved-by: John Colvin <john.colvin@bluetradesys.com>
2020-04-28 20:06:53 +00:00
Pedro Pinto eacd766359 Updated release notes. 2020-04-28 16:05:21 -04:00
Pedro Pinto 8fb8f8ff58 Merge branch 'master' into api_improvements 2020-04-28 15:58:43 -04:00
Taha Afzal f4b22816a2 Putting config to hide TASCounter 2020-04-27 23:39:41 -04:00
Eric Harding 8ab69c919b Improve cme provided error message 2020-04-27 16:56:32 -04:00
Eric Harding 99531bcfa0 Update ilink3 generated templates 2020-04-27 16:50:54 -04:00
Eric Harding 6bd516d4f2 cleanup 2020-04-27 11:26:42 -04:00
Taha Afzal 1029a464d7 Fixing the bts::timestamp tp protobuf timestamp function (unused, but useful) 2020-04-27 09:57:21 -04:00
Taha Afzal fd8b8e03ea cleanup, comments 2020-04-26 23:10:16 -04:00
Eric Harding 1a1d771e1b addition ilink3 tests 2020-04-25 13:18:58 -04:00
Eric Harding 050fcf7c6e Passing simple log in test 2020-04-24 12:31:30 -04:00
Pedro Pinto 41cf66a943 Added the hability to retrieve all securities in the API. 2020-04-24 08:00:13 -04:00
Pedro Pinto 1c57c9a012 Added position updates in the API. 2020-04-24 07:03:40 -04:00
Taha Afzal 8ccab66120 Merge branch 'add_custom_algo_state_reporting_to_api' into TASCounter 2020-04-23 18:14:28 -04:00
John Colvin e2b2f7ec9c better default widths for custom state grid columns 2020-04-23 16:11:35 -05:00
John Colvin b3c897bf0f custom state grid params are sorted alphabetically 2020-04-23 16:02:38 -05:00
John Colvin 87c9f54c8b custom state grid populates with first child row that has params (if selected row doesn't have any itself) 2020-04-23 15:59:49 -05:00
John Colvin df56b76ab6 OrderBookRowVM - remove dead property 'is_visible' 2020-04-23 15:54:30 -05:00
Taha Afzal 28ff13db11 Merge branch 'add_custom_algo_state_reporting_to_api' into TASCounter 2020-04-23 13:23:30 -04:00
Taha Afzal 2957075769 comments 2020-04-23 13:22:33 -04:00
John Colvin a6477824a8 OrderBookVM - clear the previous 'custom state' params before adding the new ones 2020-04-23 11:16:47 -05:00
Pedro Pinto aa6d453d5b Added spread support to TAS algo. 2020-04-23 07:18:00 -04:00
Pedro Pinto 112c78e50b Moved ouput messages to log. 2020-04-23 06:48:08 -04:00
Taha Afzal 17431f5ac0 Code complete, output is not showing in the UI which is making testing harder 2020-04-23 00:09:23 -04:00
Pedro Pinto 41ec7fb668 Updated linux 2020-04-22 14:13:01 -04:00
Pedro Pinto b19bf2fd26 Added channel handling to TAS. 2020-04-22 14:09:12 -04:00
Pedro Pinto c5f7477521 Fixed bug in admin reafactoring. 2020-04-22 14:05:51 -04:00
Taha Afzal 8708f02fe0 Merge branch 'add_custom_algo_state_reporting_to_api' into TASCounter 2020-04-21 17:44:58 -04:00
Taha Afzal 752fb2bc4a Merge branch 'master' into TASCounter 2020-04-21 17:10:32 -04:00
Taha Afzal 6efb78ecf9 Code complete 2020-04-21 14:26:32 -04:00
John Colvin 75c1970aef remove useless IObservable 'Select' op in 'SubscribeEach' extension 2020-04-20 10:39:31 -05:00
John Colvin c2583518d7 OrderBook was only updating custom state grid when selection changed 2020-04-20 10:37:12 -05:00
Pedro Pinto 14323e7964 Code complete on TAS. 2020-04-20 08:54:24 -04:00
Eric Harding aadeae3201 update cmake, avoid web build on wsl 2020-04-17 22:38:53 -04:00
Eric Harding b72e8aed02 ilink3 test code 2020-04-17 20:30:11 -05:00
Pedro Pinto 39db9b1bd7 Factored storage/retrieval of admin data out of service. 2020-04-17 18:37:05 -04:00
John Colvin 8792871387 add algo custom state grid to orderbook (right panel) 2020-04-17 16:36:05 -05:00
Eric Harding 68a593af7b Add more info to system test 2020-04-17 16:48:10 -04:00
Eric Harding 0820cc3e9a Fix a very subtle bug in serializer 2020-04-17 13:15:12 -05:00
Eric Harding b1ba9a1315 update ilink code gen readme 2020-04-16 14:03:53 -05:00
John Colvin 17c2321a82 Merged in SP-289-naudio-crash (pull request #407)
SP-289 naudio crash

Approved-by: Eric Harding <eric.harding@bluetradesys.com>
2020-04-16 18:11:18 +00:00
John Colvin 0affc8a942 SP-289 naudio crash 2020-04-16 12:07:44 -05:00
John Colvin ce36ea4109 move Delegates.cs to spark_core 2020-04-16 10:47:41 -05:00
Pedro Pinto 991a199d06 TAS utils refactor. 2020-04-14 11:46:53 -04:00
Eric Harding 39ce4323a1 Add CME cert command line tool 2020-04-13 16:18:59 -05:00
Pedro Pinto 7c29a3d1d8 Added custom state reporting to API. 2020-04-13 11:30:32 -04:00
Eric Harding d9fcd290d9 source files don't need to be executable 2020-04-13 09:53:28 -05:00
Taha Afzal 90bc20575a TimeStamps fixed 2020-04-13 08:56:49 -04:00
Pedro Pinto cb268f505a Added settlements to the new algo API. 2020-04-13 08:19:55 -04:00
Pedro Pinto dfd93b836b Updated externals 2020-04-13 07:44:52 -04:00
Pedro Pinto 9d045f65d2 Some progress on TAS. 2020-04-13 07:40:58 -04:00
Eric Harding 05939b02c5 save 2020-04-12 15:11:46 -05:00
Taha Afzal 28e9c66675 Added all the state, order execution remains 2020-04-10 12:54:57 -04:00
Eric Harding aa91638fe4 ilink3 receive buffer handler + tests 2020-04-10 10:55:53 -05:00
Taha Afzal c0520d6a31 Initial Check-in, skeleton code 2020-04-09 09:30:00 -04:00
Pedro Pinto 1c0cd176a1 Moved externals pointer 2020-04-09 08:35:10 -04:00
Pedro Pinto 1018ae387a Added preliminary tas utilities 2020-04-08 15:53:17 -04:00
Eric Harding 065fc54f73 IL3Reactor 2020-04-07 14:05:31 -05:00
Pedro Pinto 1ba6e3280c Updated CMakeDeps 2020-04-06 09:38:19 -04:00
Eric Harding 3a6f50dfea Merge branch 'prod' of bitbucket.org:bluetradesys/spark 2020-04-03 15:40:30 -04:00
Eric Harding d711f99548 fix externals pointer 2020-04-03 15:40:15 -04:00
pfisher 07ace80871 fixed keycode.conf 2020-04-03 13:40:56 -05:00
John Colvin 93c6277bfc Merged prod into master 2020-04-03 13:20:33 -05:00
Jake Norbut 7ac9d05ae2 Merged in manual_fills_permissions (pull request #403)
add permission filter to manual fills

Approved-by: John Colvin <john.colvin@bluetradesys.com>
2020-04-03 18:18:16 +00:00
Eric Harding 95fb13f58b Fix some build issues 2020-04-01 15:21:04 -05:00
Eric Harding 4eb2931cb8 Additional ilink3 refactoring 2020-03-28 21:08:47 -05:00
Eric Harding 5326015a48 Testcase for framer 2020-03-27 13:46:29 -05:00
Eric Harding fcbe319470 Split out functional pieces for easier testing 2020-03-27 09:14:30 -05:00
Eric Harding 5ad21c88b2 Add tests and refactor includes for faster build 2020-03-25 21:15:19 -05:00
Eric Harding 5a4b31ccc0 add cpp sample to service.md api page 2020-03-20 12:10:40 -04:00
John Colvin fb568aab39 SP-288 ladder crash (IndexOutOfRange ex accessing price array) 2020-03-19 15:28:27 -05:00
Eric Harding 64416de10d Fix the braces in my sample. 2020-03-16 20:41:23 -04:00
Eric Harding 46953cb639 add c# market data sample 2020-03-16 20:39:48 -04:00
Eric Harding 7e68a235ee Add securities sub to client_sdk_example 2020-03-16 15:18:39 -04:00
Eric Harding 3a9c1d557b Split Retransmit of old vs new session logic 2020-03-09 16:29:15 -05:00
Jake Norbut 85f2285ac0 add permission filter to manual fills 2020-03-09 09:28:23 -05:00
Eric Harding 70e0979836 override sim port for sdk image 2020-03-06 12:45:09 -05:00
Eric Harding 08bdd9c8c7 Update bad links on api doc site 2020-03-03 17:14:03 -05:00
Kevin Darby 1f80c3366e Merged in master (pull request #401)
Master
2020-03-03 19:16:43 +00:00
Jake Norbut 886b606093 moving endif for release mode 2020-03-02 14:02:55 -06:00
Jake Norbut b70510b614 Merged in SP-69-fix-stop-and-stop-limit-orders (pull request #400)
SP-69 fix stop and stop limit orders

Approved-by: John Colvin <john.colvin@bluetradesys.com>
2020-03-02 19:46:11 +00:00
John Colvin 6db9a227b1 Merged in SP-287-algo-params-piq-update (pull request #399)
SP-287 algo params piq update

Approved-by: Jake Norbut <jake.norbut@bluetradesys.com>
2020-03-02 19:36:24 +00:00
Jake Norbut a819eb921d PR edit; removing unused local variable 2020-03-02 13:07:01 -06:00
Eric Harding 6fb5b83249 Only send Negotiate if the session is new 2020-02-28 15:33:27 -06:00
Eric Harding 95830fafdf send_cancel 2020-02-27 14:48:56 -06:00
Jake Norbut af4317a7f9 Merge branch 'master' of bitbucket.org:bluetradesys/spark into SP-69-fix-stop-and-stop-limit-orders 2020-02-27 14:27:21 -06:00
John Colvin 5edd7d5467 OrderBookRowVM only resets prospective_qty when the real qty changes 2020-02-27 14:07:05 -06:00
John Colvin 60d2cb5bc1 SP-287 fix algo params piq update bug 2020-02-27 14:05:04 -06:00
John Colvin f26e3d27c4 refactor IEnumerable to IReadOnlyCollection in common_value_group_changed event 2020-02-27 14:01:22 -06:00
Eric Harding d68b03bb91 send_cancel_replace 2020-02-26 17:56:50 -06:00
Eric Harding e7062ce01e send_order call for link3 2020-02-26 17:36:18 -06:00
Jake Norbut 31dab6ca09 allow stop/stop limit price to occupy same level as price 2020-02-26 12:10:05 -06:00
Jake Norbut 1498bf17bb when modifying stop-limit stop_price, don't change the price price 2020-02-26 12:09:32 -06:00
Jake Norbut 1cafe23bd0 stop_price and stop_limit_price now reference Pedro's new StopPx field in NativeState 2020-02-25 15:42:33 -06:00
Jake Norbut 25290df798 remove stop* modification logic from badge vm 2020-02-25 15:41:27 -06:00
Jake Norbut 20ca48e365 modification logic of stop* orders is now done centrally in OrdersModel 2020-02-25 15:40:08 -06:00
Pedro Pinto 78dfb03b8e Reported stop px in order state 2020-02-25 14:30:26 -05:00
Kevin Darby 19e66a1c32 add a new stunnel path for Pete 2020-02-25 11:16:40 -05:00
Jake Norbut a1f71153c8 hook OB col filter up to UI price 2020-02-24 14:34:46 -06:00
Jake Norbut b1d260d98c OB RowVM to use ui_price to stop/limit shows expected value in Price column 2020-02-24 14:33:11 -06:00
Jake Norbut a81aafefe0 get_root_at_price to use ui_price so mini ob opens from Ladder 2020-02-24 14:31:43 -06:00
John Colvin 454330e360 fix typo in DiscretePropertyChangedDetector constructor (don't trim the whole array) 2020-02-21 18:51:37 -06:00
John Colvin 995159b365 pnl hyperlinks display hand cursor on hover 2020-02-21 18:49:25 -06:00
John Colvin fd1a33e9d2 PNLView - set Hyperlink/TextCell 'SnapToDevicePixels' to true 2020-02-21 17:39:48 -06:00
John Colvin e9615bc3aa PNLView - get rid of magic const row height 2020-02-21 17:39:35 -06:00
John Colvin b1b1597686 PNLView.xaml - factor out common TextCell props into base style 2020-02-21 17:24:01 -06:00
John Colvin bc2eb65c0a PNLView.xaml - factor out common HyperlinkCell props into base style 2020-02-21 17:22:46 -06:00
John Colvin 7baa7ca8a1 add OrderTicket.close_on_send config toggle 2020-02-21 16:56:30 -06:00
John Colvin 9bbc73b48c fix silent exception in SparkCommandVM.is_selectable 2020-02-21 16:56:30 -06:00
John Colvin b07a379ee1 orderbook LastMessage background always reverts to black on settings saved 2020-02-21 16:56:30 -06:00
John Colvin af2c6174e8 add 'AffectsRender' flag to Hyperlink/TextCell HorizontalContentAlignment dps 2020-02-21 16:56:30 -06:00
John Colvin 6e5444709d fix Hyperlink/TextCell padding (actually use it) 2020-02-21 16:56:30 -06:00
John Colvin 831aa43f0e tweak HyperlinkCell mouse-capture/mouse-over-click-area logic 2020-02-21 16:56:30 -06:00
John Colvin 50a8592e5e clean up DIYGrid TextColumn (mimic recent changes in HyperlinkColumn) 2020-02-21 15:57:25 -06:00
John Colvin cb7b6ef5cd fix TextCell alignment issues 2020-02-21 15:57:07 -06:00
John Colvin b7c72d1607 HighPerformanceRow does not depend on TColumn 2020-02-21 15:56:27 -06:00
John Colvin cb2747528b fix typo in ColumnGeometry (was assigning 'left' to 'unclicpped_left') 2020-02-21 15:50:58 -06:00
John Colvin 52ad4ad2c9 add 'HyperlinkClickMode' to HyperlinkCell to support cmd on click anywhere 2020-02-21 15:50:32 -06:00
John Colvin 93c81089f6 fix HyperlinkCell HorizontalAlignment binding 2020-02-21 15:42:36 -06:00
John Colvin d7d23a7a93 clip mview animations to scroll content presenter bounds 2020-02-21 15:41:14 -06:00
John Colvin 5525e35d1a OrderTypeItem template uses Rectangle instead of Badge (the latter has some unresolved rounding issues) 2020-02-21 15:39:27 -06:00
John Colvin cdd7856ba0 WPFHelper.measure_content() rounds to layout correctly 2020-02-21 14:14:05 -06:00
John Colvin 7a6de46b17 fix WPFHelper.measure_visual_content - 'left edge' calculation for right align; 'bottom edge' for bottom align 2020-02-21 14:13:08 -06:00
John Colvin 1fcccc674a fix HyperlinkCell Alignment issues 2020-02-21 14:11:09 -06:00
John Colvin c0e6b5556d DIYGrid CellRender.draw_text with layout rounding 2020-02-21 14:07:36 -06:00
John Colvin 8aa2a7e44e add spark menu dock/hide commands to pnl 2020-02-21 13:52:14 -06:00
John Colvin 0303d999ed Merged in algo-studio-style-tweaks (pull request #363)
RTM Algo studio style tweaks

Approved-by: Michael Harding <michael.harding@bluetradesys.com>
2020-02-21 19:44:03 +00:00
Pedro Pinto 914a817ddb Fixed crash in handling of stop limit orders 2020-02-21 14:39:18 -05:00
Pedro Pinto 4873e523a9 Re-merged server side stop/stop limit changes 2020-02-21 14:15:56 -05:00
John Colvin 672ef518e2 Merge branch 'SP-279-time-and-sales-column-width' 2020-02-20 12:29:33 -06:00
Pedro Pinto d22cb150f6 Merged 2020-02-20 12:59:51 -05:00
John Colvin 8605b4f11f Merged in SP-281-hidden-toolbar (pull request #393)
SP-281 hidden toolbar

Approved-by: Jake Norbut <jake.norbut@bluetradesys.com>
Approved-by: Kevin Darby <kevin.darby@bluetradesys.com>
2020-02-20 17:18:15 +00:00
John Colvin 20eb661fb0 Merged in SP-282-algo-favorite-params (pull request #396)
SP-282 option for algo favorites button to revert modifications after order entry

Approved-by: Jake Norbut <jake.norbut@bluetradesys.com>
2020-02-20 17:14:31 +00:00
John Colvin fad1ca2b6e Merged in SP-285-pnl-working-orders (pull request #395)
SP-285 pnl working qty should only include exchange orders

Approved-by: Kevin Darby <kevin.darby@bluetradesys.com>
2020-02-20 17:10:58 +00:00
John Colvin 747a687fe5 Merged in SP-278-smaller-ladder-columns (pull request #394)
SP-278 Smaller minimum size for Ladder columns

Approved-by: Jake Norbut <jake.norbut@bluetradesys.com>
Approved-by: Kevin Darby <kevin.darby@bluetradesys.com>
2020-02-20 17:10:18 +00:00
Jake Norbut e34c63382c merging master and fixing merge conflicts in 3 files by taking master 2020-02-20 08:41:02 -06:00
Pedro Pinto 4b5c744ba5 Updated externals, tools 2020-02-20 08:45:07 -05:00
Pedro Pinto 932738f98e Merge branch 'master' into ilink3_gateway 2020-02-20 08:39:47 -05:00
Pedro Pinto 1426b00e83 Added fake iLink3 gateway 2020-02-19 16:21:06 -05:00
Pedro Pinto e724409b58 Added jetfix support for string_view 2020-02-19 10:55:56 -05:00
Pedro Pinto 9cf828e9a4 Implemented iLink3 order 2020-02-18 15:37:06 -05:00
Eric Harding 41408fb609 ILink3ExecutionGateway placeholder 2020-02-14 16:07:44 -06:00
Eric Harding 4c21e32838 ILink3GW core gateway 2020-02-14 16:06:58 -06:00
Eric Harding 385f3ea402 add unix_nano_now() to datetime.h 2020-02-14 16:05:00 -06:00
Eric Harding 8d6d8cab18 Update SecureLogon for ilink3 2020-02-14 16:05:00 -06:00
Eric Harding 01615f824a Generated ilink3 messages 2020-02-14 16:05:00 -06:00
Pedro Pinto c6779ddc90 Reactore GLBX native order for iLink3. 2020-02-13 15:26:33 -05:00
Pedro Pinto 46eff65435 Changed IExecutionGateway to support non FIX gateways. 2020-02-12 10:11:53 -05:00
Eric Harding cb0dfa50b3 Fix dockerfile 2020-02-11 15:02:41 -05:00
Eric Harding 2429e6019c Merge branch 'master' of bitbucket.org:bluetradesys/spark into prod 2020-02-11 14:16:14 -05:00
Eric Harding e0bb48b0c7 Merged in client_sdk (pull request #397)
Client sdk
2020-02-11 18:31:09 +00:00
Eric Harding a38b0dbc79 Merge branch 'master' of bitbucket.org:bluetradesys/spark into client_sdk 2020-02-11 13:29:43 -05:00
Eric Harding 73065ab48a client sdk sample 2020-02-11 13:29:09 -05:00
Eric Harding bd07c96504 Merged in mdsource_crash (pull request #389)
Fix for assert when algo subs to security w/o MD
2020-02-11 17:11:07 +00:00
Eric Harding dc4033875a Fixes from code review feedback 2020-02-11 11:43:04 -05:00
Eric Harding 130794c538 Merge fixup 2020-02-11 11:22:02 -05:00
Eric Harding b1743f0b1c Uninitialized heap, ffs 2020-02-10 18:58:21 -05:00
Eric Harding 33492c9131 Fixes for _WIN32 2020-02-10 18:27:41 -05:00
Eric Harding d434778a82 MarketDataService 2020-02-10 17:06:13 -06:00
Eric Harding 4c6cc9b3e0 Merge branch 'client_sdk' of bitbucket.org:bluetradesys/spark into client_sdk 2020-02-10 12:32:18 -06:00
Eric Harding 6aaeddb7e9 update vscode for linux on linux development 2020-02-10 12:32:10 -06:00
Eric Harding 1685a13994 Add linux on linux build task (vscode) 2020-02-10 13:24:56 -05:00
Eric Harding 54633dd6db note correct config value for local sparkd 2020-02-10 13:21:03 -05:00
Eric Harding 510f163e5b Add to_string methods for Product for new md api 2020-02-10 12:50:05 -05:00
Eric Harding ee4779da73 MarketDataService 2020-02-09 22:39:01 -05:00
Eric Harding 28e98259f6 Add client sdk example 2020-02-07 22:20:42 -05:00
John Colvin 8e6a17cd0c fix sticky algo behavior in LadderVM 2020-02-07 14:18:10 -06:00
John Colvin 17b314ea3a Merge branch 'master' into algo-type-config 2020-02-07 13:35:50 -06:00
John Colvin cbde36e9e0 Merge branch 'master' into algo-studio-style-tweaks 2020-02-07 13:29:50 -06:00
John Colvin 6fc20924bd SP-282 option for algo favorites button to revert modifications after order entry 2020-02-07 13:01:42 -06:00
John Colvin 381b8064fc SP-285 pnl working qty should only include exchange orders 2020-02-07 12:54:32 -06:00
John Colvin fc1a3ff7dc SP-278 Smaller minimum size for Ladder columns 2020-02-06 13:37:31 -06:00
John Colvin 5fd3d13cfe add spark menu dock/hide commands to synthetic management 2020-02-06 12:27:58 -06:00
John Colvin 1b38822459 add spark menu dock/hide commands to orderbook 2020-02-06 12:27:26 -06:00
John Colvin 8b7ecc430b add spark menu dock/hide commands to fills 2020-02-06 12:26:01 -06:00
John Colvin d9d7a08fd6 add spark menu dock/hide commands to time and sales 2020-02-06 12:25:08 -06:00
John Colvin 2383c00bb9 add spark menu dock/hide commands to mview 2020-02-06 12:23:35 -06:00
John Colvin dcce738d53 SP-281 SparkWindow toolbar can be docked to any side of the window, or hidden 2020-02-06 12:22:37 -06:00
John Colvin 0daa3e0685 add 'is_select_changed' event to ISelectable 2020-02-06 10:17:05 -06:00
Eric Harding 82bc402216 Update client examples 2020-02-05 14:58:46 -05:00
Eric Harding ff70e9694b Set spark version from jenkins environment when available 2020-02-05 10:02:17 -05:00
John Colvin e06daa349c normalize white space in SparkMenuItem.cs 2020-02-04 13:11:06 -06:00
Jake Norbut 525d0eda30 fix typo in notes 2020-01-30 07:39:22 -06:00
Jake Norbut e9e85b44c9 updating release notes 2020-01-30 07:37:51 -06:00
John Colvin 13aa693da1 TimeAndSales status bar 2020-01-29 14:12:33 -06:00
John Colvin f8afa7fc57 SP-280 remove Date portion from Time and Sales time column 2020-01-29 14:00:40 -06:00
John Colvin 2f6a66a2ce DIYGrid DragRect/Selection adorners respond to selection highlight property changes 2020-01-29 13:51:42 -06:00
John Colvin b4674a9120 cache sorting criteria to avoid accessing ColumnBase.SortingDirection on another thread when settings are collected 2020-01-29 13:51:42 -06:00
John Colvin d76eb1153b actually assign TimeAndSalesWindow.thread_id 2020-01-29 13:51:42 -06:00
John Colvin 0934c0014d RowSelectionAdorner listens to ItemContainerGenerator changes (invalidates visual) 2020-01-29 13:51:42 -06:00
John Colvin 19da3e1390 added configurable 'pause updates' menu item to TimeAndSales (hidden by default) 2020-01-29 13:51:42 -06:00
John Colvin 2654b2e446 SP-283 Ladder does not display 6c spreads correctly 2020-01-29 12:43:01 -06:00
John Colvin 61d0ae5257 SP-279 Time and Sales not remembering column width 2020-01-29 10:21:16 -06:00
John Colvin ebea6a8f50 move TimeAndSales classes into their own files/namespace 2020-01-27 16:55:51 -06:00
John Colvin f0b3baaf3f remove unused [TimeAndSales] OrderType column enum 2020-01-27 15:29:48 -06:00
John Colvin 956837d3f3 add ShowOrderTicketAutoLookupTag/SparkCommand 2020-01-27 15:15:25 -06:00
Eric Harding be45938b51 Fix for assert when algo subs to security w/o MD 2020-01-22 14:08:26 -05:00
Eric Harding 663f9ecc52 Merge branch 'master' of bitbucket.org:bluetradesys/spark into client_sdk 2020-01-16 17:23:42 -05:00
Eric Harding a6edbbe7b5 Fix spark sdk build 2020-01-14 17:13:07 -05:00
Eric Harding 51276d161c Revert "Add diagnostic logs to SharedMemory open/close"
This reverts commit 3fa699b4c9 because of
log spam
2020-01-13 11:39:51 -05:00
Eric Harding 3fa699b4c9 Add diagnostic logs to SharedMemory open/close 2020-01-13 11:13:15 -05:00
Eric Harding c9396bd6af Stabilize spark_vm_shell.sh ssk keys 2020-01-13 11:13:00 -05:00
Kevin Darby b80f96fa5e Merged in ice_excel (pull request #388)
fix RTD crash for ice

Approved-by: Jake Norbut <jake.norbut@bluetradesys.com>
2020-01-10 22:39:27 +00:00
Kevin Darby b7dea6817c fix RTD crash for ice 2020-01-10 14:43:06 -05:00
Pedro Pinto f4dc550f1a Fixed slowness in FIX log parsing.
This slowness was actually causing us to take too long to complete the
FIX connection logon process, resulting in a timeout and failure to
establish the session. It took almost 1ms per log line, with
logs commonly having 20K lines. k
2020-01-10 08:35:33 -05:00
Pedro Pinto bc978ed065 Merge branch 'master' of bitbucket.org:bluetradesys/spark 2020-01-10 08:30:17 -05:00
Eric Harding 202c5faffd update devcontainer to allow 2g shm 2020-01-09 10:40:47 -05:00
Kevin Darby a565dcbab7 fix tests 2020-01-06 14:30:04 -05:00
Pedro Pinto 65d55a7618 Added a parser of historical MD to facilitate analysis. 2020-01-02 13:57:54 -05:00
Pedro Pinto 57c3ec34c2 Fixed clang build. 2020-01-02 13:55:49 -05:00
Kevin Darby 4e85218d02 update dev keycodes to 3/31/2020 2020-01-02 10:12:18 -05:00
Taha Afzal f6784f1196 Merged in SP-253-spread-trading-needs-future-posit (pull request #386)
pos neutral spreads's fuures are not checked for pos limits
2019-12-20 23:38:00 +00:00
Taha Afzal 7f05a2c2af pos neutral spreads's fuures are not checked for pos limits 2019-12-20 16:35:29 -05:00
John Colvin c3d2101dcd infinity ticks be gone 2019-12-20 14:12:50 -06:00
John Colvin 8855ea44b0 remove ugly border around expander buttons in grid settings dialog 2019-12-20 13:19:36 -06:00
Kevin Darby 51f70ad5ed Merge branch 'prod' of bitbucket.org:bluetradesys/spark 2019-12-20 10:12:35 -05:00
Kevin Darby 5aa3f1a684 downgrade log 2019-12-19 16:06:26 -05:00
Pedro Pinto 5cd3a710bd Skipped lines that do no match a FIX prefix in FIX logs.
This is needed at the ICE where some messages can have new lines. We
use the new line separator to separate FIX messages so the parser was
getting confused when it saw multi-line messages.
2019-12-19 14:04:34 -05:00
John Colvin 6d8b4636ab fix synthetic import qty & side 2019-12-19 11:11:07 -06:00
Jake Norbut 64a75c4b48 updating release notes 2019-12-19 10:22:42 -06:00
Pedro Pinto 143b6ce5d8 Merged in multi-line-FIX-messages (pull request #385)
Skipped lines that do no match a FIX prefix in FIX logs.

Approved-by: Kevin Darby <kevin.darby@bluetradesys.com>
2019-12-19 15:29:06 +00:00
John Colvin aa5c0a5613 added create/clone synthetics test 2019-12-18 16:21:26 -06:00
Pedro Pinto d5fc0c5a56 Skipped lines that do no match a FIX prefix in FIX logs.
This is needed at the ICE where some messages can have new lines. We
use the new line separator to separate FIX messages so the parser was
getting confused when it saw multi-line messages.
2019-12-18 17:16:12 -05:00
Kevin Darby 7c4daa0f4b we are trying to log in for a deleted user 2019-12-18 10:32:26 -05:00
Taha Afzal ab430e4afb Merged in SP-272_IB_slowness (pull request #384)
Reports transition to end state right away (vs on a timer)
2019-12-18 15:24:14 +00:00
Taha Afzal 29f6ea6d48 Merged in SP-273-fills-highlighting (pull request #383)
SP-273 fills highlighting
2019-12-18 15:20:41 +00:00
Taha Afzal e46372d08e Merged in SP-271-synthetic-cloning (pull request #382)
SP-271 synthetic cloning
2019-12-18 15:18:48 +00:00
Taha Afzal 1d2faeba3e Merged in SP-270-piq-bug (pull request #381)
SP-270 Order Book - PIQ Bug (fix OrderSecurityAlgo.Equals impl)
2019-12-18 15:16:07 +00:00
Taha Afzal 23cffc0630 Merged synthetic-importer into master 2019-12-18 10:03:45 -05:00
Jake Norbut 90b597fc70 Merged in SP-267_ladder_message (pull request #380)
SP-267 ladder status message visibility
2019-12-18 14:57:34 +00:00
Kevin Darby 5ea2a8d6b6 build 2019-12-18 09:36:53 -05:00
Kevin Darby 6e64f7c6df ice login 2019-12-18 09:28:02 -05:00
Eric Harding 8a210f39b6 Merge branch 'master' of bitbucket.org:bluetradesys/spark into prod 2019-12-17 15:36:40 -05:00
Kevin Darby 2aacd141ad only log in with ice users that have the authorized user set 2019-12-17 15:34:46 -05:00
Taha Afzal 5c01e6a99a Reports transition to end state right away (vs on a timer) 2019-12-16 13:46:26 -05:00
Eric Harding 2688281a10 Protect against ICE 0-leg spread data on cert 2019-12-16 10:26:34 -05:00
Eric Harding c6cd5fcf93 services.md 2019-12-15 22:09:20 -05:00
Eric Harding 177b96b453 manual updates 2019-12-13 17:46:22 -05:00
Eric Harding 292f66a774 Add package id for nuget 2019-12-13 17:46:03 -05:00
John Colvin 7ccd9134c4 SyntheticSecurityParser trims whitespace from leg type text 2019-12-10 18:11:26 -06:00
John Colvin 54d82e1773 DeleteSyntheticDaemon - improve logging, support batch delete 2019-12-10 18:01:44 -06:00
John Colvin 9483962e7b DiscretePropertyChangeDetector uses generic/strong types rather than boxing to object 2019-12-04 13:27:44 -06:00
John Colvin f94c5bc542 SP-273 Fills are unselected when order tree changes 2019-12-04 13:24:30 -06:00
John Colvin ce985f4b44 FillsVM state doesn't need to be observable (every usage is equiv to Observable.Return) 2019-12-03 14:02:26 -06:00
John Colvin 032f2253a7 ExecutionStrategyEditor 'Remove Leg' tooltip 2019-12-03 12:49:42 -06:00
John Colvin 4b4eb66ef0 SP-271 Synthetic cloning 2019-12-03 12:49:42 -06:00
Eric Harding 8c837f9f64 Expound on service fundamentals / ServiceContext 2019-12-03 13:16:41 -05:00
John Colvin a71914d566 TickFactorsPicker - disable auto complete behavior 2019-12-02 16:16:41 -06:00
John Colvin bd00183f7a SP-270 Order Book - PIQ Bug (fix OrderSecurityAlgo.Equals impl) 2019-12-02 15:24:10 -06:00
Jake Norbut 2674e526be formatting 2019-12-02 13:11:44 -06:00
Jake Norbut 4ea2c08cc3 hooking up message Visibility to new vm property 2019-12-02 13:06:30 -06:00
Jake Norbut 99432ad7ac adding status message visibility property to ladder vm 2019-12-02 13:05:43 -06:00
Jake Norbut 8c210bff34 adding status message visibility to setting vm 2019-12-02 13:04:57 -06:00
Jake Norbut e566a94380 adding status_message_visible to settings 2019-12-02 13:04:15 -06:00
Eric Harding 85f97ae552 Combine rpc/streams into services.md 2019-12-01 21:50:17 -05:00
Eric Harding 7ca0d10eb0 client/overview.md 2019-11-29 11:49:24 -05:00
John Colvin 07da9fd296 Import Synthetics manual test 2019-11-25 12:55:13 -06:00
John Colvin 436dbd217c SP-266 synthetic csv parser/import dialog 2019-11-25 12:55:13 -06:00
John Colvin 0937381a3f INotifyDataErrorInfo 'subscribe_has_errors' extension only notifies observers when HasErrors changes 2019-11-25 12:55:13 -06:00
John Colvin d42f6b6fff EnumHelper - generic add/remove_flags methods 2019-11-25 12:55:13 -06:00
John Colvin 03940b291b ArrayHelper.trim was not actually reassigning ref with trimmed result 2019-11-25 12:55:13 -06:00
John Colvin 2a72b03afc TickFactorsPicker - disable auto complete behavior 2019-11-25 12:55:13 -06:00
John Colvin 98caeb5410 MDDaemon - check that synthetic metadata.HasStrategy before adding to map 2019-11-25 12:55:13 -06:00
John Colvin 73cb56a661 DIYGridRowPresenter - don't perform drag selection when SelectionMode=Single 2019-11-25 12:55:13 -06:00
John Colvin 88932081b7 add WindowMaxSizeConverter to implement 'SizeToContent' max dimensions 2019-11-25 12:55:13 -06:00
Eric Harding ca8aed1f2b client pages outline 2019-11-22 18:49:58 -05:00
John Colvin a5f27d0d35 AlgoStudio - fix typos in name/badge header tooltip 2019-11-22 11:28:59 -06:00
John Colvin ce7ff0d14f MDDaemon - check that synthetic metadata.HasStrategy before adding to map 2019-11-22 11:25:38 -06:00
John Colvin d08571e862 Merge remote-tracking branch 'origin/master' into algo-studio-style-tweaks 2019-11-22 11:25:09 -06:00
Eric Harding b62d9751cf chown duplicates files in docker image 2019-11-20 14:57:56 -05:00
Eric Harding b32d63fcda Update api site template 2019-11-20 12:39:59 -05:00
Jake Norbut 26b5fe5699 updating release notes 2019-11-20 09:47:48 -06:00
Jake Norbut 2fccceb91d Merged in ladder_recenter_no_kb (pull request #379)
Ladder recenter no kb
2019-11-20 15:47:09 +00:00
Jake Norbut fa49a0de07 adding new test 2019-11-20 09:45:51 -06:00
Jake Norbut bd28a0fa54 delete old test 2019-11-20 09:45:27 -06:00
Jake Norbut 14ebe5ef51 (shift or alt) + double click to recenter all ladders 2019-11-20 09:14:20 -06:00
Jake Norbut a9b4049307 relocating bus.post of recenter all to common public ladder function 2019-11-20 09:13:58 -06:00
Eric Harding 54d9d5e2f3 Add google analytics 2019-11-19 16:38:30 -05:00
Jake Norbut 234d499731 adding ladder spacebar test 2019-11-19 08:51:38 -06:00
Eric Harding 324b9c1cc7 Merge branch 'prod' of bitbucket.org:bluetradesys/spark 2019-11-19 09:04:33 -05:00
Eric Harding 6aad329e09 Include ice symbol list in defaults for windows 2019-11-18 13:04:00 -05:00
Jake Norbut 0641cf45d9 Merged in SP-261_bye_bye_butterfly (pull request #366)
RTM - no more butterfly defaults

Approved-by: Jake Norbut <jake.norbut@bluetradesys.com>
2019-11-18 16:34:35 +00:00
Jake Norbut 1fe0efe5c3 Merged in SP-264_price_display_format (pull request #374)
RTM - SP-264 drop tick separator in ladder prices

Approved-by: John Colvin <john.colvin@bluetradesys.com>
2019-11-18 16:17:31 +00:00
Jake Norbut 93938b6ef2 fix merge 2019-11-18 10:15:19 -06:00
Jake Norbut 818806a4e1 Merged in SP-263_recenter_on_spacebar (pull request #371)
RTM - SP-263 recenter on spacebar

Approved-by: Eric Harding <eric.harding@bluetradesys.com>
2019-11-18 15:35:59 +00:00
Jake Norbut 261bf3e475 Merged in SP-260_local_max_clip (pull request #370)
RTM SP-260 local max clip

Approved-by: Eric Harding <eric.harding@bluetradesys.com>
2019-11-18 15:34:30 +00:00
John Colvin dbe2194ed3 Merged in SP-265-pnl-cast-exception (pull request #376)
SP-265 pnl cast exception

Approved-by: Jake Norbut <jake.norbut@bluetradesys.com>
2019-11-18 15:26:06 +00:00
John Colvin 45e10ca377 SP-265 use 'is' instead of explicit cast to IPNLCellData (the cast should work; this is defensive) 2019-11-14 21:09:31 -06:00
Eric Harding c3299232f1 Update release notes 2019-11-14 17:44:24 -05:00
John Colvin 4de77ce339 pnl sometimes duplicates grouping columns when they are changed in settings dialog 2019-11-14 16:12:58 -06:00
John Colvin 96f71290a4 SP-265 pnl crash due to CastException 2019-11-14 16:12:19 -06:00
Jake Norbut e2b80942df adding manual test 2019-11-14 15:58:59 -06:00
Jake Norbut 51fb068469 adding manual test 2019-11-14 15:51:40 -06:00
Eric Harding 81b36edfe3 Merged in subprocess (pull request #375)
[RTM] Simple sparkd subprocess runner
2019-11-14 20:26:38 +00:00
Eric Harding 90976ffeba Merged in init_spark_plugin (pull request #372)
[RTM] Always init_spark_plugin() for libspark.so
2019-11-14 20:24:50 +00:00
Eric Harding 43aad8b53f merge master 2019-11-14 15:24:36 -05:00
Eric Harding 5434647ecb Merged in SP-262-read_latest_crash_dump-crahes (pull request #368)
[RTM] SP-262 check for directory exists in keep_n_matching_files

Approved-by: Jake Norbut <jake.norbut@bluetradesys.com>
2019-11-14 20:22:53 +00:00
Eric Harding 7c4aa11c69 Merged in SP-259-elliots-tas-algo-not-firing (pull request #369)
[RTM] SP-259 - Fix md exchange status transitions.

Approved-by: Jake Norbut <jake.norbut@bluetradesys.com>
2019-11-14 20:22:44 +00:00
Eric Harding 176c1f8d92 Update sdk overview.md with blog edits 2019-11-14 15:22:01 -05:00
Jake Norbut 8b0c9e7722 adding some TAS-style symbols so we get md recording on them 2019-11-14 07:56:27 -06:00
Eric Harding a5c2e8b287 SP-230 Disable GMI_import for sdk 2019-11-13 15:37:38 -05:00
Eric Harding 24e766ba59 SP-230 include futures.coconut in dockerfile 2019-11-13 14:45:34 -05:00
Eric Harding ddd81ea93a Allow sdk shell to always skip stunnel 2019-11-13 14:45:06 -05:00
Eric Harding 5481cce34c Simple sparkd subprocess runner 2019-11-13 13:50:21 -05:00
Jake Norbut 58d39c4833 rendering ladder prices approparitely based on price_display_format 2019-11-13 10:38:26 -06:00
Jake Norbut 367d9be724 adding price_display_format to settings view 2019-11-13 10:38:04 -06:00
Jake Norbut 99f2ab7c8a adding price_display_format to vm 2019-11-13 10:37:46 -06:00
Jake Norbut 8b091b39eb adding PriceDisplayFormat enum to proto 2019-11-13 10:37:24 -06:00
Eric Harding 9d1f0e5538 Remove bad symlink breaking build. 2019-11-12 16:58:30 -05:00
Eric Harding 02ade1e0c9 Merged in SP-230-api-experience (pull request #373)
SP-230 api experience
2019-11-12 21:36:11 +00:00
Eric Harding 296749bae3 remote docker part from udpate_github 2019-11-12 16:34:29 -05:00
Eric Harding 49ec9885eb Merge branch 'master' of bitbucket.org:bluetradesys/spark into SP-230-api-experience 2019-11-12 13:28:28 -05:00
Eric Harding 04264e70b9 add spark_client.cmd 2019-11-12 11:54:15 -05:00
Eric Harding eaadc74242 SP-230 overview/blog 2019-11-12 10:56:29 -05:00
Eric Harding 6760ca1898 Always init_spark_plugin() for libspark.so 2019-11-12 08:50:31 -05:00
Eric Harding 5f2d3c7c26 SP-230 algo overview draft 2019-11-11 16:49:12 -05:00
Eric Harding 326532ed5c Urls change /algo/ to /server/ 2019-11-11 11:43:31 -05:00
Eric Harding 5cfb4a65e9 SP-230 add faq/join 2019-11-11 10:19:17 -05:00
Eric Harding f955fef680 SP-230 orders 2019-11-08 17:31:54 -05:00
Eric Harding 2214988442 SP-230 rename Algo sdk to Server sdk 2019-11-08 16:51:25 -05:00
Eric Harding e80ab05969 SP-230 subscriptions 2019-11-08 16:26:51 -05:00
Eric Harding 92bdbd460a initialization : editing 2019-11-08 15:43:31 -05:00
Jake Norbut a357d978ca misc string formatting fix; this is only used for debugging focus issues 2019-11-08 13:45:03 -06:00
Jake Norbut dfb673bd63 recenters all ladders via posting to appropriate tag to bus when spacebar is pressed over a ladder 2019-11-08 13:43:29 -06:00
Jake Norbut 24f366491b update view with appropriate controls for enforce_max_clip and max_clip 2019-11-08 10:44:03 -06:00
Jake Norbut 55134bf172 check max clip for crossing market dialog as well 2019-11-08 10:42:23 -06:00
Jake Norbut b6b33f14ef enforce max clip at order entry 2019-11-08 10:40:43 -06:00
Jake Norbut 12d532a17f adding enforce_max_clip and max_clip to settings vm 2019-11-08 10:39:38 -06:00
Jake Norbut 09679ff494 adding enforce_max_clip and max_clip to proto 2019-11-08 10:38:10 -06:00
Eric Harding 781e7c98a0 SP-230 initialization 2019-11-08 10:09:33 -05:00
Eric Harding 4189b05665 SP-262 check for directory exists in keep_n_matching_files 2019-11-07 18:08:13 -05:00
Eric Harding ff5b04f8ee SP-259 - Fix md exchange status transitions. 2019-11-07 17:52:10 -05:00
Jake Norbut 4180b9a8ec removing price and quantity special case when legs = 3 2019-11-06 11:45:42 -06:00
Eric Harding 5ba244c982 Editing initialization 2019-10-31 17:24:20 -04:00
Eric Harding 4029a6a58a registration.md 2019-10-31 16:48:06 -04:00
John Colvin e713210030 remove obsolete algo types from hardcoded defaults 2019-10-29 18:07:32 -05:00
John Colvin c057bf18f6 Merge remote-tracking branch 'origin/master' into algo-type-config 2019-10-29 18:07:01 -05:00
Eric Harding c03d05285b Copy images locally so Michael doesn't steal them 2019-10-28 17:15:18 -04:00
Eric Harding 78323d09e8 SP-230 Development with other editor 2019-10-25 17:40:10 -04:00
Eric Harding f2621da423 SP-230 Development with VScode 2019-10-25 12:19:38 -04:00
Eric Harding cf2bc03dd1 SP-230 Editing 2019-10-24 17:36:27 -04:00
Eric Harding 88e17743ef Disable onixs for sdk sparkd 2019-10-24 11:28:04 -04:00
Eric Harding 950073703f SP-230 Scripts to deploy to api.bluetradesys.com 2019-10-23 19:40:11 -04:00
Eric Harding 504d09eb6c SP-230 devcontainers are pretty neat 2019-10-22 17:36:51 -04:00
Eric Harding c2ea5aa36f ServiceContext needs to include port when deciding to connect to sparkvm:8000 for debuggin 2019-10-22 16:35:00 -04:00
Eric Harding c367488844 sdk: refactor example build 2019-10-22 13:02:10 -04:00
John Colvin 17a0bef824 Merge remote-tracking branch 'origin/master' into algo-type-config 2019-10-21 12:15:00 -05:00
Eric Harding fb19dd8ce5 Add sdk dockerfile and create it on build 2019-10-17 17:43:19 -04:00
Eric Harding c0a2c6a24a Split examples into separate directories and add devcontainer 2019-10-17 17:42:30 -04:00
Eric Harding 7cbd5adccc Advance linux docker to include 'zip' executable 2019-10-17 17:28:38 -04:00
Eric Harding 3b8a4f89cc Rename Log subsystem ClientSdk to just Sdk 2019-10-17 17:25:20 -04:00
John Colvin 9180c48b67 CompositeAlgoVM 'group' is AlgoDisplayGroup.Studio 2019-10-14 15:29:02 -05:00
John Colvin 01acbe08f5 remove dead code 2019-10-14 15:26:01 -05:00
John Colvin 8a47cd4821 exchange/security based algo type config 2019-10-14 15:19:36 -05:00
John Colvin 03050d9b07 refactor some Disposable.replace calls so that the prev hook is disposed before the new one is created 2019-10-14 13:25:21 -05:00
John Colvin 9178878880 AlgoStudio model does not really need to import AdminModel (just UserTuple) 2019-10-14 13:25:21 -05:00
John Colvin f38b1c7af9 ContractPickerModel.result getter performs dictionary lookup (was brute force enumeration) 2019-10-14 13:25:21 -05:00
John Colvin 45cd958b1e make security criteria clause immutable 2019-10-14 13:25:21 -05:00
John Colvin 4d49c8f030 add .rej to gitignore 2019-10-14 13:25:21 -05:00
John Colvin b2227ce37b DynamicOrderHelper stores dyn types in map 2019-10-14 13:25:21 -05:00
Eric Harding 04f165b1a3 api docs: change info icon 2019-10-10 17:12:25 -04:00
Eric Harding 893aa7a370 api sdk - development 2019-10-09 20:01:56 -04:00
Eric Harding 245b5d0f99 sdk docs - downloading 2019-10-09 18:56:30 -04:00
Eric Harding d5225aa75b spark sdk Installing 2019-10-09 12:21:03 -04:00
Eric Harding 48e6e1e139 client sections need work 2019-10-08 17:39:51 -04:00
Eric Harding 1ebd0be57c api docs outline 2019-10-08 17:24:01 -04:00
Eric Harding 28779d333c api docs "landing page" 2019-10-08 16:53:40 -04:00
Eric Harding c9387a92be Add docs/api 2019-10-08 16:41:59 -04:00
John Colvin a4694462ed flip combobox gradient back (there was a light/medium typo in resource keys) 2019-10-07 16:52:23 -05:00
John Colvin f404b0e936 center align ratio checkbox in QuantityMeasureControl 2019-10-07 16:10:47 -05:00
John Colvin 2df1e94fb3 algo studio pr feedback; clean up visual states 2019-10-07 16:05:18 -05:00
John Colvin acd0d7c343 remove 'Cannot change...while templates present' tooltip 2019-10-07 15:27:51 -05:00
John Colvin 1e8a7f09dd make generic algo template child order padding consistent 2019-10-07 14:21:24 -05:00
John Colvin b65d50a9c7 AlgoStudio uses Adorner to display name/abbrev. text prompts 2019-10-07 11:03:33 -05:00
John Colvin 909b4b6cfe AlgoStudio - put badge/name/abbrev uis on a single row 2019-10-07 11:03:33 -05:00
John Colvin 2fbc238ecc AlgoDefinitionVM - update 'is_dirty' when algo_root changes 2019-10-07 11:03:33 -05:00
John Colvin 7c73024919 ObservantAsyncCommand can_execute was not actually changing in response to parameter 2019-10-07 11:03:33 -05:00
John Colvin 0d85aa1644 AlgoStudio - remove old/erroneous 'algo templates' code 2019-10-07 11:03:33 -05:00
John Colvin df16acc4af AlgoStudio - better 'Clone' icon 2019-10-07 11:03:28 -05:00
John Colvin 7ad0c23704 AlgoStudioView - reduce save/revert button width to 90 2019-10-07 11:02:38 -05:00
John Colvin e85e0322e3 AlgoStudio uses consistent vertical padding between params; get rid of cartoonish circle in expander button 2019-10-07 11:02:38 -05:00
John Colvin 1a6a31c857 AlgoStudio - (Glbx)Iceberg/Splitter help button margin is consistent with other algos 2019-10-07 11:02:38 -05:00
John Colvin 65b09c6802 [non-functional] white space changes in AlgoContentTemplateSelector.xaml 2019-10-07 11:02:38 -05:00
John Colvin 148dae32d5 AlgoStudio - remove algo name from buttons, dock save/revert on bottom 2019-10-07 11:02:38 -05:00
John Colvin 9c116fa3d6 AlgoStudio - hide vertical scrollbar 2019-10-07 11:02:38 -05:00
Pedro Pinto 2eba014203 Implement server side of stop limit orders. 2019-07-26 17:36:07 -04:00
Pedro Pinto 37d022251e Fixed another bug in stop order handling. 2019-07-11 09:48:09 -04:00
Pedro Pinto 04cc1da4d9 Hopefully fixed stop order updates. 2019-07-10 17:10:35 -04:00
Jake Norbut 56bba90fdb ladder now determines badge price level based on new ui_price() 2019-07-10 13:11:57 -05:00
Jake Norbut a95841b0e9 OB price filter to hook up to new ui_price() rather than price() 2019-07-10 13:10:32 -05:00
Jake Norbut 9c6be9e87c adding new ui_price ext method that takes into account the status of and type of order (for stop and stop limits) 2019-07-10 13:09:45 -05:00
Pedro Pinto 7c830786ef Fixed issue in stop limit trigger detection 2019-07-10 11:05:00 -04:00
Jake Norbut 9eb9047249 shh...adding M4D secret key 2019-07-09 15:04:56 -05:00
Jake Norbut f7847b7767 adding new M4D cert ilink 2019-07-09 14:13:09 -05:00
Pedro Pinto ae720e4966 Merge branch 'master' into SP-69-fix-stop-and-stop-limit-orders 2019-07-09 12:52:49 -04:00
Pedro Pinto 3b77bc99b6 Fixed update of stop orders. 2019-06-27 13:31:05 -04:00
Jake Norbut b69a0c245e Revert "change price() to report stop/limit price when stop/limit has not yet been triggered"
This reverts commit 14bcef4c0e.
2019-06-26 14:49:26 -05:00
Jake Norbut 14bcef4c0e change price() to report stop/limit price when stop/limit has not yet been triggered 2019-06-26 14:45:27 -05:00
Pedro Pinto a23fe74cdc Re-enabled stop orders 2019-06-26 15:38:06 -04:00
Jake Norbut 7b48f71dec adding stop/limit order modification 2019-06-26 13:34:03 -05:00
Jake Norbut c334c1f636 making use of new has been triggered definition when determining where to draw badge 2019-06-26 13:34:03 -05:00
Jake Norbut 8572ff273f adding helper for determining if stop/limit has been triggered 2019-06-26 13:34:03 -05:00
Pedro Pinto e6ddc71c75 Merged with master 2019-06-26 10:43:29 -04:00
Pedro Pinto 81a0f9193d Support for server side stop orders is code complete. 2019-06-21 17:41:02 -04:00
5130 changed files with 649718 additions and 129930 deletions

No files matched your search

+10
View File
@@ -1 +1,11 @@
IndentWidth: 3
BinPackArguments: true
BinPackParameters: false
AlignAfterOpenBracket: AlwaysBreak
AlwaysBreakTemplateDeclarations: true
PenaltyReturnTypeOnItsOwnLine: 140
ReflowComments: false
---
Language: Proto
IndentWidth: 2
AllowShortFunctionsOnASingleLine: None
+30
View File
@@ -0,0 +1,30 @@
{
"version": 1,
"isRoot": true,
"tools": {
"dotnet-format": {
"version": "5.1.225507",
"commands": [
"dotnet-format"
]
},
"fable": {
"version": "4.0.6",
"commands": [
"fable"
]
},
"fantomas": {
"version": "5.2.2",
"commands": [
"fantomas"
]
},
"fake-cli": {
"version": "6.0.0",
"commands": [
"fake"
]
}
}
}
+265
View File
@@ -0,0 +1,265 @@
# Remove the line below if you want to inherit .editorconfig settings from higher directories
root = true
# C# files
[*.cs]
#### Core EditorConfig Options ####
# Indentation and spacing
indent_size = 3
indent_style = space
tab_width = 3
# New line preferences
end_of_line = crlf
insert_final_newline = true
#### .NET Coding Conventions ####
# Organize usings
dotnet_separate_import_directive_groups = true
dotnet_sort_system_directives_first = false
file_header_template = unset
# this. and Me. preferences
dotnet_style_qualification_for_event = false:silent
dotnet_style_qualification_for_field = false:silent
dotnet_style_qualification_for_method = false:silent
dotnet_style_qualification_for_property = false:silent
# Language keywords vs BCL types preferences
dotnet_style_predefined_type_for_locals_parameters_members = true:silent
dotnet_style_predefined_type_for_member_access = true:silent
# Parentheses preferences
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent
dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent
# Modifier preferences
dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent
# Expression-level preferences
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_collection_initializer = true:suggestion
dotnet_style_explicit_tuple_names = true:suggestion
dotnet_style_null_propagation = true:suggestion
dotnet_style_object_initializer = true:suggestion
dotnet_style_operator_placement_when_wrapping = beginning_of_line
dotnet_style_prefer_auto_properties = true:silent
dotnet_style_prefer_compound_assignment = true:suggestion
dotnet_style_prefer_conditional_expression_over_assignment = true:silent
dotnet_style_prefer_conditional_expression_over_return = true:silent
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
dotnet_style_prefer_inferred_tuple_names = true:suggestion
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
dotnet_style_prefer_simplified_boolean_expressions = true:suggestion
dotnet_style_prefer_simplified_interpolation = true:suggestion
# Field preferences
dotnet_style_readonly_field = true:suggestion
# Parameter preferences
dotnet_code_quality_unused_parameters = all:suggestion
# Suppression preferences
dotnet_remove_unnecessary_suppression_exclusions = none
#### C# Coding Conventions ####
# var preferences
csharp_style_var_elsewhere = false:silent
csharp_style_var_for_built_in_types = false:silent
csharp_style_var_when_type_is_apparent = false:silent
# Expression-bodied members
csharp_style_expression_bodied_accessors = true:silent
csharp_style_expression_bodied_constructors = false:silent
csharp_style_expression_bodied_indexers = true:silent
csharp_style_expression_bodied_lambdas = true:silent
csharp_style_expression_bodied_local_functions = false:silent
csharp_style_expression_bodied_methods = false:silent
csharp_style_expression_bodied_operators = false:silent
csharp_style_expression_bodied_properties = true:silent
# Pattern matching preferences
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
csharp_style_prefer_not_pattern = true:suggestion
csharp_style_prefer_pattern_matching = true:silent
csharp_style_prefer_switch_expression = true:suggestion
# Null-checking preferences
csharp_style_conditional_delegate_call = true:suggestion
# Modifier preferences
csharp_prefer_static_local_function = true:suggestion
csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:silent
# Code-block preferences
csharp_prefer_braces = true:silent
csharp_prefer_simple_using_statement = true:suggestion
# Expression-level preferences
csharp_prefer_simple_default_expression = true:suggestion
csharp_style_deconstructed_variable_declaration = true:suggestion
csharp_style_inlined_variable_declaration = true:suggestion
csharp_style_pattern_local_over_anonymous_function = true:suggestion
csharp_style_prefer_index_operator = true:suggestion
csharp_style_prefer_range_operator = true:suggestion
csharp_style_throw_expression = true:suggestion
csharp_style_unused_value_assignment_preference = discard_variable:suggestion
csharp_style_unused_value_expression_statement_preference = discard_variable:silent
# 'using' directive preferences
csharp_using_directive_placement = inside_namespace:silent
#### C# Formatting Rules ####
# New line preferences
csharp_new_line_before_catch = false
csharp_new_line_before_else = false
csharp_new_line_before_finally = false
csharp_new_line_before_members_in_anonymous_types = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_open_brace = none
csharp_new_line_between_query_expression_clauses = true
# Indentation preferences
csharp_indent_block_contents = true
csharp_indent_braces = false
csharp_indent_case_contents = true
csharp_indent_case_contents_when_block = true
csharp_indent_labels = one_less_than_current
csharp_indent_switch_labels = true
# Space preferences
csharp_space_after_cast = false
csharp_space_after_colon_in_inheritance_clause = true
csharp_space_after_comma = true
csharp_space_after_dot = false
csharp_space_after_keywords_in_control_flow_statements = true
csharp_space_after_semicolon_in_for_statement = true
csharp_space_around_binary_operators = before_and_after
csharp_space_around_declaration_statements = false
csharp_space_before_colon_in_inheritance_clause = true
csharp_space_before_comma = false
csharp_space_before_dot = false
csharp_space_before_open_square_brackets = false
csharp_space_before_semicolon_in_for_statement = false
csharp_space_between_empty_square_brackets = false
csharp_space_between_method_call_empty_parameter_list_parentheses = false
csharp_space_between_method_call_name_and_opening_parenthesis = false
csharp_space_between_method_call_parameter_list_parentheses = false
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
csharp_space_between_method_declaration_name_and_open_parenthesis = false
csharp_space_between_method_declaration_parameter_list_parentheses = false
csharp_space_between_parentheses = false
csharp_space_between_square_brackets = false
# Wrapping preferences
csharp_preserve_single_line_blocks = true
csharp_preserve_single_line_statements = true
#### Naming styles ####
# Naming rules
dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion
dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface
dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i
dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.types_should_be_pascal_case.symbols = types
dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case
dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members
dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case
# Symbol specifications
dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.interface.required_modifiers =
# user types
dotnet_naming_symbols.user_types.applicable_kinds = class, struct, interface, enum
dotnet_naming_symbols.user_types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.user_types.required_modifiers =
# non_field_members
dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method
dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.non_field_members.required_modifiers =
# public symbols
dotnet_naming_symbols.public_symbols.applicable_kinds = property,method,field,event,delegate
dotnet_naming_symbols.public_symbols.applicable_accessibilities = public,internal
# parameters
dotnet_naming_symbols.parameters.applicable_kinds = parameter
dotnet_naming_symbols.parameters.applicable_accessibilities = public,internal,protected,private,protected_internal,private_internal
# private symbols
dotnet_naming_symbols.private_symbols.applicable_kinds = property,method,field,event,delegate
dotnet_naming_symbols.private_symbols.applicable_accessibilities = protected,private
# local symbols
dotnet_naming_symbols.local_symbols.applicable_kinds = local
# parameter symbols
dotnet_naming_symbols.parameter_symbols.applicable_kinds = parameter
# Naming styles
dotnet_naming_style.pascal_case.required_prefix =
dotnet_naming_style.pascal_case.required_suffix =
dotnet_naming_style.pascal_case.word_separator =
dotnet_naming_style.pascal_case.capitalization = pascal_case
dotnet_naming_style.camel_case.required_prefix =
dotnet_naming_style.camel_case.required_suffix =
dotnet_naming_style.camel_case.word_separator =
dotnet_naming_style.camel_case.capitalization = camel_case
dotnet_naming_style.user_types.required_prefix =
dotnet_naming_style.user_types.required_suffix =
dotnet_naming_style.user_types.word_separator =
dotnet_naming_style.user_types.capitalization = pascal_case
dotnet_naming_style.interface.required_prefix = I
dotnet_naming_style.interface.required_suffix =
dotnet_naming_style.interface.word_separator =
dotnet_naming_style.interface.capitalization = pascal_case
dotnet_naming_style.local.capitalization = camel_case
dotnet_naming_style.parameter.capitalization = camel_case
# rules
dotnet_naming_rule.user_types.symbols = user_types
dotnet_naming_rule.user_types.style = user_types
dotnet_naming_rule.user_types.severity = suggestion
dotnet_naming_rule.interfaces.symbols = interface
dotnet_naming_rule.interfaces.style = interface_style
dotnet_naming_rule.interfaces.severity = suggestion
dotnet_naming_rule.public_members.symbols = public_symbols
dotnet_naming_rule.public_members.style = pascal_case
dotnet_naming_rule.public_members.severity = suggestion
dotnet_naming_rule.private_members.symbols = private_symbols
dotnet_naming_rule.private_members.style = camel_case
dotnet_naming_rule.private_members.severity = suggestion
dotnet_naming_rule.variables_are_camel_case.severity = suggestion
dotnet_naming_rule.variables_are_camel_case.symbols = local_symbols
dotnet_naming_rule.variables_are_camel_case.style = local
dotnet_naming_rule.parameters.symbols = parameter_symbols
dotnet_naming_rule.parameters.style = parameter
dotnet_naming_rule.parameters.severity = suggestion
+26 -3
View File
@@ -1,11 +1,14 @@
nohup.out
build/
build/**
install/**
.build_proxy/
cmake-build-debug/
.cache/
.ipynb_checkpoints/
.idea/
.dir-locals.el
*.pyc
.vscode/*
!.vscode/*.json
**.vscode
.vs
obj/
*.csproj.user
@@ -17,10 +20,13 @@ vcxproj.user
src/client/spark/Properties/launchSettings.json
compile_commands.json
.cquery_cached_index/
.cache/*
.clangd/*
src/client/sparkcmd/Properties/launchSettings.json
node_modules
paket-files
project.lock.json
src/.clang-format
src/server/sparkd/orderman/perf_analysis/data
src/server/sparkd/orderman/perf_analysis/logs/
src/server/sparkd/orderman/perf_analysis/trace_data/
@@ -34,3 +40,20 @@ trace_data/
/doc/user/public/*
.ionide/*
/.ignore
*.rej
.clangd/
*CMakeDeps.cmake
/sniper.ipynb
/src/.clang-format
/src/server/sparkd/cmds/spartan/analysis/.ipynb_checkpoints
/src/server/sparkd/cmds/spartan/analysis/data
.tmp/
.venv*/
.cache/
/src/Spark.Admin.WebApp/tsconfig.*.g.json
/src/Spark.Admin.WebApp/src/bin/
**/CMakeDeps.cmake
**/CMakeDeps_win.cmake
**/.devcontainer
*.Generated.cs
*.lst
+4 -7
View File
@@ -1,9 +1,6 @@
[submodule "externals"]
path = externals
url = git@bitbucket.org:bluetradesys/externals.git
[submodule "docker/linux"]
path = docker/linux
url = git@bitbucket.org:bluetradesys/linux_docker.git
[submodule "docker/windows"]
path = docker/windows
url = git@bitbucket.org:bluetradesys/windows_docker.git
url = https://x-token-auth:ATCTT3xFfGN0h_ENnUSfEAIzbfVzkQPLG26cIli50MtcTwZ7VEc8lin5tJYqibjlBJ9PM9R642Ra5GjiL52TBfbO8KeUBT0UoMT7gLQHL2Y1TkW9yZr6NkvsoDkSl49DeD4Ijiu4_0u4qEm4oMVDDg2_fB059-uOWOo7ZL94tGZET8CSVpFIGvs=B0E03660@bitbucket.org/bluetradesys/externals.git
[submodule "vcpkg"]
path = vcpkg
url = https://github.com/microsoft/vcpkg.git
+49
View File
@@ -0,0 +1,49 @@
# This configuration file was automatically generated by Gitpod.
# Please adjust to your needs (see https://www.gitpod.io/docs/introduction/learn-gitpod/gitpod-yaml)
# and commit this file to your remote git repository to share the goodness with others.
# Learn more from ready-to-use templates: https://www.gitpod.io/docs/introduction/getting-started/quickstart
image: gitpod/workspace-dotnet-8
tasks:
- name: Install Deps
init: |
(
set -e
sudo install-packages rapidjson-dev
sudo install-packages libssh2-1-dev
sudo install-packages openssh-server
sudo install-packages liblttng-ust-dev
sudo install-packages libpcap0.8-dev
sudo install-packages ccache
sudo ln -s $(which ccache) /usr/local/bin/clang
sudo ln -s $(which ccache) /usr/local/bin/clang++
sudo ln -s $(which ccache) /usr/local/bin/clang-17
sudo ln -s $(which ccache) /usr/local/bin/clang++-17
sudo ln -s $(which ccache) /usr/local/bin/gcc
sudo ln -s $(which ccache) /usr/local/bin/g++
sudo ln -s $(which ccache) /usr/local/bin/gcc-12
sudo ln -s $(which ccache) /usr/local/bin/g++-12
if [ -e externals/src/emumba/install_emumba-deribit-connector.sh ]; then
externals/src/emumba/install_emumba-deribit-connector.sh
fi
)
- name: Setup Python venv
init: |
python -m pip install --upgrade pip
python -m venv .venv
. .venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txt
ports:
- name: sparkd config
port: 8000
onOpen: notify
- name: sparkd bus
port: 8001
gitConfig:
alias.st: "status"
status.short: "true"
core.pager: "less -FXRS"
+147 -57
View File
@@ -1,66 +1,156 @@
cmake_minimum_required(VERSION 3.5)
cmake_minimum_required(VERSION 3.12)
project(spark)
set(CMAKE_CXX_STANDARD 20)
if(WIN32)
set(platform "windows")
else()
set(platform "linux")
endif()
set(
EXTERNALS_ROOT
"${CMAKE_SOURCE_DIR}/externals/${platform}"
CACHE
STRING
"External dependencies root folder (should contain folders: lib, bin, include")
set(SPARK_BIN "${EXTERNALS_ROOT}/bin")
set(SPARK_INCLUDE "${EXTERNALS_ROOT}/include")
set(SPARK_LIB "${EXTERNALS_ROOT}/lib/$<CONFIG>")
set(BUILD_API_SERVER OFF CACHE BOOL "Build the api server")
set(BUILD_DOCS OFF CACHE BOOL "Build documentation")
set(BUILD_SDK OFF CACHE BOOL "Build the sdk")
if (WIN32)
set (platform "windows")
else ()
set (platform "linux")
endif ()
set(BUILD_SPARKD OFF CACHE BOOL "Build sparkd")
set(BUILD_ADMIN_WEB_APP OFF CACHE BOOL "Build the Admin WebApp")
else()
set(BUILD_SPARKD ON CACHE BOOL "Build sparkd")
set(BUILD_ADMIN_WEB_APP ON CACHE BOOL "Build the Admin WebApp")
endif()
include_directories(BEFORE SYSTEM ${SPARK_INCLUDE} ${EXTERNALS_ROOT}/include/zlib)
link_directories(${SPARK_LIB})
if(BUILD_API_SERVER)
add_compile_definitions(SPARK_ENABLE_API_SERVER)
endif()
if(WIN32)
add_compile_definitions(SHARED_MEMORY_PREFIX="spark")
add_compile_definitions(APP_DATA_DIR="\$\{APPDATA\}/bts/")
# subdirs
add_subdirectory(src/lib)
else()
# make sparkd look for libspark.so in its directory
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
set(CMAKE_INSTALL_RPATH ".")
set(CMAKE_INSTALL_PREFIX "${CMAKE_SOURCE_DIR}/install")
set(SPARK_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/$<CONFIG>")
if(BUILD_API_SERVER)
add_compile_definitions(APP_DATA_DIR="\$\{HOME\}/spark_api/")
add_compile_definitions(SHARED_MEMORY_PREFIX="spark_api")
elseif(BUILD_SPARKD)
add_compile_definitions(SHARED_MEMORY_PREFIX="sparkd")
add_compile_definitions(APP_DATA_DIR="\$\{HOME\}/sparkdata/")
# Note: All macros that begin w/ 'CCAPI' are ccapi's macros (defined and/or
# read by their code). We override some below.
add_compile_definitions(SPARK_ENABLE_CCAPI)
# This allows us to override hardcoded exchange-urls with ones read from
# config (i.e., resolved at runtime rather than compile-time)
add_compile_definitions(CCAPI_EXPOSE_INTERNAL)
# Enable ccapi services
add_compile_definitions(CCAPI_ENABLE_SERVICE_MARKET_DATA)
add_compile_definitions(CCAPI_ENABLE_SERVICE_EXECUTION_MANAGEMENT)
# Enable ccapi exchanges
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_BINANCE)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_BINANCE_COIN_FUTURES)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_BINANCE_US)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_BINANCE_USDS_FUTURES)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_COINBASE)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_DERIBIT)
add_compile_definitions(CCAPI_ENABLE_EXCHANGE_OKX)
set (EXTERNALS_ROOT "${CMAKE_SOURCE_DIR}/externals/${platform}")
set (SPARK_PYTHON "${EXTERNALS_ROOT}/python")
set (SPARK_BIN "${EXTERNALS_ROOT}/bin")
set (SPARK_INCLUDE "${EXTERNALS_ROOT}/include")
set (SPARK_LIB "${EXTERNALS_ROOT}/lib/${CMAKE_BUILD_TYPE}")
set(CCAPI_LOG_LEVEL
"Warn"
CACHE STRING "<Fatal|Error|Warn|Info|Debug|Trace> Log level for ccapi")
string(TOUPPER "${CCAPI_LOG_LEVEL}" _ccapi_log_level_upper)
add_compile_definitions("CCAPI_ENABLE_LOG_${_ccapi_log_level_upper}")
include_directories (BEFORE SYSTEM ${SPARK_INCLUDE} ${EXTERNALS_ROOT}/include/zlib)
link_directories (${SPARK_LIB})
# ** Binance **
add_compile_definitions(CCAPI_BINANCE_URL_REST_BASE="https://api.binance.com")
add_compile_definitions(BINANCE_INSTRUMENTS_PATH="/api/v3/exchangeInfo")
add_compile_definitions(BINANCE_PRICE_STATS_PATH="/api/v3/ticker/24hr")
if (WIN32)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \
/MP \
/WX /wd4251 /wd4250 /wd4251 /wd4244 /wd4267 /wd4355 /wd4275 /wd4345 \
/DCURL_STATICLIB \
/D_WINSOCK_DEPRECATED_NO_WARNINGS \
/D__TBB_NO_IMPLICIT_LINKAGE \
/DBOOST_ALL_NO_LIB \
/D_SCL_SECURE_NO_WARNINGS /D_CRT_SECURE_NO_WARNINGS /D_WIN32_WINNT=0x0600")
set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_DEBUG} /MT")
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF /LTCG")
# ** Binance US **
add_compile_definitions(BINANCE_US_INSTRUMENTS_PATH="/api/v3/exchangeInfo")
add_compile_definitions(BINANCE_US_PRICE_STATS_PATH="/api/v3/ticker/24hr")
# ** Binance USDS Futures **
add_compile_definitions(CCAPI_BINANCE_USDS_FUTURES_URL_REST_BASE="https://dapi.binance.com")
add_compile_definitions(BINANCE_USDS_FUTURES_INSTRUMENTS_PATH="/dapi/v1/exchangeInfo")
add_compile_definitions(BINANCE_USDS_FUTURES_PRICE_STATS_PATH="/dapi/v1/ticker/24hr")
# ** Deribit **
add_compile_definitions(DERIBIT_INSTRUMENT_PATH="/api/v2/public/get_instrument")
add_compile_definitions(DERIBIT_INSTRUMENTS_PATH="/api/v2/public/get_instruments")
add_compile_definitions(DERIBIT_COMBOS_PATH="/api/v2/public/get_combos")
add_compile_definitions(DERIBIT_TICKER_PATH="/api/v2/public/ticker")
add_compile_definitions(DERIBIT_CURRENCIES_METHOD="public/get_currencies")
add_compile_definitions(DERIBIT_INSTRUMENT_METHOD="public/get_instrument")
add_compile_definitions(DERIBIT_INSTRUMENTS_METHOD="public/get_instruments")
add_compile_definitions(DERIBIT_COMBO_DETAILS_METHOD="public/get_combo_details")
add_compile_definitions(DERIBIT_COMBOS_METHOD="public/get_combos")
# ** Okx **
add_compile_definitions(OKX_INSTRUMENTS_PATH="/api/v5/public/instruments")
add_compile_definitions(OKX_UNDERLYING_PATH="/api/v5/public/underlying")
endif()
# subdirs
if (BUILD_SPARKD)
add_subdirectory(src/server/sparkd)
add_subdirectory(src/data_files)
endif()
add_subdirectory(src/lib)
else ()
# so that sparkd looks for libspark.so in its directory
set (CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
set (CMAKE_INSTALL_RPATH ".")
set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} \
-fPIC -Wall -pedantic -Wextra -Werror \
-Wno-missing-braces -Wno-ignored-qualifiers \
--std=c++17 -fdiagnostics-color")
set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_DEBUG} -fno-omit-frame-pointer -DNDEBUG -O3")
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wno-undef")
add_subdirectory(src/server/sparkd)
add_subdirectory(src/lib)
add_subdirectory(src/web)
add_subdirectory(doc/user)
add_subdirectory(src/sdk)
add_subdirectory(src/data_files)
add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/server
COMMAND mkdir -p ${CMAKE_BINARY_DIR}/server
COMMAND ln ARGS -sf ${CMAKE_BINARY_DIR}/src/server/sparkd/sparkd ${CMAKE_BINARY_DIR}/server
COMMAND ln ARGS -sf ${CMAKE_BINARY_DIR}/web ${CMAKE_BINARY_DIR}/server
COMMAND ln ARGS -sf ${CMAKE_BINARY_DIR}/data_files ${CMAKE_BINARY_DIR}/server
COMMAND ln ARGS -sf ${CMAKE_BINARY_DIR}/src/lib/libspark.so ${CMAKE_BINARY_DIR}/server
COMMAND ln ARGS -sf ${EXTERNALS_ROOT}/lib/Release/libOnixS.IceImpactMulticastPriceFeedHandlerCpp.so.3.13.0.0 ${CMAKE_BINARY_DIR}/server
COMMAND ln ARGS -sf ${EXTERNALS_ROOT}/lib/Release/libACE-5.7.5.so ${CMAKE_BINARY_DIR}/server
COMMAND mkdir ARGS -p ${CMAKE_BINARY_DIR}/server/plugins
COMMAND ln ARGS -sf ${CMAKE_BINARY_DIR}/sdk/examples/order_plugin_example.so ${CMAKE_BINARY_DIR}/server/plugins/
COMMENT "Creating server runtime layout"
DEPENDS sparkd data_files_dir)
add_custom_target(server_layout ALL DEPENDS ${CMAKE_BINARY_DIR}/server)
if (BUILD_ADMIN_WEB_APP)
add_subdirectory(src/Spark.Admin.WebApp)
endif()
if(BUILD_DOCS)
add_subdirectory(doc/user)
endif()
if(BUILD_SDK)
add_subdirectory(src/sdk)
endif()
if(BUILD_SPARKD)
add_custom_command(
OUTPUT ${CMAKE_BINARY_DIR}/server
COMMAND mkdir -p ${CMAKE_BINARY_DIR}/server
COMMAND ln ARGS -sf ${CMAKE_BINARY_DIR}/src/server/sparkd/sparkd ${CMAKE_BINARY_DIR}/server
COMMAND ln ARGS -sf ${CMAKE_BINARY_DIR}/data_files ${CMAKE_BINARY_DIR}/server
COMMAND ln ARGS -sf ${CMAKE_BINARY_DIR}/src/lib/libspark.so ${CMAKE_BINARY_DIR}/server
COMMAND
ln ARGS -sf
${EXTERNALS_ROOT}/lib/Release/libOnixS.IceImpactMulticastPriceFeedHandlerCpp.so.3.16.0.0
${CMAKE_BINARY_DIR}/server
COMMAND ln ARGS -sf ${EXTERNALS_ROOT}/lib/Release/libACE-5.7.5.so ${CMAKE_BINARY_DIR}/server
COMMAND mkdir ARGS -p ${CMAKE_BINARY_DIR}/server/plugins
COMMENT "Creating server runtime layout"
DEPENDS sparkd data_files_dir)
add_custom_target(server_layout ALL DEPENDS ${CMAKE_BINARY_DIR}/server)
install(
DIRECTORY "${CMAKE_BINARY_DIR}/server/plugins"
DESTINATION "${SPARK_INSTALL_PREFIX}/bin")
install(
FILES
"${SPARK_LIB}/libACE-5.7.5.so"
"${SPARK_LIB}/libOnixS.IceImpactMulticastPriceFeedHandlerCpp.so.3.16.0.0"
DESTINATION "${SPARK_INSTALL_PREFIX}/bin")
endif()
endif()
+387
View File
@@ -0,0 +1,387 @@
{
"version": 4,
"cmakeMinimumRequired": {
"major": 3,
"minor": 23,
"patch": 0
},
"configurePresets": [
{
"name": "spark",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
},
"generator": "Visual Studio 17 2022",
"binaryDir": "${sourceDir}/build",
"environment": {
"SPARK_CMAKE_CXX_FLAGS": "/MP /WX /wd4250 /wd4251 /wd4244 /wd4267 /wd4355 /wd4275 /wd4345 /bigobj /EHsc /DCURL_STATICLIB /D_WINSOCK_DEPRECATED_NO_WARNINGS /D__TBB_NO_IMPLICIT_LINKAGE /DBOOST_ALL_NO_LIB /std:c++20 /D_SCL_SECURE_NO_WARNINGS /D_CRT_SECURE_NO_WARNINGS /D_WIN32_WINNT=0x0600"
},
"cacheVariables": {
"CMAKE_CXX_FLAGS": "$env{SPARK_CMAKE_CXX_FLAGS}",
"CMAKE_CXX_FLAGS_DEBUG": "$env{SPARK_CMAKE_CXX_FLAGS} /MTd",
"CMAKE_CXX_FLAGS_RELEASE": "$env{SPARK_CMAKE_CXX_FLAGS} /MT",
"CMAKE_CXX_STANDARD": "20",
"CMAKE_SHARED_LINKER_FLAGS_DEBUG": "/DEBUG",
"CMAKE_SHARED_LINKER_FLAGS_RELEASE": "/OPT:REF /OPT:ICF /LTCG",
"CMAKE_TOOLCHAIN_FILE": "${sourceDir}/vcpkg/scripts/buildsystems/vcpkg.cmake",
"EXTERNALS_ROOT": "${sourceDir}/externals/windows",
"CONFIG_DEFAULTS_PATH": "config/profiles/default/*.conf",
"DOTNET_BINARY_DIR": "${sourceDir}/build/$<CONFIG>/bin/net8.0",
"DOTNET_WINDOWS_BINARY_DIR": "${sourceDir}/build/$<CONFIG>/bin/net8.0-windows"
}
},
{
"name": "sparkd",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Linux"
},
"hidden": true,
"generator": "Ninja",
"binaryDir": "${sourceDir}/build/${presetName}",
"cacheVariables": {
"platform": "",
"CMAKE_BUILD_WITH_INSTALL_RPATH": {
"type": "BOOL",
"value": "ON"
},
"CMAKE_CXX_STANDARD": "20",
"CMAKE_INSTALL_RPATH": ".",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/install/${presetName}/sparkd",
"CMAKE_EXE_LINKER_FLAGS": "-Wno-undef",
"EXTERNALS_ROOT": "${sourceDir}/externals/linux",
"BUILD_SDK": {
"type": "BOOL",
"value": "OFF"
},
"BUILD_ADMIN_WEB_APP": {
"type": "BOOL",
"value": "ON"
}
}
},
{
"name": "sparkd-debug",
"inherits": "sparkd",
"hidden": true,
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_EXPORT_COMPILE_COMMANDS": {
"type": "BOOL",
"value": "ON"
},
"CCAPI_LOG_LEVEL": "Info",
"CONFIG_DEFAULTS_PATH": "config/profiles/md_dev/*.conf;config/profiles/default/*.conf"
}
},
{
"name": "sparkd-release",
"inherits": "sparkd",
"hidden": true,
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"CCAPI_LOG_LEVEL": "Warn",
"CONFIG_DEFAULTS_PATH": "config/profiles/md_prod/*.conf;config/profiles/default/*.conf"
}
},
{
"name": "sparkd-debug-clang",
"inherits": "sparkd-debug",
"displayName": "Debug (clang)",
"description": "Debug build compiled w/ clang",
"binaryDir": "${sourceDir}/build/clang/debug",
"cacheVariables": {
"CMAKE_C_COMPILER": "clang",
"CMAKE_CXX_COMPILER": "clang++",
"CMAKE_CXX_FLAGS_DEBUG": "-g -fPIC -Wall -pedantic -Wextra -Werror -Wno-missing-braces -Wno-ignored-qualifiers --std=c++20 -fdiagnostics-color -DDEBUG",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/install/clang/debug/sparkd"
}
},
{
"name": "sparkd-debug-gcc",
"inherits": "sparkd-debug",
"displayName": "Debug (gcc)",
"description": "Debug build compiled w/ gcc",
"binaryDir": "${sourceDir}/build/gcc/debug",
"cacheVariables": {
"CMAKE_C_COMPILER": "gcc",
"CMAKE_CXX_COMPILER": "g++",
"CMAKE_CXX_FLAGS_DEBUG": "-g -fPIC -Wall -pedantic -Wextra -Werror -Wno-missing-braces -Wno-ignored-qualifiers --std=c++20 -fdiagnostics-color -Wno-stringop-overread -DDEBUG",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/install/gcc/debug/sparkd"
}
},
{
"name": "sparkd-release-clang",
"inherits": "sparkd-release",
"displayName": "Release (clang)",
"description": "Release build compiled w/ clang",
"binaryDir": "${sourceDir}/build/clang/release",
"cacheVariables": {
"CMAKE_C_COMPILER": "clang",
"CMAKE_CXX_COMPILER": "clang++",
"CMAKE_CXX_FLAGS_RELEASE": "-fPIC -Wall -pedantic -Wextra -Werror -Wno-missing-braces -Wno-ignored-qualifiers --std=c++20 -fdiagnostics-color -fno-omit-frame-pointer -DNDEBUG -O3",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/install/clang/release/sparkd"
}
},
{
"name": "sparkd-release-gcc",
"inherits": "sparkd-release",
"displayName": "Release (gcc)",
"description": "Release build compiled w/ gcc",
"binaryDir": "${sourceDir}/build/gcc/release",
"cacheVariables": {
"CMAKE_C_COMPILER": "gcc",
"CMAKE_CXX_COMPILER": "g++",
"CMAKE_CXX_FLAGS_RELEASE": "-fPIC -Wall -pedantic -Wextra -Werror -Wno-missing-braces -Wno-ignored-qualifiers --std=c++20 -fdiagnostics-color -Wno-stringop-overread -Wno-maybe-uninitialized -fno-omit-frame-pointer -DNDEBUG -O3",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/install/gcc/release/sparkd"
}
},
{
"name": "spark-api-server-base",
"hidden": true,
"binaryDir": "${sourceDir}/build/${presetName}",
"cacheVariables": {
"BUILD_API_SERVER": {
"type": "bool",
"value": "ON"
},
"CONFIG_DEFAULTS_PATH": "config/profiles/md_dev/*.conf;config/profiles/default/*.conf"
}
},
{
"name": "spark-api-server-windows",
"inherits": "spark",
"displayName": "Spark Api Server",
"cacheVariables": {
"BUILD_API_SERVER": {
"type": "bool",
"value": "ON"
}
}
},
{
"name": "spark-api-server-linux",
"inherits": "sparkd",
"displayName": "Spark Api Server",
"generator": "Ninja Multi-Config",
"cacheVariables": {
"BUILD_ADMIN_WEB_APP": {
"type": "BOOL",
"value": "OFF"
},
"BUILD_API_SERVER": {
"type": "bool",
"value": "ON"
},
"BUILD_SPARKD": {
"type": "BOOL",
"value": "OFF"
},
"CMAKE_C_COMPILER": "clang",
"CMAKE_CXX_COMPILER": "clang++",
"CMAKE_CXX_FLAGS_DEBUG": "-g -fPIC -Wall -pedantic -Wextra -Werror -Wno-missing-braces -Wno-ignored-qualifiers --std=c++20 -fdiagnostics-color -DDEBUG",
"CMAKE_CXX_FLAGS_RELEASE": "-fPIC -Wall -pedantic -Wextra -Werror -Wno-missing-braces -Wno-ignored-qualifiers --std=c++20 -fdiagnostics-color -fno-omit-frame-pointer -DNDEBUG -O3",
"CMAKE_INSTALL_PREFIX": "${sourceDir}/install/${presetName}",
"CONFIG_DEFAULTS_PATH": "config/profiles/default/*.conf",
"DOTNET_BINARY_DIR": "${sourceDir}/build/$<CONFIG>/bin/net8.0"
}
},
{
"name": "sparkd-publish",
"inherits": "sparkd-release-gcc",
"displayName": "Publish",
"description": "Production build compiled w/ gcc and ready to ship"
},
{
"name": "sparkd-ccapi-diag",
"inherits": "sparkd-debug-clang",
"displayName": "Debug (ccapi diag)",
"description": "Debug build w/ ccapi log level 'Trace'",
"binaryDir": "${sourceDir}/build/${presetName}",
"cacheVariables": {
"CCAPI_LOG_LEVEL": "Trace"
}
},
{
"name": "data-stream-suite",
"inherits": "spark",
"displayName": "Data Stream Suite",
"description": "Data Stream utils ported over from Edge",
"binaryDir": "${sourceDir}/build/${presetName}",
"cacheVariables": {
"CONFIG_DEFAULTS_PATH": "config/profiles/default/*.conf;config/profiles/data_stream/*.conf"
}
}
],
"buildPresets": [
{
"name": "spark",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
},
"hidden": true
},
{
"name": "spark-debug",
"displayName": "Debug",
"inherits": "spark",
"configurePreset": "spark",
"configuration": "Debug"
},
{
"name": "spark-release",
"displayName": "Release",
"inherits": "spark",
"configurePreset": "spark",
"configuration": "Release"
},
{
"name": "sparkd",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Linux"
},
"hidden": true,
"targets": [
"data_files_dir",
"admin_web_app_bundle",
"install",
"libspark",
"rapidjson_project",
"server_layout",
"sparkd"
]
},
{
"name": "sparkd-debug-clang",
"configurePreset": "sparkd-debug-clang",
"displayName": "Debug (clang)",
"inherits": "sparkd"
},
{
"name": "sparkd-debug-gcc",
"configurePreset": "sparkd-debug-gcc",
"displayName": "Debug (gcc)",
"inherits": "sparkd"
},
{
"name": "sparkd-release-clang",
"configurePreset": "sparkd-release-clang",
"displayName": "Release (clang)",
"inherits": "sparkd"
},
{
"name": "sparkd-release-gcc",
"configurePreset": "sparkd-release-gcc",
"displayName": "Release (gcc)",
"inherits": "sparkd"
},
{
"name": "spark-api-server-windows",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
},
"hidden": true,
"configurePreset": "spark-api-server-windows"
},
{
"name": "spark-api-server-windows-debug",
"displayName": "Spark Api Server (Debug)",
"inherits": "spark-api-server-windows",
"configuration": "Debug"
},
{
"name": "spark-api-server-windows-release",
"displayName": "Spark Api Server (Debug)",
"inherits": "spark-api-server-windows",
"configuration": "Release"
},
{
"name": "spark-api-server-linux",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Linux"
},
"hidden": true,
"configurePreset": "spark-api-server-linux"
},
{
"name": "spark-api-server-linux-debug",
"inherits": "spark-api-server-linux",
"displayName": "Spark Api Server (Debug)",
"configuration": "Debug"
},
{
"name": "spark-api-server-linux-release",
"inherits": "spark-api-server-linux",
"displayName": "Spark Api Server (Release)",
"configuration": "Release"
},
{
"name": "sparkd-publish",
"configurePreset": "sparkd-publish",
"displayName": "Publish",
"inherits": "sparkd",
"targets": "install"
},
{
"name": "sparkd-ccapi-diag",
"configurePreset": "sparkd-ccapi-diag",
"displayName": "Debug (ccapi diag)",
"inherits": "sparkd"
},
{
"name": "data-stream-suite-debug",
"displayName": "DataStreamSuite (Debug)",
"configurePreset": "data-stream-suite",
"configuration": "Debug"
},
{
"name": "data-stream-suite-release",
"displayName": "DataStreamSuite (Release)",
"configurePreset": "data-stream-suite",
"configuration": "Release"
}
]
}
+15
View File
@@ -0,0 +1,15 @@
#nusers:
#allow concurrent : true
#expires: 2024-Oct-06 00:00:00 638637696000000000
#generation_time: 2023-Oct-06 18:58:48.015723 5250008173707545134
EncryptedKeyCode {
value {
keycode: "KgoMeiVPzf/kv65GYGCyQQJVY/11sId6LYRwNNlNwA83+sISiSQnOZrziSgxjEAcaAZQn1nV4hY6MRi4XXznvxLYnDKf2bK0yktWWpSSqxqNxbDQ6AVSk5MGHptbsQSGYpYHlyCi0Niv8ES5NTj/FiBJXPrGEZABZBbNkqXIOa0HDdcxY+joeIf32ekX+5/LXN5XDTZBFT2A7q+IPDrFbKzSBvlzGOONSlq+XyKZZPqt0rXGO45V/GxFUTMYiEvn1/72iPGQ715tFXkr9ozGtitonnixzvW8Sfwmu7vM8VpWfoAc9D/1w5m5Ol5BS+Je8wigQysyrC8rud2KU+f7bQ=="
}
}
PublicKey {
value {
key: "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvvtV/IP1l/F85ME8N8H+\n8TCBOB68Lxd7sdR0geJGssLBq5F22IIlVKylNxiQV3TE6/hmL9dmr8FuUMrjPCal\nvma0axyAdyCMjFH3U0bYzzxnxSWuj5VJIgaZKOVQuX/3Hb+l4RZi7VWZgQFvEJ+F\ny66S2wDu4ey71Mt0yxkMsl5WMZBL3M1z+bt3pKzmBoyIMVLDcV1k1Yr2wspIRriZ\n95er3JWofK1P9s8B3OoqypEopLRW5hJaZN8YRpFNq5VwRUSj83KVobBAQTWDdOA5\nzOkixPVklZFaNyR06iT0gcgZUUM2bjyfQJGQ4GBCZpZb8KPPgtP+WhghoWby9OLv\nKQIDAQAB\n-----END PUBLIC KEY-----"
}
}
+83
View File
@@ -0,0 +1,83 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.3.32922.545
MinimumVisualStudioVersion = 15.0.26124.0
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "spark_api", "src\client\spark_api\spark_api.csproj", "{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "spark_core", "src\client\spark_core\spark_core.csproj", "{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "spark_websocket", "src\client\spark_websocket\spark_websocket.csproj", "{3201359D-C071-4089-9EDE-B04D759F1508}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "spark_api_server", "src\client\spark_api_server\spark_api_server.csproj", "{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "spark_test", "src\client\spark_test\spark_test.csproj", "{EFC9FC4D-E92B-4C6D-9B97-26D38EAA118D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spark.Console", "src\client\Spark.Console\Spark.Console.csproj", "{89D666E6-B500-498F-B026-4D167F68ADFC}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
MinSizeRel|x64 = MinSizeRel|x64
Release|x64 = Release|x64
RelWithDebInfo|x64 = RelWithDebInfo|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Debug|x64.ActiveCfg = Debug|x64
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Debug|x64.Build.0 = Debug|x64
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.MinSizeRel|x64.ActiveCfg = Release|x64
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.MinSizeRel|x64.Build.0 = Release|x64
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Release|x64.ActiveCfg = Release|x64
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.Release|x64.Build.0 = Release|x64
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.RelWithDebInfo|x64.ActiveCfg = Release|x64
{DC9A8975-8211-4FC9-A9BA-C8B9D26AD481}.RelWithDebInfo|x64.Build.0 = Release|x64
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Debug|x64.ActiveCfg = Debug|x64
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Debug|x64.Build.0 = Debug|x64
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.MinSizeRel|x64.ActiveCfg = Release|x64
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.MinSizeRel|x64.Build.0 = Release|x64
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Release|x64.ActiveCfg = Release|x64
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.Release|x64.Build.0 = Release|x64
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.RelWithDebInfo|x64.ActiveCfg = Release|x64
{6E449EB6-20AC-4FA6-B8D9-10F4BB7E1FEE}.RelWithDebInfo|x64.Build.0 = Release|x64
{3201359D-C071-4089-9EDE-B04D759F1508}.Debug|x64.ActiveCfg = Debug|x64
{3201359D-C071-4089-9EDE-B04D759F1508}.Debug|x64.Build.0 = Debug|x64
{3201359D-C071-4089-9EDE-B04D759F1508}.MinSizeRel|x64.ActiveCfg = Debug|x64
{3201359D-C071-4089-9EDE-B04D759F1508}.MinSizeRel|x64.Build.0 = Debug|x64
{3201359D-C071-4089-9EDE-B04D759F1508}.Release|x64.ActiveCfg = Release|x64
{3201359D-C071-4089-9EDE-B04D759F1508}.Release|x64.Build.0 = Release|x64
{3201359D-C071-4089-9EDE-B04D759F1508}.RelWithDebInfo|x64.ActiveCfg = Release|x64
{3201359D-C071-4089-9EDE-B04D759F1508}.RelWithDebInfo|x64.Build.0 = Release|x64
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.Debug|x64.ActiveCfg = Debug|x64
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.Debug|x64.Build.0 = Debug|x64
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.MinSizeRel|x64.ActiveCfg = Debug|x64
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.MinSizeRel|x64.Build.0 = Debug|x64
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.Release|x64.ActiveCfg = Release|x64
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.Release|x64.Build.0 = Release|x64
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.RelWithDebInfo|x64.ActiveCfg = Release|x64
{2B8C5D01-FF78-4BFA-B332-5E430586DAF9}.RelWithDebInfo|x64.Build.0 = Release|x64
{EFC9FC4D-E92B-4C6D-9B97-26D38EAA118D}.Debug|x64.ActiveCfg = Debug|x64
{EFC9FC4D-E92B-4C6D-9B97-26D38EAA118D}.Debug|x64.Build.0 = Debug|x64
{EFC9FC4D-E92B-4C6D-9B97-26D38EAA118D}.MinSizeRel|x64.ActiveCfg = Debug|x64
{EFC9FC4D-E92B-4C6D-9B97-26D38EAA118D}.MinSizeRel|x64.Build.0 = Debug|x64
{EFC9FC4D-E92B-4C6D-9B97-26D38EAA118D}.Release|x64.ActiveCfg = Release|x64
{EFC9FC4D-E92B-4C6D-9B97-26D38EAA118D}.Release|x64.Build.0 = Release|x64
{EFC9FC4D-E92B-4C6D-9B97-26D38EAA118D}.RelWithDebInfo|x64.ActiveCfg = Debug|x64
{EFC9FC4D-E92B-4C6D-9B97-26D38EAA118D}.RelWithDebInfo|x64.Build.0 = Debug|x64
{89D666E6-B500-498F-B026-4D167F68ADFC}.Debug|x64.ActiveCfg = Debug|x64
{89D666E6-B500-498F-B026-4D167F68ADFC}.Debug|x64.Build.0 = Debug|x64
{89D666E6-B500-498F-B026-4D167F68ADFC}.MinSizeRel|x64.ActiveCfg = Debug|x64
{89D666E6-B500-498F-B026-4D167F68ADFC}.MinSizeRel|x64.Build.0 = Debug|x64
{89D666E6-B500-498F-B026-4D167F68ADFC}.Release|x64.ActiveCfg = Release|x64
{89D666E6-B500-498F-B026-4D167F68ADFC}.Release|x64.Build.0 = Release|x64
{89D666E6-B500-498F-B026-4D167F68ADFC}.RelWithDebInfo|x64.ActiveCfg = Debug|x64
{89D666E6-B500-498F-B026-4D167F68ADFC}.RelWithDebInfo|x64.Build.0 = Debug|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {422D1620-0166-4C26-9A81-CA8A2EB1AB58}
EndGlobalSection
GlobalSection(Performance) = preSolution
HasPerformanceSessions = true
EndGlobalSection
EndGlobal
+33
View File
@@ -0,0 +1,33 @@
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
http.sslbackend=openssl
http.sslcainfo=C:/Program Files/Git/mingw64/etc/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=false
pull.rebase=false
credential.helper=manager
credential.https://dev.azure.com.usehttppath=true
init.defaultbranch=master
status.short=true
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true
submodule.active=.
remote.origin.url=git@bitbucket.org:bluetradesys/spark.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.spark_crypto.dev.remote=origin
branch.spark_crypto.dev.merge=refs/heads/spark_crypto.dev
submodule.docker/linux.url=git@bitbucket.org:bluetradesys/linux_docker.git
submodule.docker/windows.url=git@bitbucket.org:bluetradesys/windows_docker.git
submodule.externals.url=git@bitbucket.org:bluetradesys/externals.git
branch.development.remote=origin
branch.development.merge=refs/heads/development
user.name=John Colvin
user.email=john.colvin@bluetradesys.com
+12
View File
@@ -0,0 +1,12 @@
function(print_list var)
set(CMAKE_MESSAGE_INDENT "")
set(_var_str "")
foreach(item IN LISTS ${var})
set(_var_str "${_var_str}\n ${item}")
endforeach()
if ("${ARGN}" STREQUAL "VERBOSE")
message(VERBOSE "***${var}:${_var_str}")
else()
message("***${var}:${_var_str}")
endif()
endfunction()
+145
View File
@@ -0,0 +1,145 @@
set(Protobuf_PROTOC_EXECUTABLE "${SPARK_BIN}/protoc")
set(PROTOBUF_INCLUDE_DIRS "${SPARK_INCLUDE}")
set(PROTOBUF_STATIC_LIB "libprotobuf")
function(Protobuf_Generate_Cpp SRCS HDRS)
set(${SRCS})
set(${HDRS})
foreach(FIL ${ARGN})
get_filename_component(ABS_FIL ${FIL} ABSOLUTE)
get_filename_component(FIL_WE ${FIL} NAME_WE)
get_filename_component(FIL_DIR ${FIL} DIRECTORY)
if(FIL_DIR)
set(FIL_WE "${FIL_DIR}/${FIL_WE}")
endif()
list(APPEND ${SRCS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.cc")
list(APPEND ${HDRS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.h")
add_custom_command(
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.cc"
"${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.h"
COMMAND
${Protobuf_PROTOC_EXECUTABLE} ARGS --cpp_out=${CMAKE_BINARY_DIR}/src -I
${PROTOBUF_INCLUDE_DIRS} -I ${CMAKE_SOURCE_DIR}/src ${ABS_FIL}
DEPENDS ${ABS_FIL}
COMMENT "Running C++ protocol buffer compiler on ${FIL}"
VERBATIM)
endforeach()
set_source_files_properties(${${SRCS}} ${${HDRS}} PROPERTIES GENERATED TRUE)
# remove some warnings from protobuf generated files
if(WIN32)
set_source_files_properties(${${SRCS}} PROPERTIES COMPILE_FLAGS
"/wd4309 /wd4838")
else()
set_source_files_properties(
${${SRCS}}
PROPERTIES
COMPILE_FLAGS
"-Wno-unused-parameter -Wno-effc++ -Wno-pedantic -Wno-sign-compare -Wno-uninitialized"
)
endif()
set(${SRCS}
${${SRCS}}
PARENT_SCOPE)
set(${HDRS}
${${HDRS}}
PARENT_SCOPE)
endfunction()
function(Service_Compiler_Generate_Cpp SRCS HDRS)
set(${SRCS})
set(${HDRS})
foreach(FIL ${ARGN})
get_filename_component(ABS_FIL ${FIL} ABSOLUTE)
get_filename_component(FIL_WE ${FIL} NAME_WE)
get_filename_component(FIL_DIR ${FIL} DIRECTORY)
if(FIL_DIR)
set(FIL_WE "${FIL_DIR}/${FIL_WE}")
endif()
list(APPEND ${SRCS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.cc")
list(APPEND ${HDRS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.h")
list(APPEND ${SRCS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.client.pb.cc")
list(APPEND ${HDRS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.client.pb.h")
list(APPEND ${SRCS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.server.pb.cc")
list(APPEND ${HDRS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.server.pb.h")
set(TEMPLATES
${CMAKE_CURRENT_SOURCE_DIR}/api/service_compiler/templates/cpp/client.pb.cc
${CMAKE_CURRENT_SOURCE_DIR}/api/service_compiler/templates/cpp/client.pb.h
${CMAKE_CURRENT_SOURCE_DIR}/api/service_compiler/templates/cpp/server.pb.cc
${CMAKE_CURRENT_SOURCE_DIR}/api/service_compiler/templates/cpp/server.pb.h
)
if(WIN32)
add_custom_command(
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.cc"
"${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.h"
"${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.client.pb.cc"
"${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.client.pb.h"
"${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.server.pb.cc"
"${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.server.pb.h"
COMMAND SET PYTHONPATH=${SPARK_PYTHON}
COMMAND ${CMAKE_SOURCE_DIR}/.venv/Scripts/activate.bat
COMMAND
${Protobuf_PROTOC_EXECUTABLE} ARGS --cpp_out=${CMAKE_BINARY_DIR}/src
--plugin=protoc-gen-service=${CMAKE_SOURCE_DIR}/src/lib/api/service_compiler/plugin.cmd
--service_out=lang=cpp:${CMAKE_BINARY_DIR}/src -I
${PROTOBUF_INCLUDE_DIRS} -I ${CMAKE_SOURCE_DIR}/src ${ABS_FIL}
DEPENDS ${ABS_FIL} ${TEMPLATES}
${CMAKE_CURRENT_SOURCE_DIR}/api/service_compiler/plugin.py
COMMENT "Running C++ service compiler on ${FIL}"
VERBATIM)
else()
add_custom_command(
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.cc"
"${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.h"
"${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.client.pb.cc"
"${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.client.pb.h"
"${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.server.pb.cc"
"${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.server.pb.h"
COMMAND ${CMAKE_SOURCE_DIR}/tools/venv_exec.sh
ARGS
${Protobuf_PROTOC_EXECUTABLE}
--cpp_out=${CMAKE_BINARY_DIR}/src
--plugin=protoc-gen-service=${CMAKE_SOURCE_DIR}/src/lib/api/service_compiler/plugin.py
--service_out=lang=cpp,make_file_name=${ABS_FIL}:${CMAKE_BINARY_DIR}/src
-I ${PROTOBUF_INCLUDE_DIRS} -I ${CMAKE_SOURCE_DIR}/src ${ABS_FIL}
DEPENDS ${ABS_FIL} ${TEMPLATES}
${CMAKE_CURRENT_SOURCE_DIR}/api/service_compiler/plugin.py
COMMENT "Running C++ service compiler on ${FIL}"
VERBATIM)
endif()
endforeach()
# remove some warnings from protobuf generated files
if(WIN32)
set_source_files_properties(${${SRCS}} PROPERTIES COMPILE_FLAGS
"/wd4309 /wd4838")
else()
set_source_files_properties(
${${SRCS}}
PROPERTIES
COMPILE_FLAGS
"-Wno-unused-parameter -Wno-effc++ -Wno-pedantic -Wno-sign-compare -Wno-uninitialized"
)
endif()
set(${SRCS}
${${SRCS}}
PARENT_SCOPE)
set(${HDRS}
${${HDRS}}
PARENT_SCOPE)
endfunction()
+32
View File
@@ -0,0 +1,32 @@
# inspired by https://stackoverflow.com/questions/1027247/specify-source-files-globally-with-glob
# Compare the new contents with the existing file, if it exists and is the same we don't want to
# trigger a make by changing its timestamp.
function(update_file path content)
set(old_content "")
if(EXISTS "${path}")
file(READ "${path}" old_content)
endif()
if(NOT old_content STREQUAL content)
file(WRITE "${path}" "${content}")
endif()
endfunction(update_file)
# Creates a file called CMakeDeps.cmake next to your CMakeLists.txt with the list of dependencies in
# it - this file should be treated as part of CMakeLists.txt (source controlled, etc.).
function(update_deps_file deps)
if(WIN32)
set(deps_file "CMakeDeps_win.cmake")
else()
set(deps_file "CMakeDeps.cmake")
endif()
# Normalize the list so it's the same on every machine
list(REMOVE_DUPLICATES deps)
list(SORT deps)
# Update the deps file
set(content "set(sources ${deps})")
update_file(${deps_file} "${content}")
# Include the file so it's tracked as a generation dependency we don't need the content.
include(${deps_file})
endfunction(update_deps_file)
+24
View File
@@ -0,0 +1,24 @@
cmake_minimum_required(VERSION 3.5)
# Explicitly set policy to convert relative paths to absolute (although this is a default policy,
# setting it explicitly prevents a compile-warning)
cmake_policy(SET CMP0076 NEW)
# add protos to the library to facilitate source_group
target_sources(libspark PUBLIC ${Config_Protos} ${NonConfig_Protos} ${Service_Protos})
function(assign_source_group)
foreach(_source IN ITEMS ${ARGN})
if(IS_ABSOLUTE "${_source}")
file(RELATIVE_PATH _source_rel "${CMAKE_CURRENT_SOURCE_DIR}" "${_source}")
else()
set(_source_rel "${_source}")
endif()
get_filename_component(_source_path "${_source_rel}" PATH)
string(REPLACE "/" "\\" _source_path_msvc "${_source_path}")
source_group("${_source_path_msvc}" FILES "${_source}")
set(SOURCE_FILES "${_source}")
endforeach()
endfunction(assign_source_group)
assign_source_group(${SparkLib_Sources} ${Config_Protos} ${NonConfig_Protos} ${Service_Protos})
+224
View File
@@ -0,0 +1,224 @@
[cmake]: https://cmake.org/
[cmake ext]: https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools
[cmake presets]: https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html
[cpp ext]: https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools
[clangd ext]: https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd
[dotnet]: https://dotnet.microsoft.com/en-us/download/dotnet
[ninja build]: https://ninja-build.org/
[ninja generator]: https://cmake.org/cmake/help/latest/generator/Ninja.html
[ninja multi-config generator]: https://cmake.org/cmake/help/latest/generator/Ninja%20Multi-Config.html
[python]: https://www.python.org/
[py venv]: https://docs.python.org/3/library/venv.html
[visual studio]: https://visualstudio.microsoft.com/
[visual studio generator]: https://cmake.org/cmake/help/latest/generator/Visual%20Studio%2017%202022.html
# C++ Intellisense for Spark on Windows (VS Code)
**Steps**
1. Install the **[C++ extension][cpp ext]**
2. Install the **[CMake extension][cmake ext]**
3. Copy `c_cpp_properties.json` from this folder to `$workspaceFolder/.vscode/`
4. In the VS Code Command Palette, run **CMake: Select Configure Preset**, then
select '**spark**' from the dropdown
**Notes**
* Intellisense won't work for generated files/types until you build libspark
# C++ Intellisense for Sparkd on Linux (VS Code)
1. Install the **[CMake extension][cmake ext]**
2. Install the **[Clangd extension][clangd ext]**
3. (Optional) Install the **[C++ extension][cpp ext]** (*needed for debugging,
but intellisense should work without it*).
4. If the **[C++ extension][cpp ext]** is installed, disable its intellisense in
your workspace settings (*Clangd intellisense is better*)
```
"C_Cpp.intelliSenseEngine": "disabled"
```
5. In the VS Code Command Palette, run **CMake: Select Configure Preset**, then select the
**[preset][cmake presets]** you wish to build from the dropdown
* *The **Clang** presets may work best with the **Clangd** extension*
* *Intellisense won't work for generated files/types until you build libspark*
# Build Spark on Windows
### Dependencies
* **[CMake][cmake]** (version >= 3.23)
* **[Python][python]** (version >= 3.9)
* **[Visual Studio][visual studio]** (2022)
* **[Dotnet][dotnet]** (sdk version >= 7.0.0)
### References
* **[CMakePresets][cmake presets]**
* **[Visual Studio 17 2022 (CMake generator)][visual studio generator]**
* **[Python Virtual Environment][py venv]**
### Notes
* *Run commands from the repo root dir unless otherwise noted*
1. Set up the **[Python virtual environment][py venv]**<br>
```
# Create the virtual environment
python3 -m venv .venv
# Activate the virtual environment
.venv\bin\activate.bat
# Update pip
python -m pip install --upgrade pip
# Install packages
pip install -r requirements.txt
```
2. Build
* *Run commands in python virtual environment*
```
# Configure
cmake --preset spark
# Build Debug
cmake --build --preset spark-debug
dotnet build spark_client.sln --configuration Debug
# Build Release
cmake --build --preset spark-release
dotnet build spark_client.sln --configuration Release
```
# Build Sparkd on Linux
### **Dependencies**
* **[CMake][cmake]** (version >= 3.23)
* **[Ninja Build][ninja build]**
* **[Python][python]** (version >= 3.9)
### **References**
* **[CMakePresets][cmake presets]**
* **[Ninja (CMake generator)][ninja generator]**
* **[Python Virtual Environment][py venv]**
* **[Devcontainer](devcontainer)**
### Prerequisites
* Open repository in a VS Code [Devcontainer](../docker/sparkd/dev/README.md), or
create your own [docker container](../docker/sparkd/dev/README.md) in which to build
### Notes
* *Run commands from the repo root dir unless otherwise noted*<br>
1. Set up the **[Python virtual environment][py venv]**
```
# Create the virtual environment
python3 -m venv .venv
# Activate the virtual environment
. .venv/bin/activate
# Update pip
python -m pip install --upgrade pip
# Install packages
pip install -r requirements.txt
```
2. Build
* *Run commands in python virtual environment*
```
# Configure clang debug
cmake --preset sparkd-clang-debug
# Build clang debug
cmake --build --preset spark-clang-debug
# Configure gcc release
cmake --build --preset sparkd-gcc-release
# Build gcc release
cmake --build --preset sparkd-gcc-release
```
# Build Spark Api Server on Windows
### **Dependencies**
* **[CMake][cmake]** (version >= 3.23)
* **[Python][python]** (version >= 3.9)
* **[Visual Studio][visual studio]** (version)
* **[Dotnet][dotnet]** (sdk version >= 7.0.0)
### **References**
* **[CMakePresets][cmake presets]**
* **[Visual Studio 17 2022 (CMake generator)][visual studio generator]**
* **[Python Virtual Environment][py venv]**
### Notes
* *Run commands from the repo root dir unless otherwise noted*
1. Set up the **[Python Virtual Environment][py venv]**
```
# Create the virtual environment
python3 -m venv .venv
# Activate the virtual environment
.venv\bin\activate.bat
# Update pip
python -m pip install --upgrade pip
# Install packages
pip install -r requirements.txt
```
2. Build
* *Run in python virtual environment*
```
# Configure
cmake --preset spark-api-server-windows
# Build debug
cmake --build --preset spark-api-server-windows-debug
dotnet build Spark.Api.Server.sln --configuration Debug
# Build release
cmake --build --preset spark-api-server-windows-release
dotnet build Spark.Api.Server.sln --configuration Release
```
# Build Spark Api Server on Linux
### **Dependencies**
* **[CMake][cmake]** (version >= 3.23)
* **[Ninja Build][ninja build]**
* **[Python][python]** (version >= 3.9)
* **[Dotnet][dotnet]** (sdk version >= 7.0.0)
### **References**
* **[CMakePresets][cmake presets]**
* **[Ninja Multi-Config (CMake generator)][ninja multi-config generator]**
* **[Python Virtual Environment][py venv]**
### Prerequisites
* Open repository in a VS Code [Devcontainer](../docker/sparkd/dev/README.md), or
create your own [docker container](../docker/sparkd/dev/README.md) in which to build
### Notes
* *Run commands from the repo root dir unless otherwise noted*
1. Set up the **[Python Virtual Environment][py venv]**
```
# Create the virtual environment
python3 -m venv .venv
# Activate the virtual environment
. .venv/bin/activate
# Update pip
python -m pip install --upgrade pip
# Install packages
pip install -r requirements.txt
```
2. Build
* *Run in python virtual environment*
```
# Configure
cmake --preset spark-api-server-linux
# Build debug
cmake --build --preset spark-api-server-linux-debug
dotnet build Spark.Api.Server.sln --configuration Debug
# Build release
cmake --build --preset spark-api-server-linux-release
dotnet build Spark.Api.Server.sln --configuration Release
```
+27
View File
@@ -0,0 +1,27 @@
{
"version": 4,
"configurations": [
{
"name": "Windows",
"intelliSenseMode": "windows-msvc-x64",
"includePath": [
"${workspaceFolder}/src/",
"${workspaceFolder}/build/src/",
"${workspaceFolder}/externals/windows/include/"
],
"defines": ["_WIN32", "__x86_64__"],
"browse": {
"path": [
"${workspaceRoot}/src",
"${workspaceRoot}/build/src"
],
"limitSymbolsToIncludedHeaders": true
},
"cStandard": "c17",
"cppStandard": "c++17",
"configurationProvider": "ms-vscode.cmake-tools",
"compilerPath": "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.34.31933/bin/Hostx64/x64/cl.exe",
"mergeConfigurations": true
}
]
}
+54
View File
@@ -0,0 +1,54 @@
{
"FormattingOptions": {
"NewLine": "\n",
"UseTabs": false,
"TabSize": 3,
"IndentationSize": 3,
"SpacingAfterMethodDeclarationName": false,
"SpaceWithinMethodDeclarationParenthesis": false,
"SpaceBetweenEmptyMethodDeclarationParentheses": false,
"SpaceAfterMethodCallName": false,
"SpaceWithinMethodCallParentheses": false,
"SpaceBetweenEmptyMethodCallParentheses": false,
"SpaceAfterControlFlowStatementKeyword": true,
"SpaceWithinExpressionParentheses": false,
"SpaceWithinCastParentheses": false,
"SpaceWithinOtherParentheses": false,
"SpaceAfterCast": false,
"SpacesIgnoreAroundVariableDeclaration": false,
"SpaceBeforeOpenSquareBracket": false,
"SpaceBetweenEmptySquareBrackets": false,
"SpaceWithinSquareBrackets": false,
"SpaceAfterColonInBaseTypeDeclaration": true,
"SpaceAfterComma": true,
"SpaceAfterDot": false,
"SpaceAfterSemicolonsInForStatement": true,
"SpaceBeforeColonInBaseTypeDeclaration": true,
"SpaceBeforeComma": false,
"SpaceBeforeDot": false,
"SpaceBeforeSemicolonsInForStatement": false,
"SpacingAroundBinaryOperator": "single",
"IndentBraces": false,
"IndentBlock": true,
"IndentSwitchSection": true,
"IndentSwitchCaseSection": true,
"LabelPositioning": "oneLess",
"WrappingPreserveSingleLine": true,
"WrappingKeepStatementsOnSingleLine": true,
"NewLinesForBracesInTypes": false,
"NewLinesForBracesInMethods": false,
"NewLinesForBracesInProperties": false,
"NewLinesForBracesInAccessors": false,
"NewLinesForBracesInAnonymousMethods": false,
"NewLinesForBracesInControlBlocks": false,
"NewLinesForBracesInAnonymousTypes": false,
"NewLinesForBracesInObjectCollectionArrayInitializers": false,
"NewLinesForBracesInLambdaExpressionBody": false,
"NewLineForElse": false,
"NewLineForCatch": false,
"NewLineForFinally": false,
"NewLineForMembersInObjectInit": true,
"NewLineForMembersInAnonymousTypes": true,
"NewLineForClausesInQuery": true
}
}
+120
View File
@@ -0,0 +1,120 @@
FROM spark-crypto_18.04
RUN \
DEBIAN_FRONTEND=noninteractive apt-get update \
&& apt-get install -y \
htop \
locales \
source-highlight \
powerline \
fonts-powerline
# Hide these in the .docker directory to avoid conflicts with existing repos on
# this computer (in case a parent dir, such as $HOME, is mounted inside a
# container)
ARG repo_root="/home/john/Documents/repos/.docker"
# Create dirs for public/private repos
USER john
RUN \
mkdir -p $repo_root/public \
&& mkdir -p $repo_root/private
## Get latest fish (build from source)
# 1) get build deps
USER root
RUN \
DEBIAN_FRONTEND=noninteractive apt-get update \
&& apt-get install -y software-properties-common
RUN \
apt-add-repository ppa:fish-shell/release-3 \
&& sed -i "s/^# deb/deb/g" /etc/apt/sources.list
RUN DEBIAN_FRONTEND=noninteractive apt-get update && apt-get build-dep -y fish
# 2) Clone repo
USER john
RUN \
cd $repo_root/public \
&& git clone https://github.com/fish-shell/fish-shell.git
RUN \
cd $repo_root/public/fish-shell \
&& mkdir build \
&& cd build \
&& cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_DOCS=0 .. \
&& cmake --build .
# Switch to root, rather than running inline w/ sudo cmd, to avoid having to
# enter a password
USER root
RUN \
cd $repo_root/public/fish-shell/build \
&& make install
USER john
## Get oh-my-fish
RUN \
cd $repo_root/public \
&& git clone https://github.com/oh-my-fish/oh-my-fish.git
RUN \
cd $repo_root/public/oh-my-fish \
&& ./bin/install --noninteractive --yes
## Get my fish config
RUN \
cd $repo_root/private \
&& git clone https://github.com/johncolvin-og/myfishconfig
RUN \
cd $repo_root/private/myfishconfig \
&& cp src/config.fish /home/john/.config/fish/ \
&& cp src/aliases.fish /home/john/.config/fish/ \
&& cp -r src/functions /home/john/.config/fish/ \
&& cp -r src/themes/johncolvin /home/john/.local/share/omf/themes/ \
&& fish --command "omf theme johncolvin"
## Get my bash config (back up existing)
RUN \
cd $repo_root/private \
&& git clone https://github.com/johncolvin-og/mybashconfig \
&& cd mybashconfig \
&& cp src/* /home/john/
# Get vim files/tools
USER root
RUN \
DEBIAN_FRONTEND=noninteractive apt-get update \
&& apt-get install -y curl
USER john
RUN curl -fLo home/john/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
# Some fonts look sketchy if the language isn't set to english:
# * The powerline git glyphs in the fish prompt are all displayed as question
# marks.
#
# * The shell confuses the position of the cursor, so characters are left
# around when they should have been cleared, and the cursor's home position
# is pushed one or two places to the right.
#
# * Most likely, the bad cursor position is caused by some dependencies the
# interpretation of escape sequences have on the language setting. At this
# point I don't even care anymore (literally took 8 hours to figure this
# out). I just know this shit is needed to make the prompt work correctly.
USER root
RUN locale-gen "en_US.UTF-8"
USER john
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
RUN fc-cache -vf
+16
View File
@@ -0,0 +1,16 @@
#!/usr/bin/env fish
set this_dir (realpath (dirname (status -f)))
set image_working_dir (realpath "$this_dir/../..")
set image_name $argv[1]
if test (count $argv) -eq 0
set image_name_cmd "$this_dir/docker_image_name.fish"
set image_name (eval $image_name_cmd)
end
docker build \
-f "$this_dir/Dockerfile" \
-t "$image_name" \
"$image_working_dir"
+11
View File
@@ -0,0 +1,11 @@
#!/usr/bin/env fish
if test (count $argv) -gt 0
echo $argv
exit 0
end
set image_name_cmd (realpath (dirname (status -f)))"/docker_image_name.fish"
set image_name (eval $image_name_cmd)
echo $image_name
+4
View File
@@ -0,0 +1,4 @@
#!/usr/bin/env fish
echo "$USER""s_"(basename (git rev-parse --show-toplevel))"-dev"
+12
View File
@@ -0,0 +1,12 @@
#!/usr/bin/env fish
set inst_name $argv[1]
if test (count $argv) -eq 0
set script_dir (realpath (dirname (status -f)))
set inst_name (eval $script_dir"/docker_container_name.fish")
end
set working_dir (realpath (pwd))
echo $inst_name
docker exec -w $working_dir -it "$inst_name" bash
+148
View File
@@ -0,0 +1,148 @@
#!/usr/bin/env fish
function print_help_and_exit
echo "\
Usage: setup_builds.sh [OPTIONS] compiler build-type
Positionals:
gcc Compile with gcc
clang Compile with clang
debug Build debug
release Build release
Options:
--compiler <clang|gcc> Specify the compiler
--type <debug|release> Specify the type of build
-f,--force Overwrite existing build directories
-h,--help Print this help message and exit
"
exit $argv[1]
end
function assert_dir
if test ! -d "$argv[1]"
if test -n "$argv[2]"
echo "Invalid variable "$argv[2]": '"$argv[1]"' is not a directory"
else
echo "'"$argv[1]"' is not a directory"
end
exit 1
end
end
# common variables
set tools_path (realpath (dirname (status -f)))
set spartan_path_cmd $tools_path/spartan_path.fish
set repo_root (eval $spartan_path_cmd "repo-root")
set build_root "$repo_root"/"build"
mkdir -p "$build_root"
# Initialize the build directory. Expected arguments: <compiler>, <build_type>
# Note: this method assumes the variables 'repot_root' and 'build_root' have
# already been properly initialized
function setup_build
assert_dir $repo_root
assert_dir $build_root
set compiler "$argv[1]"
set c_compiler (which cc)
set build_type "$argv[2]"
if test \( -z "$build_type" \) -o \( \( "$build_type" != debug \) -a \( "$build_type" != release \) \)
print_help_and_exit 1
end
if test "$build_type" = debug
set build_type_arg Debug
if test "$compiler" = gcc
set compiler_arg "/usr/lib/ccache/g++"
else
# set compiler_arg "/usr/lib/ccache/clang++"
set compiler_arg "clang++"
set c_compiler (which clang)
end
else if test "$build_type" = release
set build_type_arg Release
if test "$compiler" = gcc
set compiler_arg "g++"
else
set compiler_arg "clang++"
end
end
if test \( -z "$compiler" \) -o \( \( "$compiler" != gcc \) -a \( "$compiler" != clang \) \)
print_help_and_exit 1
end
set build_dest $build_root"/"$compiler"/"$build_type
echo "Set up build: "$compiler" "$build_type
if test \( -z "$force" \) -a \( -d $build_dest \)
echo "The build directory '"$build_dest"' already exists (use -f to overwrite)"
return 1
end
rm -rf "$build_dest"
mkdir -p "$build_dest"
cd "$build_dest"
cmake -G Ninja -DCMAKE_BUILD_TYPE=$build_type_arg -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -DCMAKE_C_COMPILER=$c_compiler -DCMAKE_CXX_COMPILER=$compiler_arg $repo_root
end
# The while loop below removes arguments (via shift) as it parses them.
# Additional information that needs to be extracted from the arguments must be
# done so before the loop is executed.
set i 1
while test $i -le (count $argv)
switch $argv[$i]
case --compiler
set i (math "$i + 1")
set compiler $argv[$i]
case clang
set compiler clang
case gcc
set compiler gcc
case --type
set i (math "$i + 1")
set build_type $argv[$i]
case release
set build_type release
case debug
set build_type debug
case -f
set force 1
case --force
set force 1
case -h
print_help_and_exit 0
case --help
print_help_and_exit 0
case '*'
print_help_and_exit 1
end
set i (math "$i + 1")
end
echo "compiler in "$compiler
echo "build type in "$build_type
if test -n "$compiler"
if test -n "$build_type"
setup_build $compiler $build_type
else
# all builds for the specified compiler
setup_build $compiler debug
setup_build $compiler release
end
else if test -n "$build_type"
# all builds for the specified build type
setup_build gcc $build_type
setup_build clang $build_type
else
# all builds
setup_build gcc debug
setup_build gcc release
setup_build clang debug
setup_build clang release
end
+153
View File
@@ -0,0 +1,153 @@
#!/usr/bin/env fish
function print_help_and_exit
echo "\
Usage: setup_builds.sh [OPTIONS] compiler build-type
Positionals:
gcc Compile with gcc
clang Compile with clang
debug Build debug
release Build release
Options:
--compiler <clang|gcc> Specify the compiler
--type <debug|release> Specify the type of build
-f,--force Overwrite existing build directories
-h,--help Print this help message and exit
"
exit $argv[1]
end
function assert_dir
if test ! -d "$argv[1]"
if test -n "$argv[2]"
echo "Invalid variable "$argv[2]": '"$argv[1]"' is not a directory"
else
echo "'"$argv[1]"' is not a directory"
end
exit 1
end
end
# common variables
#set tools_path (readlink -f (pwd))
#set tools_path (cd (dirname (status --current-filename)); and pwd)
set tools_path (realpath (dirname (status -f)))
set spartan_path_cmd $tools_path/spartan_path.fish
set repo_root (eval $spartan_path_cmd "repo-root")
# Don't call 'spartan_path_cmd "build"' bc it returns specific build path
# (i.e., for a particular compiler/build type), not the root build path
# set build_root (eval $spartan_path_cmd "build")
set build_root "$repo_root"/"build"
mkdir -p "$build_root"
# Initialize the build directory. Expected arguments: <compiler>, <build_type>
# Note: this method assumes the variables 'repot_root' and 'build_root' have
# already been properly initialized
function setup_build
assert_dir $repo_root
assert_dir $build_root
set compiler "$argv[1]"
set build_type "$argv[2]"
if test \( -z "$build_type" \) -o \( \( "$build_type" != "debug" \) -a \( "$build_type" != "release" \) \)
print_help_and_exit 1
end
if test "$build_type" = "debug"
set build_type_arg "Debug"
if test "$compiler" = "gcc"
set compiler_arg "/usr/lib/ccache/g++"
else
set compiler_arg "/usr/lib/ccache/clang++"
end
else if test "$build_type" = "release"
set build_type_arg "Release"
if test "$compiler" = "gcc"
set compiler_arg "g++"
else
set compiler_arg "clang++"
end
end
if test \( -z "$compiler" \) -o \( \( "$compiler" != "gcc" \) -a \( "$compiler" != "clang" \) \)
print_help_and_exit 1
end
set build_dest $build_root"/"$compiler"/"$build_type
set conan_dest $repo_root"/conan/"$compiler"_"$build_type
echo "Set up build: "$compiler" "$build_type
if test \( -z "$force" \) -a \( -d $build_dest \)
echo "The build directory '"$build_dest"' already exists (use -f to overwrite)"
return 1
end
rm -rf "$build_dest"
mkdir -p "$build_dest"
mkdir -p "$conan_dest"
cd "$build_dest"
conan install --build missing --profile $conan_dest $repo_root
cmake -G Ninja -DCMAKE_BUILD_TYPE=$build_type_arg -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -DCMAKE_CXX_COMPILER=$compiler_arg $repo_root
end
# The while loop below removes arguments (via shift) as it parses them.
# Additional information that needs to be extracted from the arguments must be
# done so before the loop is executed.
set i 1
while test $i -le (count $argv)
switch $argv[$i]
case '--compiler'
set i (math "$i + 1")
set compiler $argv[$i]
case 'clang'
set compiler 'clang'
case 'gcc'
set compiler 'gcc'
case '--type'
set i (math "$i + 1")
set build_type $argv[$i]
case 'release'
set build_type 'release'
case 'debug'
set build_type 'debug'
case '-f'
set force 1
case '--force'
set force 1
case '-h'
print_help_and_exit 0
case '--help'
print_help_and_exit 0
case '*'
print_help_and_exit 1
end
set i (math "$i + 1")
end
echo "compiler in "$compiler
echo "build type in "$build_type
if test -n "$compiler"
if test -n "$build_type"
setup_build $compiler $build_type
else
# all builds for the specified compiler
setup_build $compiler "debug"
setup_build $compiler "release"
end
else if test -n "$build_type"
# all builds for the specified build type
setup_build "gcc" $build_type
setup_build "clang" $build_type
else
# all builds
setup_build "gcc" "debug"
setup_build "gcc" "release"
setup_build "clang" "debug"
setup_build "clang" "release"
end
+92
View File
@@ -0,0 +1,92 @@
#!/usr/bin/env fish
#basename (git rev-parse --show-toplevel)
function print_help_and_exit
echo "\
Print paths to core parts of the repository
Usage: sparkd_path.sh SUBCOMMAND
Subcommands:
build Print build path
repo-root Print repo root path
"
exit $argv[1]
end
function print_build_help_and_exit
echo "\
Print build path
Usage: sparkd_path.sh build [OPTIONS] compiler build-type
Positionals:
gcc Print gcc build path
clang Print clang build path
debug Print debug build path
release Print release build path
Options:
--compiler <clang|gcc> Specify the compiler
--type <debug|release> Specify the type of build
-h,--help Print this help message and exit
"
exit $argv[1]
end
function print_repo_root
git rev-parse --show-toplevel
end
function run_repo_root
print_repo_root
end
function run_build
set compiler "gcc"
set build_type "release"
set i 1
while test $i -lt (count $argv)
switch $argv[$i]
case '--compiler'
set i (math "$i + 1")
set compiler $argv[$i]
case 'clang'
set compiler 'clang'
case 'gcc'
set compiler 'gcc'
case '--type'
set i (math "$i + 1")
set build_type $argv[$i]
case 'release'
set build_type 'release'
case 'debug'
set build_type 'debug'
'-h'
print_build_help_and_exit 0
'--help'
print_build_help_and_exit 0
'*'
print_build_help_and_exit 1
end
set i (math "$i + 1")
end
if test \( $compiler = "clang" \) -o \( $compiler = "gcc" \)
set comp_path $compiler
else
print_build_help_and_exit 1
end
set src_root (print_repo_root)
set build_root (readlink -f "$src_root""/build")
set build_dest $build_root"/"$compiler"/"$build_type
echo $build_dest
end
if test "$argv[1]" = "repo-root"
print_repo_root $argv[2..-1]
else if test "$argv[1]" = "build"
run_build $argv[2..-1]
else
print_help_and_exit 1
end
+43
View File
@@ -0,0 +1,43 @@
#!/usr/bin/env fish
set image_name $argv[1]
set cont_name $argv[2]
if test (count $argv) -lt 2
if test (count $argv) -lt 1
set image_name_cmd (realpath (dirname (status -f)))"/docker_image_name.fish"
set image_name (eval $image_name_cmd)
end
set cont_name_cmd (realpath (dirname (status -f)))"/docker_container_name.fish "$image_name
set cont_name (eval $cont_name_cmd)
end
set working_dir (realpath (pwd))
set home_path /home/john
set repo_path (git rev-parse --show-toplevel)
set repo_path_out /home/john/Documents/repos/bts/(basename $repo_path)
set working_dir $repo_path_out
echo "starting docker instance '"$cont_name"' (image '"$image_name"')"
echo "working dir "$working_dir
docker run \
--rm \
--net host \
-h (hostname) \
-e "TZ=America/New_York" \
--cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \
--name $cont_name \
-v $repo_path:$repo_path_out \
-u (id -u $USER) \
-w $working_dir \
--shm-size=4024m \
-t \
-i \
-d \
-e DISPLAY="$DISPLAY" \
"$image_name" \
bash
@@ -5,7 +5,9 @@
"includePath": [
"/usr/include",
"/usr/local/include",
"${workspaceRoot}"
"${workspaceRoot}",
"${workspaceFolder}/src",
"${workspaceRoot}/externals/linux/include"
],
"defines": [],
"intelliSenseMode": "clang-x64",
@@ -13,13 +15,16 @@
"path": [
"/usr/include",
"/usr/local/include",
"${workspaceRoot}"
"${workspaceRoot}",
"${workspaceFolder}/src",
"${workspaceRoot}/externals/linux/include"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
},
"cStandard": "c11",
"cppStandard": "c++17"
"cppStandard": "c++17",
"compileCommands": "${workspaceFolder}/build/ninja_debug/compile_commands.json"
},
{
"name": "Windows",
+513
View File
@@ -0,0 +1,513 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Spark Local",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceRoot}/build/gcc/debug/server/sparkd",
"args": [
"run",
"test",
"-a",
"OutrightVanillaOrder"
],
"stopAtEntry": false,
"cwd": "${workspaceRoot}/build/gcc/debug/server/",
"environment": [
{
"name": "TZ",
"value": "America/Chicago"
}
],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "SparkVM Launch",
"type": "cppdbg",
"request": "launch",
"program": "/home/bts/spark/build/gcc/debug/server/sparkd",
"args": [
"test",
"-a",
"[ilink3]"
],
"stopAtEntry": false,
"cwd": "/home/bts/spark/build/gcc/debug/server/",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"preLaunchTask": "",
"logging": {
"engineLogging": false
},
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "enable pretty-printer",
"ignoreFailures": true
},
{
"description": "Skip STL",
"text": "skip -gfi /usr/include/c++/7/bits/*.h",
"ignoreFailures": true
},
{
"description": "LD LIBRARY",
"text": "set env LD_LIBRARY_PATH=.",
"ignoreFailures": false
}
],
"pipeTransport": {
"pipeCwd": "${workspaceRoot}",
"pipeProgram": "c:\\program files\\git\\usr\\bin\\ssh.exe",
"pipeArgs": [
"bts@sparkvm"
],
"debuggerPath": "/usr/bin/gdb"
},
"sourceFileMap": {
"/home/bts/spark/": "${workspaceRoot}"
}
},
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceRoot}/build/gcc/debug/server/sparkd/sparkd",
"args": [
"run"
],
"stopAtEntry": false,
"cwd": "${workspaceRoot}/build/gcc/debug/src/server/sparkd",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "Client Launch",
"type": "clr",
"request": "launch",
"program": "${workspaceRoot}/build/Debug/bin/net471/spark.exe",
"args": [],
"cwd": "${workspaceRoot}",
"stopAtEntry": false,
"externalConsole": true,
"requireExactSource": false
},
{
"name": "SDK Launch",
"type": "clr",
"request": "launch",
"program": "${workspaceRoot}/build/Debug/bin/net471/spark_sdk.exe",
"args": [
"md",
"GLBX",
"Future",
"CL",
"CLZ9",
"--user=bts",
"--pass="
],
"cwd": "${workspaceRoot}",
"stopAtEntry": false,
"externalConsole": true,
"requireExactSource": false
},
{
"name": "Excel Launch",
"type": "clr",
"request": "launch",
"program": "C:/Program Files/Microsoft Office/Office14/EXCEL.EXE",
"args": [
"${workspaceRoot}/build/Debug/bin/net471/spark_excel-addin64-packed.xll"
],
"cwd": "${workspaceRoot}",
"stopAtEntry": false,
"externalConsole": true,
"requireExactSource": false
},
{
"name": "Client Tests",
"type": "clr",
"request": "launch",
"program": "${workspaceRoot}/build/Debug/bin/net471/sparkcmd.exe",
"args": [
"test",
"ApiUpdateTests"
],
"cwd": "${workspaceRoot}",
"stopAtEntry": false,
"externalConsole": true,
"requireExactSource": false
},
{
"name": "Client Attach",
"type": "clr",
"request": "attach",
"processId": "${command:pickProcess}"
},
{
"name": "Spreader Tests",
"type": "cppdbg",
"request": "launch",
"program": "/home/bts/spark/build/gcc/debug/server/sparkd",
"args": [
"test",
"[spreader]"
],
"stopAtEntry": false,
"cwd": "/home/bts/spark/build/gcc/debug/server/",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"preLaunchTask": "",
"logging": {
"engineLogging": false
},
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "enable pretty-printer",
"ignoreFailures": true
}
],
"pipeTransport": {
"pipeCwd": "${workspaceRoot}",
"pipeProgram": "c:\\program files\\git\\usr\\bin\\ssh.exe",
"pipeArgs": [
"bts@sparkvm"
],
"debuggerPath": "/usr/bin/gdb"
},
"sourceFileMap": {
"/home/bts/spark/": "${workspaceRoot}"
}
},
{
"name": "MD Synthetic Tests",
"type": "cppdbg",
"request": "launch",
"program": "/home/bts/spark/build/gcc/debug/server/sparkd",
"args": [
"test",
"[md][synthetic]"
],
"stopAtEntry": false,
"cwd": "/home/bts/spark/build/gcc/debug/server/",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"preLaunchTask": "",
"logging": {
"engineLogging": false
},
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "enable pretty-printer",
"ignoreFailures": true
}
],
"pipeTransport": {
"pipeCwd": "${workspaceRoot}",
"pipeProgram": "c:\\program files\\git\\usr\\bin\\ssh.exe",
"pipeArgs": [
"bts@sparkvm"
],
"debuggerPath": "/usr/bin/gdb"
},
"sourceFileMap": {
"/home/bts/spark/": "${workspaceRoot}"
}
},
{
"name": "Spartan Tests",
"type": "cppdbg",
"request": "launch",
"program": "/home/bts/spark/build/gcc/debug/server/sparkd",
"args": [
"test",
"[spartan_md]"
],
"stopAtEntry": false,
"cwd": "/home/bts/spark/build/gcc/debug/server/",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"preLaunchTask": "",
"logging": {
"engineLogging": false
},
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "enable pretty-printer",
"ignoreFailures": true
}
],
"pipeTransport": {
"pipeCwd": "${workspaceRoot}",
"pipeProgram": "c:\\program files\\git\\usr\\bin\\ssh.exe",
"pipeArgs": [
"bts@sparkvm"
],
"debuggerPath": "/usr/bin/gdb"
},
"sourceFileMap": {
"/home/bts/spark/": "${workspaceRoot}"
}
},
{
"name": "Matcher Tests",
"type": "cppdbg",
"request": "launch",
"program": "/home/bts/spark/build/gcc/debug/server/sparkd",
"args": [
"test",
"[matcher]"
],
"stopAtEntry": false,
"cwd": "/home/bts/spark/build/gcc/debug/server/",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"preLaunchTask": "",
"logging": {
"engineLogging": false
},
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "enable pretty-printer",
"ignoreFailures": true
}
],
"pipeTransport": {
"pipeCwd": "${workspaceRoot}",
"pipeProgram": "c:\\program files\\git\\usr\\bin\\ssh.exe",
"pipeArgs": [
"bts@sparkvm"
],
"debuggerPath": "/usr/bin/gdb"
},
"sourceFileMap": {
"/home/bts/spark/": "${workspaceRoot}"
}
},
{
"name": "Admin Service Tests",
"type": "cppdbg",
"request": "launch",
"program": "/home/bts/spark/build/gcc/debug/src/server/sparkd/sparkd",
"args": [
"test",
"[admin_service]"
],
"stopAtEntry": false,
"cwd": "/home/bts/spark/build/gcc/debug/src/server/sparkd/",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"preLaunchTask": "",
"logging": {
"engineLogging": false
},
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "enable pretty-printer",
"ignoreFailures": true
}
],
"pipeTransport": {
"pipeCwd": "${workspaceRoot}",
"pipeProgram": "c:\\program files\\git\\usr\\bin\\ssh.exe",
"pipeArgs": [
"bts@sparkvm"
],
"debuggerPath": "/usr/bin/gdb"
},
"sourceFileMap": {
"/home/bts/spark/": "${workspaceRoot}"
}
},
{
"name": "Limiter Tests",
"type": "cppdbg",
"request": "launch",
"program": "/home/bts/spark/build/gcc/debug/src/server/sparkd/sparkd",
"args": [
"test",
"[limiter]"
],
"stopAtEntry": false,
"cwd": "/home/bts/spark/build/gcc/debug/src/server/sparkd/",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"preLaunchTask": "",
"logging": {
"engineLogging": false
},
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "enable pretty-printer",
"ignoreFailures": true
}
],
"pipeTransport": {
"pipeCwd": "${workspaceRoot}",
"pipeProgram": "c:\\program files\\git\\usr\\bin\\ssh.exe",
"pipeArgs": [
"bts@sparkvm"
],
"debuggerPath": "/usr/bin/gdb"
},
"sourceFileMap": {
"/home/bts/spark/": "${workspaceRoot}"
}
},
{
"name": "MD Tests",
"type": "cppdbg",
"request": "launch",
"program": "/home/bts/spark/build/gcc/debug/server/sparkd",
"args": [
"test",
"[algo]"
],
"stopAtEntry": false,
"cwd": "/home/bts/spark/build/gcc/debug/server/",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"preLaunchTask": "",
"logging": {
"engineLogging": false
},
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Skip STL",
"text": "skip -gfi /usr/include/c++/7/bits/*.h",
"ignoreFailures": true
}
],
"pipeTransport": {
"pipeCwd": "${workspaceRoot}",
"pipeProgram": "c:\\program files\\git\\usr\\bin\\ssh.exe",
"pipeArgs": [
"bts@sparkvm"
],
"debuggerPath": "/usr/bin/gdb"
},
"sourceFileMap": {
"/home/bts/spark/": "${workspaceRoot}"
}
},
{
"name": "SparkVM attach",
"type": "cppdbg",
"request": "attach",
"program": "/home/bts/spark/build/gcc/debug/src/server/sparkd/sparkd",
"processId": "${command:pickRemoteProcess}",
"MIMode": "gdb",
"pipeTransport": {
"pipeCwd": "${workspaceRoot}",
"pipeProgram": "c:\\program files\\git\\usr\\bin\\ssh.exe",
"pipeArgs": [
"bts@sparkvm"
],
"debuggerPath": "/usr/bin/gdb"
},
"sourceFileMap": {
"/home/bts/spark/": "${workspaceRoot}"
}
},
{
"name": "Python",
"type": "python",
"request": "launch",
"stopOnEntry": false,
"python": "${command:python.interpreterPath}",
"program": "${file}",
"cwd": "${workspaceRoot}",
"env": {},
"envFile": "${workspaceRoot}/.env",
"args": [
"DEBUG"
],
"debugOptions": [
"WaitOnAbnormalExit",
"WaitOnNormalExit",
"RedirectOutput"
]
},
{
"name": ".NET Core Remote Attach",
"type": "coreclr",
"request": "attach",
"processId": "${command:pickRemoteProcess}",
"pipeTransport": {
"pipeProgram": "c:\\program files\\git\\usr\\bin\\ssh.exe",
"pipeArgs": [
"bts@sparkvm"
],
"debuggerPath": "/home/bts/vsdbg/vsdbg",
"pipeCwd": "${workspaceRoot}",
"quoteArgs": true
},
"sourceFileMap": {
"/home/bts/spark/": "${workspaceRoot}"
},
"justMyCode": true
},
{
"name": ".NET Core Remote Launch",
"type": "coreclr",
"request": "launch",
"program": "/usr/bin/dotnet",
"args": [
"sparkcmd.dll",
"test",
"test_join_create_and_takeout_market"
],
"stopAtEntry": false,
"cwd": "/home/bts/spark/build/gcc/debug/server",
"pipeTransport": {
"pipeProgram": "c:\\program files\\git\\usr\\bin\\ssh.exe",
"pipeArgs": [
"bts@sparkvm"
],
"debuggerPath": "/home/bts/vsdbg/vsdbg",
"pipeCwd": "${workspaceRoot}",
"quoteArgs": true
},
"sourceFileMap": {
"/home/bts/spark/": "${workspaceRoot}"
},
"justMyCode": false
},
]
}
@@ -0,0 +1,941 @@
{
"$schema": "vscode://schemas/color-theme",
"type": "dark",
"colors": {
"activityBar.background": "#111111",
"activityBar.border": "#111111",
"activityBar.foreground": "#888888",
"activityBarBadge.background": "#88cc44",
"activityBarBadge.foreground": "#222222",
"badge.background": "#88cc44",
"badge.foreground": "#222222",
"button.background": "#333333",
"button.foreground": "#888888",
"button.hoverBackground": "#222222",
"debugExceptionWidget.background": "#333333",
"debugExceptionWidget.border": "#222222",
"debugToolBar.background": "#111111",
"diffEditor.insertedTextBackground": "#ffdd440c",
"diffEditor.insertedTextBorder": "#ffdd44",
"diffEditor.removedTextBackground": "#88bbff0c",
"diffEditor.removedTextBorder": "#88bbff",
"dropdown.background": "#222222",
"dropdown.border": "#222222",
"dropdown.foreground": "#888888",
"editor.background": "#222222",
"editor.findMatchBackground": "#44446655",
"editor.findMatchHighlightBackground": "#444466aa",
"editor.foreground": "#ffffff",
"editor.hoverHighlightBackground": "#44446655",
"editor.inactiveSelectionBackground": "#44446655",
"editor.lineHighlightBackground": "#00000066",
"editor.lineHighlightBorder": "#00000000",
"editor.rangeHighlightBackground": "#333333",
"editor.selectionBackground": "#444466",
"editor.selectionHighlightBackground": "#44446655",
"editor.wordHighlightBackground": "#44446655",
"editor.wordHighlightStrongBackground": "#44446655",
"editorBracketMatch.background": "#222222",
"editorBracketMatch.border": "#666666",
"editorCodeLens.foreground": "#666666",
"editorCursor.foreground": "#ffffff",
"editorError.foreground": "#ee5500",
"editorGroup.border": "#111111",
"editorGroup.dropBackground": "#111111bb",
"editorGroupHeader.noTabsBackground": "#111111",
"editorGroupHeader.tabsBackground": "#111111",
"editorGroupHeader.tabsBorder": "#222222",
"editorGutter.addedBackground": "#ffdd44",
"editorGutter.background": "#222222",
"editorGutter.deletedBackground": "#88bbff",
"editorGutter.modifiedBackground": "#88bbff",
"editorHoverWidget.background": "#333333",
"editorHoverWidget.border": "#222222",
"editorIndentGuide.background": "#333333",
"editorLineNumber.foreground": "#555555",
"editorLink.activeForeground": "#bba0ff",
"editorMarkerNavigation.background": "#333333",
"editorMarkerNavigationError.background": "#88bbff",
"editorMarkerNavigationWarning.background": "#88bbff",
"editorOverviewRuler.addedForeground": "#ffdd44",
"editorOverviewRuler.border": "#222222",
"editorOverviewRuler.currentContentForeground": "#333333",
"editorOverviewRuler.deletedForeground": "#88bbff",
"editorOverviewRuler.errorForeground": "#88bbff",
"editorOverviewRuler.findMatchForeground": "#555555",
"editorOverviewRuler.incomingContentForeground": "#333333",
"editorOverviewRuler.infoForeground": "#bba0ff",
"editorOverviewRuler.modifiedForeground": "#88bbff",
"editorOverviewRuler.rangeHighlightForeground": "#333333",
"editorOverviewRuler.selectionHighlightForeground": "#555555",
"editorOverviewRuler.warningForeground": "#88bbff",
"editorOverviewRuler.wordHighlightForeground": "#333333",
"editorOverviewRuler.wordHighlightStrongForeground": "#555555",
"editorRuler.foreground": "#ffffff",
"editorSuggestWidget.background": "#333333",
"editorSuggestWidget.border": "#333333",
"editorSuggestWidget.foreground": "#888888",
"editorSuggestWidget.highlightForeground": "#ffffff",
"editorSuggestWidget.selectedBackground": "#666666",
"editorWarning.border": "#00000000",
"editorWarning.foreground": "#88bbff",
"editorWhitespace.foreground": "#333333",
"editorWidget.background": "#333333",
"editorWidget.border": "#333333",
"errorForeground": "#88bbff",
"extensionButton.prominentBackground": "#333333",
"extensionButton.prominentForeground": "#ffffff",
"extensionButton.prominentHoverBackground": "#555555",
"focusBorder": "#666666",
"foreground": "#ffffff",
"gitDecoration.modifiedResourceForeground": "#cccccc",
"gitDecoration.untrackedResourceForeground": "#cccccc",
"input.background": "#333333",
"input.border": "#333333",
"input.foreground": "#ffffff",
"input.placeholderForeground": "#555555",
"inputOption.activeBorder": "#555555",
"inputValidation.errorBackground": "#333333",
"inputValidation.errorBorder": "#88bbff",
"inputValidation.infoBackground": "#333333",
"inputValidation.infoBorder": "#bba0ff",
"inputValidation.warningBackground": "#333333",
"inputValidation.warningBorder": "#88bbff",
"list.activeSelectionBackground": "#111111",
"list.activeSelectionForeground": "#ffffff",
"list.dropBackground": "#111111bf",
"list.focusBackground": "#222222",
"list.focusForeground": "#ffffff",
"list.highlightForeground": "#ffffff",
"list.hoverBackground": "#333333",
"list.hoverForeground": "#ffffff",
"list.inactiveSelectionBackground": "#000000",
"list.inactiveSelectionForeground": "#ffffff",
"menu.background": "#333333",
"menu.foreground": "#ffffff",
"merge.border": "#222222",
"merge.currentContentBackground": "#333333",
"merge.currentHeaderBackground": "#555555",
"merge.incomingContentBackground": "#555555",
"merge.incomingHeaderBackground": "#666666",
"panel.background": "#111111",
"panel.border": "#111111",
"panelTitle.activeBorder": "#ffffff",
"panelTitle.activeForeground": "#ffffff",
"panelTitle.inactiveForeground": "#888888",
"peekView.border": "#222222",
"peekViewEditor.background": "#333333",
"peekViewEditor.matchHighlightBackground": "#555555",
"peekViewEditorGutter.background": "#333333",
"peekViewResult.background": "#333333",
"peekViewResult.fileForeground": "#888888",
"peekViewResult.lineForeground": "#888888",
"peekViewResult.matchHighlightBackground": "#555555",
"peekViewResult.selectionBackground": "#333333",
"peekViewResult.selectionForeground": "#ffffff",
"peekViewTitle.background": "#333333",
"peekViewTitleDescription.foreground": "#888888",
"peekViewTitleLabel.foreground": "#ffffff",
"pickerGroup.border": "#222222",
"pickerGroup.foreground": "#555555",
"progressBar.background": "#333333",
"scrollbar.shadow": "#191919",
"scrollbarSlider.activeBackground": "#ffffff12",
"scrollbarSlider.background": "#ffffff12",
"scrollbarSlider.hoverBackground": "#ffffff12",
"selection.background": "#2255aa",
"sideBar.background": "#111111",
"sideBar.border": "#111111",
"sideBar.foreground": "#888888",
"sideBarSectionHeader.background": "#111111",
"sideBarSectionHeader.foreground": "#666666",
"sideBarTitle.foreground": "#555555",
"statusBar.background": "#111111",
"statusBar.border": "#111111",
"statusBar.debuggingBackground": "#666666",
"statusBar.debuggingForeground": "#ffffff",
"statusBar.foreground": "#666666",
"statusBar.noFolderBackground": "#111111",
"statusBar.noFolderForeground": "#666666",
"statusBarItem.activeBackground": "#222222",
"statusBarItem.hoverBackground": "#222222",
"statusBarItem.prominentBackground": "#333333",
"statusBarItem.prominentHoverBackground": "#444444",
"tab.activeBackground": "#222222",
"tab.border": "#111111",
"tab.inactiveBackground": "#111111",
"tab.inactiveForeground": "#888888",
"tab.unfocusedActiveBorder": "#888888",
"tab.unfocusedActiveForeground": "#888888",
"tab.unfocusedInactiveForeground": "#888888",
"terminal.ansiBlack": "#333333",
"terminal.ansiBlue": "#88bbff",
"terminal.ansiBrightBlack": "#666666",
"terminal.ansiBrightBlue": "#88bbff",
"terminal.ansiBrightCyan": "#bba0ff",
"terminal.ansiBrightGreen": "#ffdd44",
"terminal.ansiBrightMagenta": "#88bbff",
"terminal.ansiBrightRed": "#88bbff",
"terminal.ansiBrightWhite": "#ffffff",
"terminal.ansiBrightYellow": "#88cc44",
"terminal.ansiCyan": "#bba0ff",
"terminal.ansiGreen": "#ffdd44",
"terminal.ansiMagenta": "#88bbff",
"terminal.ansiRed": "#88bbff",
"terminal.ansiWhite": "#ffffff",
"terminal.ansiYellow": "#88cc44",
"terminal.background": "#151515",
"terminal.foreground": "#ffffff",
"titleBar.activeBackground": "#111111",
"titleBar.activeForeground": "#888888",
"titleBar.inactiveBackground": "#111111",
"titleBar.inactiveForeground": "#555555",
"walkThrough.embeddedEditorBackground": "#111111",
"widget.shadow": "#111111",
//"activityBar.activeBorder": "#888888",
//"activityBar.dropBorder": "#888888",
//"activityBar.inactiveForeground": "#88888866",
//"banner.background": "#111111",
//"banner.foreground": "#ffffff",
//"banner.iconForeground": "#3794ff",
//"bookmarks.lineBackground": "#00000000",
//"bookmarks.lineBorder": "#00000000",
//"bookmarks.overviewRuler": "#157efb88",
//"breadcrumb.activeSelectionForeground": "#ffffff",
//"breadcrumb.background": "#222222",
//"breadcrumb.focusForeground": "#ffffff",
//"breadcrumb.foreground": "#ffffffcc",
//"breadcrumbPicker.background": "#333333",
//"button.secondaryBackground": "#3a3d41",
//"button.secondaryForeground": "#ffffff",
//"button.secondaryHoverBackground": "#45494e",
//"charts.blue": "#3794ff",
//"charts.foreground": "#ffffff",
//"charts.green": "#89d185",
//"charts.lines": "#ffffff80",
//"charts.orange": "#d18616",
//"charts.purple": "#b180d7",
//"charts.red": "#ee5500",
//"charts.yellow": "#88bbff",
//"checkbox.background": "#222222",
//"checkbox.border": "#222222",
//"checkbox.foreground": "#888888",
//"debugConsole.errorForeground": "#88bbff",
//"debugConsole.infoForeground": "#3794ff",
//"debugConsole.sourceForeground": "#ffffff",
//"debugConsole.warningForeground": "#88bbff",
//"debugConsoleInputIcon.foreground": "#ffffff",
//"debugIcon.breakpointCurrentStackframeForeground": "#ffcc00",
//"debugIcon.breakpointDisabledForeground": "#848484",
//"debugIcon.breakpointForeground": "#e51400",
//"debugIcon.breakpointStackframeForeground": "#89d185",
//"debugIcon.breakpointUnverifiedForeground": "#848484",
//"debugIcon.continueForeground": "#75beff",
//"debugIcon.disconnectForeground": "#f48771",
//"debugIcon.pauseForeground": "#75beff",
//"debugIcon.restartForeground": "#89d185",
//"debugIcon.startForeground": "#89d185",
//"debugIcon.stepBackForeground": "#75beff",
//"debugIcon.stepIntoForeground": "#75beff",
//"debugIcon.stepOutForeground": "#75beff",
//"debugIcon.stepOverForeground": "#75beff",
//"debugIcon.stopForeground": "#f48771",
//"debugTokenExpression.boolean": "#4e94ce",
//"debugTokenExpression.error": "#f48771",
//"debugTokenExpression.name": "#c586c0",
//"debugTokenExpression.number": "#b5cea8",
//"debugTokenExpression.string": "#ce9178",
//"debugTokenExpression.value": "#cccccc99",
//"debugView.exceptionLabelBackground": "#6c2022",
//"debugView.exceptionLabelForeground": "#ffffff",
//"debugView.stateLabelBackground": "#88888844",
//"debugView.stateLabelForeground": "#ffffff",
//"debugView.valueChangedHighlight": "#569cd6",
//"descriptionForeground": "#ffffffb3",
//"diffEditor.diagonalFill": "#cccccc33",
//"editor.findRangeHighlightBackground": "#3a3d4166",
//"editor.focusedStackFrameHighlightBackground": "#7abd7a4d",
//"editor.foldBackground": "#4444664d",
//"editor.inlineValuesBackground": "#ffc80033",
//"editor.inlineValuesForeground": "#ffffff80",
//"editor.linkedEditingBackground": "#ff00004d",
//"editor.snippetFinalTabstopHighlightBorder": "#525252",
//"editor.snippetTabstopHighlightBackground": "#7c7c7c4d",
//"editor.stackFrameHighlightBackground": "#ffff0033",
//"editor.symbolHighlightBackground": "#444466aa",
//"editorActiveLineNumber.foreground": "#c6c6c6",
//"editorBracketHighlight.foreground1": "#ffd700",
//"editorBracketHighlight.foreground2": "#da70d6",
//"editorBracketHighlight.foreground3": "#179fff",
//"editorBracketHighlight.foreground4": "#00000000",
//"editorBracketHighlight.foreground5": "#00000000",
//"editorBracketHighlight.foreground6": "#00000000",
//"editorBracketHighlight.unexpectedBracket.foreground": "#ff1212cc",
//"editorBracketPairGuide.activeBackground1": "#00000000",
//"editorBracketPairGuide.activeBackground2": "#00000000",
//"editorBracketPairGuide.activeBackground3": "#00000000",
//"editorBracketPairGuide.activeBackground4": "#00000000",
//"editorBracketPairGuide.activeBackground5": "#00000000",
//"editorBracketPairGuide.activeBackground6": "#00000000",
//"editorBracketPairGuide.background1": "#00000000",
//"editorBracketPairGuide.background2": "#00000000",
//"editorBracketPairGuide.background3": "#00000000",
//"editorBracketPairGuide.background4": "#00000000",
//"editorBracketPairGuide.background5": "#00000000",
//"editorBracketPairGuide.background6": "#00000000",
//"editorGhostText.foreground": "#ffffff56",
//"editorGutter.commentRangeForeground": "#c5c5c5",
//"editorGutter.foldingControlForeground": "#c5c5c5",
//"editorHint.foreground": "#eeeeeeb3",
//"editorHoverWidget.foreground": "#ffffff",
//"editorHoverWidget.highlightForeground": "#ffffff",
//"editorHoverWidget.statusBarBackground": "#3d3d3d",
//"editorIndentGuide.activeBackground": "#333333",
//"editorInfo.foreground": "#3794ff",
//"editorInlayHint.background": "#88cc4499",
//"editorInlayHint.foreground": "#222222cc",
//"editorInlayHint.parameterBackground": "#88cc4499",
//"editorInlayHint.parameterForeground": "#222222cc",
//"editorInlayHint.typeBackground": "#88cc4499",
//"editorInlayHint.typeForeground": "#222222cc",
//"editorLightBulb.foreground": "#ffcc00",
//"editorLightBulbAutoFix.foreground": "#75beff",
//"editorLineNumber.activeForeground": "#c6c6c6",
//"editorMarkerNavigationError.headerBackground": "#88bbff1a",
//"editorMarkerNavigationInfo.background": "#3794ff",
//"editorMarkerNavigationInfo.headerBackground": "#3794ff1a",
//"editorMarkerNavigationWarning.headerBackground": "#88bbff1a",
//"editorOverviewRuler.bracketMatchForeground": "#a0a0a0",
//"editorOverviewRuler.commonContentForeground": "#60606066",
//"editorOverviewRuler.unicodeForeground": "#d186167e",
//"editorPane.background": "#222222",
//"editorSuggestWidget.focusHighlightForeground": "#ffffff",
//"editorSuggestWidget.selectedForeground": "#ffffff",
//"editorSuggestWidgetStatus.foreground": "#88888880",
//"editorUnicodeHighlight.border": "#bd9b03",
//"editorUnnecessaryCode.opacity": "#000000aa",
//"editorWidget.foreground": "#ffffff",
//"extensionBadge.remoteBackground": "#88cc44",
//"extensionBadge.remoteForeground": "#222222",
//"extensionIcon.preReleaseForeground": "#1d9271",
//"extensionIcon.starForeground": "#ff8e00",
//"extensionIcon.verifiedForeground": "#3794ff",
//"gitDecoration.addedResourceForeground": "#81b88b",
//"gitDecoration.conflictingResourceForeground": "#e4676b",
//"gitDecoration.deletedResourceForeground": "#c74e39",
//"gitDecoration.ignoredResourceForeground": "#8c8c8c",
//"gitDecoration.renamedResourceForeground": "#73c991",
//"gitDecoration.stageDeletedResourceForeground": "#c74e39",
//"gitDecoration.stageModifiedResourceForeground": "#e2c08d",
//"gitDecoration.submoduleResourceForeground": "#8db9e2",
//"gitlens.closedAutolinkedIssueIconColor": "#a371f7",
//"gitlens.closedPullRequestIconColor": "#f85149",
//"gitlens.decorations.addedForegroundColor": "#81b88b",
//"gitlens.decorations.branchAheadForegroundColor": "#35b15e",
//"gitlens.decorations.branchBehindForegroundColor": "#b15e35",
//"gitlens.decorations.branchDivergedForegroundColor": "#d8af1b",
//"gitlens.decorations.branchMissingUpstreamForegroundColor": "#c74e39",
//"gitlens.decorations.branchUnpublishedForegroundColor": "#35b15e",
//"gitlens.decorations.branchUpToDateForegroundColor": "#888888",
//"gitlens.decorations.copiedForegroundColor": "#73c991",
//"gitlens.decorations.deletedForegroundColor": "#c74e39",
//"gitlens.decorations.ignoredForegroundColor": "#8c8c8c",
//"gitlens.decorations.modifiedForegroundColor": "#cccccc",
//"gitlens.decorations.renamedForegroundColor": "#73c991",
//"gitlens.decorations.untrackedForegroundColor": "#cccccc",
//"gitlens.gutterBackgroundColor": "#ffffff13",
//"gitlens.gutterForegroundColor": "#bebebe",
//"gitlens.gutterUncommittedForegroundColor": "#00bcf299",
//"gitlens.lineHighlightBackgroundColor": "#00bcf233",
//"gitlens.lineHighlightOverviewRulerColor": "#00bcf299",
//"gitlens.mergedPullRequestIconColor": "#a371f7",
//"gitlens.openAutolinkedIssueIconColor": "#3fb950",
//"gitlens.openPullRequestIconColor": "#3fb950",
//"gitlens.trailingLineBackgroundColor": "#00000000",
//"gitlens.trailingLineForegroundColor": "#99999959",
//"gitlens.unpublishedCommitIconColor": "#35b15e",
//"gitlens.unpulledChangesIconColor": "#b15e35",
//"gitlens.unpushlishedChangesIconColor": "#35b15e",
//"icon.foreground": "#c5c5c5",
//"inputOption.activeBackground": "#66666666",
//"inputOption.activeForeground": "#ffffff",
//"inputOption.hoverBackground": "#5a5d5e80",
//"interactive.activeCodeBorder": "#222222",
//"interactive.inactiveCodeBorder": "#000000",
//"keybindingLabel.background": "#8080802b",
//"keybindingLabel.border": "#33333399",
//"keybindingLabel.bottomBorder": "#44444499",
//"keybindingLabel.foreground": "#cccccc",
//"keybindingTable.headerBackground": "#ffffff0a",
//"keybindingTable.rowsBackground": "#ffffff0a",
//"list.deemphasizedForeground": "#8c8c8c",
//"list.errorForeground": "#f88070",
//"list.filterMatchBackground": "#444466aa",
//"list.focusHighlightForeground": "#ffffff",
//"list.focusOutline": "#666666",
//"list.invalidItemForeground": "#b89500",
//"list.warningForeground": "#cca700",
//"listFilterWidget.background": "#653723",
//"listFilterWidget.noMatchesOutline": "#be1100",
//"listFilterWidget.outline": "#00000000",
//"menu.selectionBackground": "#111111",
//"menu.selectionForeground": "#ffffff",
//"menu.separatorBackground": "#bbbbbb",
//"menubar.selectionBackground": "#ffffff1a",
//"menubar.selectionForeground": "#888888",
//"merge.commonContentBackground": "#60606029",
//"merge.commonHeaderBackground": "#60606066",
//"minimap.errorHighlight": "#ff1212b3",
//"minimap.findMatchHighlight": "#d18616",
//"minimap.foregroundOpacity": "#000000",
//"minimap.selectionHighlight": "#264f78",
//"minimap.selectionOccurrenceHighlight": "#676767",
//"minimap.unicodeHighlight": "#d18616",
//"minimap.warningHighlight": "#88bbff",
//"minimapGutter.addedBackground": "#587c0c",
//"minimapGutter.deletedBackground": "#94151b",
//"minimapGutter.modifiedBackground": "#0c7d9d",
//"minimapSlider.activeBackground": "#ffffff09",
//"minimapSlider.background": "#ffffff09",
//"minimapSlider.hoverBackground": "#ffffff09",
//"notebook.cellBorderColor": "#000000",
//"notebook.cellEditorBackground": "#111111",
//"notebook.cellInsertionIndicator": "#666666",
//"notebook.cellStatusBarItemHoverBackground": "#ffffff26",
//"notebook.cellToolbarSeparator": "#80808059",
//"notebook.focusedCellBorder": "#666666",
//"notebook.focusedEditorBorder": "#666666",
//"notebook.inactiveFocusedCellBorder": "#000000",
//"notebook.selectedCellBackground": "#000000",
//"notebook.selectedCellBorder": "#000000",
//"notebook.symbolHighlightBackground": "#ffffff0b",
//"notebookScrollbarSlider.activeBackground": "#ffffff12",
//"notebookScrollbarSlider.background": "#ffffff12",
//"notebookScrollbarSlider.hoverBackground": "#ffffff12",
//"notebookStatusErrorIcon.foreground": "#88bbff",
//"notebookStatusRunningIcon.foreground": "#ffffff",
//"notebookStatusSuccessIcon.foreground": "#89d185",
//"notificationCenterHeader.background": "#424242",
//"notificationLink.foreground": "#3794ff",
//"notifications.background": "#333333",
//"notifications.border": "#424242",
//"notifications.foreground": "#ffffff",
//"notificationsErrorIcon.foreground": "#ee5500",
//"notificationsInfoIcon.foreground": "#3794ff",
//"notificationsWarningIcon.foreground": "#88bbff",
//"panel.dropBorder": "#ffffff",
//"panelSection.border": "#111111",
//"panelSection.dropBackground": "#111111bb",
//"panelSectionHeader.background": "#80808033",
//"ports.iconRunningProcessForeground": "#88cc44",
//"problemsErrorIcon.foreground": "#ee5500",
//"problemsInfoIcon.foreground": "#3794ff",
//"problemsWarningIcon.foreground": "#88bbff",
//"quickInput.background": "#333333",
//"quickInput.foreground": "#ffffff",
//"quickInputList.focusBackground": "#111111",
//"quickInputList.focusForeground": "#ffffff",
//"quickInputTitle.background": "#ffffff1b",
//"sash.hoverBorder": "#666666",
//"scm.providerBorder": "#454545",
//"searchEditor.findMatchBackground": "#44446670",
//"searchEditor.textInputBorder": "#333333",
//"settings.checkboxBackground": "#222222",
//"settings.checkboxBorder": "#222222",
//"settings.checkboxForeground": "#888888",
//"settings.dropdownBackground": "#222222",
//"settings.dropdownBorder": "#222222",
//"settings.dropdownForeground": "#888888",
//"settings.dropdownListBorder": "#333333",
//"settings.focusedRowBackground": "#80808024",
//"settings.focusedRowBorder": "#ffffff1f",
//"settings.headerForeground": "#e7e7e7",
//"settings.modifiedItemIndicator": "#0c7d9d",
//"settings.numberInputBackground": "#333333",
//"settings.numberInputBorder": "#333333",
//"settings.numberInputForeground": "#ffffff",
//"settings.rowHoverBackground": "#80808012",
//"settings.textInputBackground": "#333333",
//"settings.textInputBorder": "#333333",
//"settings.textInputForeground": "#ffffff",
//"sideBar.dropBackground": "#111111bb",
//"sideBySideEditor.horizontalBorder": "#111111",
//"sideBySideEditor.verticalBorder": "#111111",
//"statusBar.debuggingBorder": "#111111",
//"statusBar.noFolderBorder": "#111111",
//"statusBarItem.compactHoverBackground": "#ffffff33",
//"statusBarItem.errorBackground": "#0066eb",
//"statusBarItem.errorForeground": "#ffffff",
//"statusBarItem.prominentForeground": "#666666",
//"statusBarItem.remoteBackground": "#88cc44",
//"statusBarItem.remoteForeground": "#222222",
//"statusBarItem.warningBackground": "#0066eb",
//"statusBarItem.warningForeground": "#ffffff",
//"symbolIcon.arrayForeground": "#ffffff",
//"symbolIcon.booleanForeground": "#ffffff",
//"symbolIcon.classForeground": "#ee9d28",
//"symbolIcon.colorForeground": "#ffffff",
//"symbolIcon.constantForeground": "#ffffff",
//"symbolIcon.constructorForeground": "#b180d7",
//"symbolIcon.enumeratorForeground": "#ee9d28",
//"symbolIcon.enumeratorMemberForeground": "#75beff",
//"symbolIcon.eventForeground": "#ee9d28",
//"symbolIcon.fieldForeground": "#75beff",
//"symbolIcon.fileForeground": "#ffffff",
//"symbolIcon.folderForeground": "#ffffff",
//"symbolIcon.functionForeground": "#b180d7",
//"symbolIcon.interfaceForeground": "#75beff",
//"symbolIcon.keyForeground": "#ffffff",
//"symbolIcon.keywordForeground": "#ffffff",
//"symbolIcon.methodForeground": "#b180d7",
//"symbolIcon.moduleForeground": "#ffffff",
//"symbolIcon.namespaceForeground": "#ffffff",
//"symbolIcon.nullForeground": "#ffffff",
//"symbolIcon.numberForeground": "#ffffff",
//"symbolIcon.objectForeground": "#ffffff",
//"symbolIcon.operatorForeground": "#ffffff",
//"symbolIcon.packageForeground": "#ffffff",
//"symbolIcon.propertyForeground": "#ffffff",
//"symbolIcon.referenceForeground": "#ffffff",
//"symbolIcon.snippetForeground": "#ffffff",
//"symbolIcon.stringForeground": "#ffffff",
//"symbolIcon.structForeground": "#ffffff",
//"symbolIcon.textForeground": "#ffffff",
//"symbolIcon.typeParameterForeground": "#ffffff",
//"symbolIcon.unitForeground": "#ffffff",
//"symbolIcon.variableForeground": "#75beff",
//"tab.activeForeground": "#ffffff",
//"tab.activeModifiedBorder": "#3399cc",
//"tab.inactiveModifiedBorder": "#3399cc80",
//"tab.lastPinnedBorder": "#585858",
//"tab.unfocusedActiveBackground": "#222222",
//"tab.unfocusedActiveModifiedBorder": "#3399cc80",
//"tab.unfocusedInactiveBackground": "#111111",
//"tab.unfocusedInactiveModifiedBorder": "#3399cc40",
//"terminal.border": "#111111",
//"terminal.dropBackground": "#111111bb",
//"terminal.selectionBackground": "#ffffff40",
//"testing.iconErrored": "#f14c4c",
//"testing.iconFailed": "#f14c4c",
//"testing.iconPassed": "#73c991",
//"testing.iconQueued": "#cca700",
//"testing.iconSkipped": "#848484",
//"testing.iconUnset": "#848484",
//"testing.message.error.decorationForeground": "#ee5500",
//"testing.message.error.lineBackground": "#ff000033",
//"testing.message.info.decorationForeground": "#ffffff80",
//"testing.peekBorder": "#ee5500",
//"testing.peekHeaderBackground": "#ee55001a",
//"testing.runAction": "#73c991",
//"textBlockQuote.background": "#7f7f7f1a",
//"textBlockQuote.border": "#007acc80",
//"textCodeBlock.background": "#0a0a0a66",
//"textLink.activeForeground": "#3794ff",
//"textLink.foreground": "#3794ff",
//"textPreformat.foreground": "#d7ba7d",
//"textSeparator.foreground": "#ffffff2e",
//"toolbar.activeBackground": "#63666750",
//"toolbar.hoverBackground": "#5a5d5e50",
//"tree.indentGuidesStroke": "#585858",
//"tree.tableColumnsBorder": "#cccccc20",
//"tree.tableOddRowsBackground": "#ffffff0a",
//"welcomePage.progress.background": "#333333",
//"welcomePage.progress.foreground": "#3794ff",
//"welcomePage.tileBackground": "#333333",
//"welcomePage.tileHoverBackground": "#3d3d3d",
//"welcomePage.tileShadow": "#111111",
//"activityBar.activeBackground": null,
//"activityBar.activeFocusBorder": null,
//"button.border": null,
//"contrastActiveBorder": null,
//"contrastBorder": null,
//"debugToolBar.border": null,
//"diffEditor.border": null,
//"dropdown.listBackground": null,
//"editor.findMatchBorder": null,
//"editor.findMatchHighlightBorder": null,
//"editor.findRangeHighlightBorder": null,
//"editor.rangeHighlightBorder": null,
//"editor.selectionForeground": null,
//"editor.selectionHighlightBorder": null,
//"editor.snippetFinalTabstopHighlightBackground": null,
//"editor.snippetTabstopHighlightBorder": null,
//"editor.symbolHighlightBorder": null,
//"editor.wordHighlightBorder": null,
//"editor.wordHighlightStrongBorder": null,
//"editorCursor.background": null,
//"editorError.background": null,
//"editorError.border": null,
//"editorGhostText.background": null,
//"editorGhostText.border": null,
//"editorGroup.emptyBackground": null,
//"editorGroup.focusedEmptyBorder": null,
//"editorGroupHeader.border": null,
//"editorHint.border": null,
//"editorInfo.background": null,
//"editorInfo.border": null,
//"editorOverviewRuler.background": null,
//"editorSuggestWidget.selectedIconForeground": null,
//"editorUnnecessaryCode.border": null,
//"editorWarning.background": null,
//"editorWidget.resizeBorder": null,
//"inputValidation.errorForeground": null,
//"inputValidation.infoForeground": null,
//"inputValidation.warningForeground": null,
//"list.activeSelectionIconForeground": null,
//"list.filterMatchBorder": null,
//"list.inactiveFocusBackground": null,
//"list.inactiveFocusOutline": null,
//"list.inactiveSelectionIconForeground": null,
//"menu.border": null,
//"menu.selectionBorder": null,
//"menubar.selectionBorder": null,
//"minimap.background": null,
//"notebook.cellHoverBackground": null,
//"notebook.focusedCellBackground": null,
//"notebook.inactiveSelectedCellBorder": null,
//"notebook.outputContainerBackgroundColor": null,
//"notebook.outputContainerBorderColor": null,
//"notificationCenter.border": null,
//"notificationCenterHeader.foreground": null,
//"notificationToast.border": null,
//"panelInput.border": null,
//"panelSectionHeader.border": null,
//"panelSectionHeader.foreground": null,
//"peekViewEditor.matchHighlightBorder": null,
//"quickInput.list.focusBackground": null,
//"quickInputList.focusIconForeground": null,
//"searchEditor.findMatchBorder": null,
//"sideBarSectionHeader.border": null,
//"tab.activeBorder": null,
//"tab.activeBorderTop": null,
//"tab.hoverBackground": null,
//"tab.hoverBorder": null,
//"tab.hoverForeground": null,
//"tab.unfocusedActiveBorderTop": null,
//"tab.unfocusedHoverBackground": null,
//"tab.unfocusedHoverBorder": null,
//"tab.unfocusedHoverForeground": null,
//"terminal.tab.activeBorder": null,
//"terminalCursor.background": null,
//"terminalCursor.foreground": null,
//"testing.message.info.lineBackground": null,
//"titleBar.border": null,
//"toolbar.hoverOutline": null,
//"welcomePage.background": null,
//"window.activeBorder": null,
//"window.inactiveBorder": null
},
"tokenColors": [
{
"scope": [
"variable.language.this"
],
"settings": {
"fontStyle": ""
}
},
{
"scope": "markup.bold",
"settings": {
"fontStyle": "bold"
}
},
{
"scope": [
"invalid",
"markup.italic",
"markup.quote"
],
"settings": {
"fontStyle": "italic"
}
},
{
"scope": "markup.underline",
"settings": {
"fontStyle": "underline"
}
},
{
"scope": [
"source.js.jsx punctuation.section.embedded",
"entity.name.tag",
"string.other.link.description.title",
"support.constant",
"support.variable",
"support.type",
"variable.other.class",
"support.class.builtin.js",
"support.class.console.js",
"meta.property-value",
"variable.parameter.keyframe-list",
"meta.at-rule.keyframes entity.name.function",
"expression.embedded.vue punctuation.definition"
],
"settings": {
"foreground": "#BBA0FF",
"fontStyle": ""
}
},
{
"scope": [
"entity.other.attribute-name.pseudo-class.css",
"entity.name.type.object.console",
"variable.language",
"variable.parameter.function.language.special.self.python",
"storage.type",
"entity.other.attribute-name.pseudo-element.css"
],
"settings": {
"foreground": "#BBA0FF",
"fontStyle": "italic"
}
},
{
"scope": [
"punctuation.definition.string.template"
],
"settings": {
"foreground": "#BBA0FF",
"fontStyle": "bold"
}
},
{
"scope": [
"entity.other.attribute-name.class.css",
"entity.other.attribute-name.parent-selector-suffix.css",
"entity.other.attribute-name.parent-selector-suffix.css punctuation.definition.entity.css",
"meta.definition.function",
"markup.underline.link",
"markup.inserted",
"meta.function-call",
"meta.instance.constructor",
"meta.attribute-with-value.class string",
"string.other.ref",
"string.other.restructuredtext.ref",
"variable.function",
"entity.name.type",
"entity.name.function",
"variable.other.object.property",
"punctuation.separator.key-value",
"meta.definition.function.js",
"support.class.component.js",
"entity.other.inherited-class",
"support.class",
"support.function.misc",
"support.function",
"entity.other.attribute-name.id.css",
"entity.other.attribute-name.id.css punctuation",
"entity.other.attribute-name.class.css punctuation",
"meta.function-call support.function.construct",
"entity.other.attribute-name"
],
"settings": {
"foreground": "#FFDD44"
}
},
{
"scope": "storage.type.function.arrow",
"settings": {
"foreground": "#FFDD44",
"fontStyle": ""
}
},
{
"scope": [
"entity.name.section",
"constant.numeric.line-number.match.find-in-files",
"markup.heading",
"markup.changed",
"meta.attribute-with-value.id string",
"string",
"punctuation.definition.string.begin",
"punctuation.definition.string.end",
"meta.attribute-selector"
],
"settings": {
"foreground": "#88CC44"
}
},
{
"scope": [
"keyword",
"keyword.control",
"constant",
"constant.numeric",
"constant.language",
"constant.other.property",
"constant.character.escape",
"comment keyword.codetag.notation",
"keyword.other.template.begin",
"keyword.other.template.end",
"markup.raw",
"markup.deleted",
"meta.property-list.css variable.other",
"entity.name.constant.preprocessor",
"meta.preprocessor",
"punctuation.section.embedded",
"punctuation.template-string.element.begin",
"punctuation.template-string.element.end",
"string.quoted.template punctuation.definition.string.begin",
"string.quoted.template punctuation.definition.string.end",
"meta.paragraph.markdown meta.dummy.line-break",
"meta.paragraph.markdown meta.hard-line-break.markdown",
"storage",
"storage.class.restructuredtext.ref",
"string.other.link.title",
"string.other.link.description",
"string.regexp punctuation.definition.string.begin",
"string.regexp punctuation.definition.string.end",
"variable.language.arguments",
"storage.modifier",
"keyword.operator.new",
"keyword.operator",
"keyword.operator.spread",
"punctuation.section.embedded.end.php source.php",
"support.function.construct",
"meta.at-rule.keyframes",
"meta.at-rule.keyframes entity.other.attribute-name"
],
"settings": {
"foreground": "#88BBFF"
}
},
{
"scope": [
"variable.other.substitution"
],
"settings": {
"foreground": "#88BBFF",
"fontStyle": "bold"
}
},
{
"scope": [
"meta.function-call meta.function-call.arguments",
"meta.function-call meta.arguments",
"meta.function-call meta.group",
"source.json meta.structure.dictionary",
"meta.object.member",
"punctuation.definition.group",
"string.unquoted.label",
"variable.other.member",
"entity.name.class",
"entity.name.namespace",
"constant.other",
"variable",
"variable.other",
"variable.other.constant.js",
"text.find-in-files",
"source",
"entity.name.type.module",
"source.sql support.function",
"support.other.namespace.php"
],
"settings": {
"foreground": "#FFFFFF",
"fontStyle": ""
}
},
{
"scope": [
"variable.parameter",
"parameters variable.function"
],
"settings": {
"foreground": "#FFFFFF",
"fontStyle": "italic"
}
},
{
"scope": [
"variable.other.property",
"support.variable.property",
"punctuation.separator.key-value",
"meta.object-literal.key",
"variable.other.object.property",
"variable.object.property",
"text.html.basic",
"text.html.vue-html",
"text.html.php",
"text.html.derivative",
"punctuation.definition.variable",
"punctuation.definition.keyword.scss",
"meta.jsx.children.js",
"meta.tag.attributes keyword.operator.assignment",
"support.type.vendored.property-name.css",
"support.type.property-name.json",
"variable.other.constant.property"
],
"settings": {
"foreground": "#BBBBCC"
}
},
{
"scope": "meta.property-name support.type",
"settings": {
"foreground": "#BBBBCC",
"fontStyle": ""
}
},
{
"scope": [
"keyword.other.substitution",
"keyword.operator.heading.restructuredtext",
"keyword.operator.table.row.restructuredtext",
"keyword.operator.table.data.restructuredtext",
"punctuation",
"markup.ignored",
"markup.untracked",
"meta.brace.round",
"meta.brace.square",
"meta.brace.curly",
"meta.delimiter.comma.js",
"meta.function-call.without-arguments.js",
"meta.function-call.method.without-arguments.js",
"source.scss",
"string source punctuation.section.embedded",
"punctuation.definition.tag.begin source",
"source.php"
],
"settings": {
"foreground": "#9999AA"
}
},
{
"scope": [
"comment",
"comment punctuation"
],
"settings": {
"foreground": "#888899",
"fontStyle": "italic"
}
},
{
"scope": "token.info-token",
"settings": {
"foreground": "#6796E6"
}
},
{
"scope": "token.warn-token",
"settings": {
"foreground": "#CD9731"
}
},
{
"scope": "token.error-token",
"settings": {
"foreground": "#F44747"
}
},
{
"scope": "token.debug-token",
"settings": {
"foreground": "#B267E6"
}
}
]
}
+16
View File
@@ -0,0 +1,16 @@
{
"files.associations": {
"utility": "cpp",
"initializer_list": "cpp",
"list": "cpp",
"type_traits": "cpp",
"vector": "cpp",
"xhash": "cpp",
"xstring": "cpp",
"system_error": "cpp",
"array": "cpp",
"string_view": "cpp",
"xutility": "cpp",
"*.ipp": "cpp"
}
}
+41
View File
@@ -0,0 +1,41 @@
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "Touch CMakeLists.txt",
"type": "process",
"promptOnClose": false,
"isBackground": true,
"command": "touch",
"args": ["${workspaceRoot}/CMakeLists.txt"],
"problemMatcher": [],
"presentation": {
"echo": false,
"revealProblems": "onProblem",
"reveal": "silent",
"focus": false,
"panel": "shared",
"showReuseMessage": false,
"clear": true
}
}
],
"inputs": [
{
"id": "build_configuration",
"type": "pickString",
"default": "debug",
"description": "Configuration:",
"options": ["debug", "release"]
},
{
"id": "compiler",
"type": "pickString",
"default": "gcc",
"description": "Compiler",
"options": ["clang", "gcc"]
}
]
}
+41
View File
@@ -0,0 +1,41 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Spark Client",
"type": "coreclr",
"request": "launch",
"program": "${workspaceFolder}/build/Debug/bin/net6.0-windows/Spark.exe",
"cwd": "${workspaceFolder}/build/Debug/bin/net6.0-windows",
"enableStepFiltering": false,
"console": "internalConsole",
"stopAtEntry": false
},
{
"name": "Spark Test",
"type": "coreclr",
"request": "launch",
"program": "${workspaceFolder}/build/Debug/bin/net6.0/sparkcmd.exe",
"args": ["test", "${input:test}"],
"cwd": "${workspaceFolder}/build/Debug/bin/net6.0-windows",
"enableStepFiltering": false,
"console": "internalConsole",
"stopAtEntry": false
},
{
"name": "Attach (.NET Core)",
"type": "coreclr",
"request": "attach"
}
],
"inputs": [
{
"id": "test",
"description": "The test(s) to run",
"type": "promptString"
}
]
}
+37
View File
@@ -0,0 +1,37 @@
{
"cmake.configureOnOpen": false,
"workbench.colorTheme": "Default Dark+",
"C_Cpp.intelliSenseEngine": "Disabled",
"files.associations": {
"*.js": "javascript",
"*.conf": "jsonc",
"array": "cpp",
"xtree": "cpp",
"chrono": "cpp",
"*.ipp": "cpp",
"optional": "cpp",
"regex": "cpp",
"system_error": "cpp",
"format": "cpp",
"future": "cpp",
"istream": "cpp",
"memory": "cpp",
"tuple": "cpp",
"type_traits": "cpp",
"utility": "cpp",
"variant": "cpp",
"xlocmes": "cpp",
"xlocmon": "cpp",
"xlocnum": "cpp",
"xloctime": "cpp",
"xutility": "cpp",
"xstring": "cpp",
"string": "cpp",
"cstdint": "cpp"
},
"files.exclude": {
"**/.g.cs": true,
"**/.g.i.cs": true
}
}
+44
View File
@@ -0,0 +1,44 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "Build Spark Client",
"type": "process",
"command": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\Common7\\Tools\\VsDevCmd.bat",
"args": [
"-arch=x64",
"-host_arch=x64",
"&&",
"${workspaceRoot}\\tools\\buildspark.cmd"
],
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "new",
"showReuseMessage": false,
"clear": false,
"close": false
}
},
{
"label": "Run Spark Client",
"type": "process",
"command": "${workspaceRoot}\\build\\Debug\\bin\\net6.0-windows\\Spark.exe",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": true,
"clear": false
},
"problemMatcher": []
}
]
}
+107
View File
@@ -0,0 +1,107 @@
{
"configurations": [
{
"name": "Linux",
"includePath": [
"/usr/include",
"/usr/local/include",
"${workspaceRoot}",
"${workspaceFolder}/src",
"${workspaceRoot}/externals/linux/include"
],
"defines": [],
"intelliSenseMode": "clang-x64",
"browse": {
"path": [
"/usr/include",
"/usr/local/include",
"${workspaceRoot}",
"${workspaceFolder}/src",
"${workspaceRoot}/externals/linux/include"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
},
"cStandard": "c11",
"cppStandard": "c++17",
"compileCommands": "${workspaceFolder}/build/ninja_debug/compile_commands.json"
},
{
"name": "Windows",
"intelliSenseMode": "clang-x64",
"includePath": [
"${workspaceRoot}/src",
"${workspaceRoot}/build/src",
"${workspaceRoot}/build/ninja_debug/src",
"${workspaceRoot}/externals/windows/include",
"${workspaceRoot}/externals/linux/include",
"${workspaceRoot}/externals/windows/vscode/usr/include/c++/6",
"${workspaceRoot}/externals/windows/vscode/usr/include/x86_64-linux-gnu/c++/6",
"${workspaceRoot}/externals/windows/vscode/usr/include/c++/6/backward",
"${workspaceRoot}/externals/windows/vscode/usr/lib/gcc/x86_64-linux-gnu/6/include",
"${workspaceRoot}/externals/windows/vscode/usr/local/include",
"${workspaceRoot}/externals/windows/vscode/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed",
"${workspaceRoot}/externals/windows/vscode/usr/include/x86_64-linux-gnu",
"${workspaceRoot}/externals/windows/vscode/usr/include"
],
"defines": [
"__linux__",
"__x86_64__"
],
"browse": {
"path": [
"${workspaceRoot}/src",
"${workspaceRoot}/build/src",
"${workspaceRoot}/build/ninja_debug/src",
"${workspaceRoot}/externals/windows/include",
"${workspaceRoot}/externals/linux/include",
"${workspaceRoot}/externals/windows/vscode/usr/include/c++/6",
"${workspaceRoot}/externals/windows/vscode/usr/include/x86_64-linux-gnu/c++/6",
"${workspaceRoot}/externals/windows/vscode/usr/include/c++/6/backward",
"${workspaceRoot}/externals/windows/vscode/usr/lib/gcc/x86_64-linux-gnu/6/include",
"${workspaceRoot}/externals/windows/vscode/usr/local/include",
"${workspaceRoot}/externals/windows/vscode/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed",
"${workspaceRoot}/externals/windows/vscode/usr/include/x86_64-linux-gnu",
"${workspaceRoot}/externals/windows/vscode/usr/include/*"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
},
"cStandard": "c11",
"cppStandard": "c++17"
},
{
"name": "WindowsQuick",
"intelliSenseMode": "clang-x64",
"includePath": [
"${workspaceRoot}/src",
"${workspaceRoot}/build/src",
"${workspaceRoot}/build/ninja_debug/src",
"${workspaceRoot}/externals/windows/include",
"${workspaceRoot}/externals/linux/include",
"${workspaceRoot}/externals/windows/vscode/usr/include/c++/6",
"${workspaceRoot}/externals/windows/vscode/usr/include/x86_64-linux-gnu/c++/6",
"${workspaceRoot}/externals/windows/vscode/usr/include/c++/6/backward",
"${workspaceRoot}/externals/windows/vscode/usr/lib/gcc/x86_64-linux-gnu/6/include",
"${workspaceRoot}/externals/windows/vscode/usr/local/include",
"${workspaceRoot}/externals/windows/vscode/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed",
"${workspaceRoot}/externals/windows/vscode/usr/include/x86_64-linux-gnu",
"${workspaceRoot}/externals/windows/vscode/usr/include"
],
"defines": [
"__linux__",
"__x86_64__"
],
"browse": {
"path": [
"${workspaceRoot}/src"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": "${workspaceRoot}/.vscode/browse.vc.db"
},
"cStandard": "c11",
"cppStandard": "c++17"
}
],
"version": 4
}
@@ -1,371 +1,402 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "SparkVM Launch",
"type": "cppdbg",
"request": "launch",
"program": "/home/bts/spark/build/ninja_debug/server/sparkd",
"args": [
"run"
],
"stopAtEntry": false,
"cwd": "/home/bts/spark/build/ninja_debug/server/",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"preLaunchTask": "",
"logging": {
"engineLogging": false
},
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "enable pretty-printer",
"ignoreFailures": true
},
{
"description": "Skip STL",
"text": "skip -gfi /usr/include/c++/7/bits/*.h",
"ignoreFailures": true
},
{
"description": "LD LIBRARY",
"text": "set env LD_LIBRARY_PATH=.",
"ignoreFailures": false
}
],
"pipeTransport": {
"pipeCwd": "${workspaceRoot}",
"pipeProgram": "c:\\program files\\git\\usr\\bin\\ssh.exe",
"pipeArgs": [
"bts@sparkvm"
],
"debuggerPath": "/usr/bin/gdb"
},
"sourceFileMap": {
"/home/bts/spark/": "${workspaceRoot}"
}
},
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceRoot}/build/ninja_debug/server/sparkd/sparkd",
"args": [
"run"
],
"stopAtEntry": false,
"cwd": "${workspaceRoot}/build/ninja_debug/src/server/sparkd",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "Client Launch",
"type": "clr",
"request": "launch",
"program": "${workspaceRoot}/build/Debug/bin/net471/spark.exe",
"args": [],
"cwd": "${workspaceRoot}",
"stopAtEntry": false,
"externalConsole": true,
"requireExactSource": false
},
{
"name": "SDK Launch",
"type": "clr",
"request": "launch",
"program": "${workspaceRoot}/build/Debug/bin/net471/spark_sdk.exe",
"args": [
"md",
"GLBX",
"Future",
"CL",
"CLZ9",
"--user=bts",
"--pass="
],
"cwd": "${workspaceRoot}",
"stopAtEntry": false,
"externalConsole": true,
"requireExactSource": false
},
{
"name": "Excel Launch",
"type": "clr",
"request": "launch",
"program": "C:/Program Files/Microsoft Office/Office14/EXCEL.EXE",
"args": [
"${workspaceRoot}/build/Debug/bin/net471/spark_excel-addin64-packed.xll"
],
"cwd": "${workspaceRoot}",
"stopAtEntry": false,
"externalConsole": true,
"requireExactSource": false
},
{
"name": "Client Tests",
"type": "clr",
"request": "launch",
"program": "${workspaceRoot}/build/Debug/bin/net471/sparkcmd.exe",
"args": [
"test",
"ApiUpdateTests"
],
"cwd": "${workspaceRoot}",
"stopAtEntry": false,
"externalConsole": true,
"requireExactSource": false
},
{
"name": "Client Attach",
"type": "clr",
"request": "attach",
"processId": "${command:pickProcess}"
},
{
"name": "Spreader Tests",
"type": "cppdbg",
"request": "launch",
"program": "/home/bts/spark/build/ninja_debug/server/sparkd",
"args": [
"test",
"[spreader]"
],
"stopAtEntry": false,
"cwd": "/home/bts/spark/build/ninja_debug/server/",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"preLaunchTask": "",
"logging": {
"engineLogging": false
},
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "enable pretty-printer",
"ignoreFailures": true
}
],
"pipeTransport": {
"pipeCwd": "${workspaceRoot}",
"pipeProgram": "c:\\program files\\git\\usr\\bin\\ssh.exe",
"pipeArgs": [
"bts@sparkvm"
],
"debuggerPath": "/usr/bin/gdb"
},
"sourceFileMap": {
"/home/bts/spark/": "${workspaceRoot}"
}
},
{
"name": "Admin Service Tests",
"type": "cppdbg",
"request": "launch",
"program": "/home/bts/spark/build/ninja_debug/src/server/sparkd/sparkd",
"args": [
"test",
"[admin_service]"
],
"stopAtEntry": false,
"cwd": "/home/bts/spark/build/ninja_debug/src/server/sparkd/",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"preLaunchTask": "",
"logging": {
"engineLogging": false
},
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "enable pretty-printer",
"ignoreFailures": true
}
],
"pipeTransport": {
"pipeCwd": "${workspaceRoot}",
"pipeProgram": "c:\\program files\\git\\usr\\bin\\ssh.exe",
"pipeArgs": [
"bts@sparkvm"
],
"debuggerPath": "/usr/bin/gdb"
},
"sourceFileMap": {
"/home/bts/spark/": "${workspaceRoot}"
}
},
{
"name": "Limiter Tests",
"type": "cppdbg",
"request": "launch",
"program": "/home/bts/spark/build/ninja_debug/src/server/sparkd/sparkd",
"args": [
"test",
"[limiter]"
],
"stopAtEntry": false,
"cwd": "/home/bts/spark/build/ninja_debug/src/server/sparkd/",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"preLaunchTask": "",
"logging": {
"engineLogging": false
},
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "enable pretty-printer",
"ignoreFailures": true
}
],
"pipeTransport": {
"pipeCwd": "${workspaceRoot}",
"pipeProgram": "c:\\program files\\git\\usr\\bin\\ssh.exe",
"pipeArgs": [
"bts@sparkvm"
],
"debuggerPath": "/usr/bin/gdb"
},
"sourceFileMap": {
"/home/bts/spark/": "${workspaceRoot}"
}
},
{
"name": "MD Tests",
"type": "cppdbg",
"request": "launch",
"program": "/home/bts/spark/build/ninja_debug/server/sparkd",
"args": [
"test",
"[algo]"
],
"stopAtEntry": false,
"cwd": "/home/bts/spark/build/ninja_debug/server/",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"preLaunchTask": "",
"logging": {
"engineLogging": false
},
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Skip STL",
"text": "skip -gfi /usr/include/c++/7/bits/*.h",
"ignoreFailures": true
}
],
"pipeTransport": {
"pipeCwd": "${workspaceRoot}",
"pipeProgram": "c:\\program files\\git\\usr\\bin\\ssh.exe",
"pipeArgs": [
"bts@sparkvm"
],
"debuggerPath": "/usr/bin/gdb"
},
"sourceFileMap": {
"/home/bts/spark/": "${workspaceRoot}"
}
},
{
"name": "SparkVM attach",
"type": "cppdbg",
"request": "attach",
"program": "/home/bts/spark/build/ninja_debug/src/server/sparkd/sparkd",
"processId": "${command:pickRemoteProcess}",
"MIMode": "gdb",
"pipeTransport": {
"pipeCwd": "${workspaceRoot}",
"pipeProgram": "c:\\program files\\git\\usr\\bin\\ssh.exe",
"pipeArgs": [
"bts@sparkvm"
],
"debuggerPath": "/usr/bin/gdb"
},
"sourceFileMap": {
"/home/bts/spark/": "${workspaceRoot}"
}
},
{
"name": "Python",
"type": "python",
"request": "launch",
"stopOnEntry": false,
"pythonPath": "${config:python.pythonPath}",
"program": "${file}",
"cwd": "${workspaceRoot}",
"env": {},
"envFile": "${workspaceRoot}/.env",
"args": [
"DEBUG"
],
"debugOptions": [
"WaitOnAbnormalExit",
"WaitOnNormalExit",
"RedirectOutput"
]
},
{
"name": ".NET Core Remote Attach",
"type": "coreclr",
"request": "attach",
"processId": "${command:pickRemoteProcess}",
"pipeTransport": {
"pipeProgram": "c:\\program files\\git\\usr\\bin\\ssh.exe",
"pipeArgs": [
"bts@sparkvm"
],
"debuggerPath": "/home/bts/vsdbg/vsdbg",
"pipeCwd": "${workspaceRoot}",
"quoteArgs": true
},
"sourceFileMap": {
"/home/bts/spark/": "${workspaceRoot}"
},
"justMyCode": true
},
{
"name": ".NET Core Remote Launch",
"type": "coreclr",
"request": "launch",
"program": "/usr/bin/dotnet",
"args": [
"sparkcmd.dll",
"test",
"test_join_create_and_takeout_market"
],
"stopAtEntry": false,
"cwd": "/home/bts/spark/build/ninja_debug/server",
"pipeTransport": {
"pipeProgram": "c:\\program files\\git\\usr\\bin\\ssh.exe",
"pipeArgs": [
"bts@sparkvm"
],
"debuggerPath": "/home/bts/vsdbg/vsdbg",
"pipeCwd": "${workspaceRoot}",
"quoteArgs": true
},
"sourceFileMap": {
"/home/bts/spark/": "${workspaceRoot}"
},
"justMyCode": false
},
]
{
"version": "0.2.0",
"configurations": [
{
"name": "Spark Local",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceRoot}/build/gcc/debug/server/sparkd",
"args": [
"run",
"test",
"-a",
"OutrightVanillaOrder"
],
"stopAtEntry": false,
"cwd": "${workspaceRoot}/build/gcc/debug/server/",
"environment": [
{
"name": "TZ",
"value": "America/Chicago"
}
],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "SparkVM Launch",
"type": "cppdbg",
"request": "launch",
"program": "/home/bts/spark/build/gcc/debug/server/sparkd",
"args": [
"test",
"-a",
"[ilink3]"
],
"stopAtEntry": false,
"cwd": "/home/bts/spark/build/gcc/debug/server/",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"preLaunchTask": "",
"logging": {
"engineLogging": false
},
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "enable pretty-printer",
"ignoreFailures": true
},
{
"description": "Skip STL",
"text": "skip -gfi /usr/include/c++/7/bits/*.h",
"ignoreFailures": true
},
{
"description": "LD LIBRARY",
"text": "set env LD_LIBRARY_PATH=.",
"ignoreFailures": false
}
],
"pipeTransport": {
"pipeCwd": "${workspaceRoot}",
"pipeProgram": "c:\\program files\\git\\usr\\bin\\ssh.exe",
"pipeArgs": [
"bts@sparkvm"
],
"debuggerPath": "/usr/bin/gdb"
},
"sourceFileMap": {
"/home/bts/spark/": "${workspaceRoot}"
}
},
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceRoot}/build/gcc/debug/server/sparkd/sparkd",
"args": [
"run"
],
"stopAtEntry": false,
"cwd": "${workspaceRoot}/build/ninja_debug/src/server/sparkd",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "Client Launch",
"type": "clr",
"request": "launch",
"program": "${workspaceRoot}/build/Debug/bin/net471/spark.exe",
"args": [],
"cwd": "${workspaceRoot}",
"stopAtEntry": false,
"externalConsole": true,
"requireExactSource": false
},
{
"name": "SDK Launch",
"type": "clr",
"request": "launch",
"program": "${workspaceRoot}/build/Debug/bin/net471/spark_sdk.exe",
"args": [
"md",
"GLBX",
"Future",
"CL",
"CLZ9",
"--user=bts",
"--pass="
],
"cwd": "${workspaceRoot}",
"stopAtEntry": false,
"externalConsole": true,
"requireExactSource": false
},
{
"name": "Excel Launch",
"type": "clr",
"request": "launch",
"program": "C:/Program Files/Microsoft Office/Office14/EXCEL.EXE",
"args": [
"${workspaceRoot}/build/Debug/bin/net471/spark_excel-addin64-packed.xll"
],
"cwd": "${workspaceRoot}",
"stopAtEntry": false,
"externalConsole": true,
"requireExactSource": false
},
{
"name": "Client Tests",
"type": "clr",
"request": "launch",
"program": "${workspaceRoot}/build/Debug/bin/net471/sparkcmd.exe",
"args": [
"test",
"ApiUpdateTests"
],
"cwd": "${workspaceRoot}",
"stopAtEntry": false,
"externalConsole": true,
"requireExactSource": false
},
{
"name": "Client Attach",
"type": "clr",
"request": "attach",
"processId": "${command:pickProcess}"
},
{
"name": "Spreader Tests",
"type": "cppdbg",
"request": "launch",
"program": "/home/bts/spark/build/gcc/debug/server/sparkd",
"args": [
"test",
"[spreader]"
],
"stopAtEntry": false,
"cwd": "/home/bts/spark/build/gcc/debug/server/",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"preLaunchTask": "",
"logging": {
"engineLogging": false
},
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "enable pretty-printer",
"ignoreFailures": true
}
],
"pipeTransport": {
"pipeCwd": "${workspaceRoot}",
"pipeProgram": "c:\\program files\\git\\usr\\bin\\ssh.exe",
"pipeArgs": [
"bts@sparkvm"
],
"debuggerPath": "/usr/bin/gdb"
},
"sourceFileMap": {
"/home/bts/spark/": "${workspaceRoot}"
}
},
{
"name": "Admin Service Tests",
"type": "cppdbg",
"request": "launch",
"program": "/home/bts/spark/build/ninja_debug/src/server/sparkd/sparkd",
"args": [
"test",
"[admin_service]"
],
"stopAtEntry": false,
"cwd": "/home/bts/spark/build/ninja_debug/src/server/sparkd/",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"preLaunchTask": "",
"logging": {
"engineLogging": false
},
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "enable pretty-printer",
"ignoreFailures": true
}
],
"pipeTransport": {
"pipeCwd": "${workspaceRoot}",
"pipeProgram": "c:\\program files\\git\\usr\\bin\\ssh.exe",
"pipeArgs": [
"bts@sparkvm"
],
"debuggerPath": "/usr/bin/gdb"
},
"sourceFileMap": {
"/home/bts/spark/": "${workspaceRoot}"
}
},
{
"name": "Limiter Tests",
"type": "cppdbg",
"request": "launch",
"program": "/home/bts/spark/build/ninja_debug/src/server/sparkd/sparkd",
"args": [
"test",
"[limiter]"
],
"stopAtEntry": false,
"cwd": "/home/bts/spark/build/ninja_debug/src/server/sparkd/",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"preLaunchTask": "",
"logging": {
"engineLogging": false
},
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "enable pretty-printer",
"ignoreFailures": true
}
],
"pipeTransport": {
"pipeCwd": "${workspaceRoot}",
"pipeProgram": "c:\\program files\\git\\usr\\bin\\ssh.exe",
"pipeArgs": [
"bts@sparkvm"
],
"debuggerPath": "/usr/bin/gdb"
},
"sourceFileMap": {
"/home/bts/spark/": "${workspaceRoot}"
}
},
{
"name": "MD Tests",
"type": "cppdbg",
"request": "launch",
"program": "/home/bts/spark/build/gcc/debug/server/sparkd",
"args": [
"test",
"[algo]"
],
"stopAtEntry": false,
"cwd": "/home/bts/spark/build/gcc/debug/server/",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"preLaunchTask": "",
"logging": {
"engineLogging": false
},
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Skip STL",
"text": "skip -gfi /usr/include/c++/7/bits/*.h",
"ignoreFailures": true
}
],
"pipeTransport": {
"pipeCwd": "${workspaceRoot}",
"pipeProgram": "c:\\program files\\git\\usr\\bin\\ssh.exe",
"pipeArgs": [
"bts@sparkvm"
],
"debuggerPath": "/usr/bin/gdb"
},
"sourceFileMap": {
"/home/bts/spark/": "${workspaceRoot}"
}
},
{
"name": "SparkVM attach",
"type": "cppdbg",
"request": "attach",
"program": "/home/bts/spark/build/ninja_debug/src/server/sparkd/sparkd",
"processId": "${command:pickRemoteProcess}",
"MIMode": "gdb",
"pipeTransport": {
"pipeCwd": "${workspaceRoot}",
"pipeProgram": "c:\\program files\\git\\usr\\bin\\ssh.exe",
"pipeArgs": [
"bts@sparkvm"
],
"debuggerPath": "/usr/bin/gdb"
},
"sourceFileMap": {
"/home/bts/spark/": "${workspaceRoot}"
}
},
{
"name": "Python",
"type": "python",
"request": "launch",
"stopOnEntry": false,
"pythonPath": "${config:python.pythonPath}",
"program": "${file}",
"cwd": "${workspaceRoot}",
"env": {},
"envFile": "${workspaceRoot}/.env",
"args": [
"DEBUG"
],
"debugOptions": [
"WaitOnAbnormalExit",
"WaitOnNormalExit",
"RedirectOutput"
]
},
{
"name": ".NET Core Remote Attach",
"type": "coreclr",
"request": "attach",
"processId": "${command:pickRemoteProcess}",
"pipeTransport": {
"pipeProgram": "c:\\program files\\git\\usr\\bin\\ssh.exe",
"pipeArgs": [
"bts@sparkvm"
],
"debuggerPath": "/home/bts/vsdbg/vsdbg",
"pipeCwd": "${workspaceRoot}",
"quoteArgs": true
},
"sourceFileMap": {
"/home/bts/spark/": "${workspaceRoot}"
},
"justMyCode": true
},
{
"name": ".NET Core Remote Launch",
"type": "coreclr",
"request": "launch",
"program": "/usr/bin/dotnet",
"args": [
"sparkcmd.dll",
"test",
"test_join_create_and_takeout_market"
],
"stopAtEntry": false,
"cwd": "/home/bts/spark/build/gcc/debug/server",
"pipeTransport": {
"pipeProgram": "c:\\program files\\git\\usr\\bin\\ssh.exe",
"pipeArgs": [
"bts@sparkvm"
],
"debuggerPath": "/home/bts/vsdbg/vsdbg",
"pipeCwd": "${workspaceRoot}",
"quoteArgs": true
},
"sourceFileMap": {
"/home/bts/spark/": "${workspaceRoot}"
},
"justMyCode": false
}
]
}
@@ -7,9 +7,9 @@
"vector": "cpp",
"xhash": "cpp",
"xstring": "cpp",
"system_error": "cpp",
"array": "cpp",
"string_view": "cpp"
"system_error": "cpp",
"array": "cpp",
"string_view": "cpp"
"xutility": "cpp",
"*.ipp": "cpp"
}
@@ -14,24 +14,21 @@
"focus": false,
"panel": "shared"
},
"group": {
"kind": "build",
"isDefault": true
}
"group": "build"
},
{
"label": "server_build",
"label": "server_build",
"type": "shell",
"command": ".\\tools\\buildsparkd.cmd",
"problemMatcher": {
"base": "$gcc",
"problemMatcher": {
"base": "$gcc",
"owner": "cpp",
"fileLocation": [
"relative",
"${workspaceFolder}"
"${workspaceFolder}"
],
"pattern": {
"regexp": "(.?)(home)(.?)(bts)(.?)(spark)(.?)(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)",
"regexp": "(.?)(home)(.?)(bts)(.?)(spark)(.?)(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)",
"file": 8,
"line": 9,
"column": 10,
@@ -49,6 +46,18 @@
"kind": "build",
"isDefault": true
}
}
},
{
"label": "linux build (Debug)",
"type": "shell",
"command": "cd build/ninja_debug; time ninja",
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": [
"$gcc"
]
}
]
}
+1
View File
@@ -0,0 +1 @@
public
+15
View File
@@ -0,0 +1,15 @@
# The URL the site will be built for
base_url = "https://api.bluetradesys.com"
title = "BTS Spark API"
description = "Documentation for the BTS Spark API"
compile_sass = true
highlight_code = true
highlight_theme = "kronuz"
insert_anchor_links = true
build_search_index = true
[extra]
author = "Blue Trading Systems"
+5
View File
@@ -0,0 +1,5 @@
+++
title = "BTS Spark API"
+++
This is index
+7
View File
@@ -0,0 +1,7 @@
+++
title="Client API"
redirect_to = "client/getting-started/overview/"
sort_by="weight"
+++
@@ -0,0 +1,6 @@
+++
title="Getting Started"
sort_by="weight"
weight = 1
+++
@@ -0,0 +1,25 @@
+++
title = "Install Prerequisites"
weight = 10
+++
# C#/.NET
We target [.NET Standard 2.0](https://docs.microsoft.com/en-us/dotnet/standard/net-standard) so you can use .NET Framework 4.6.1+ or .NET Core 2.0+. Simply add a reference to the [Spark Nuget package](https://www.nuget.org/packages/spark_sdk/) to get started.
```
dotnet new console -lang c#
dotnet add package spark_sdk
dotnet build
```
# C++
The easiest way to get started with C++ is to use the Spark Server SDK to develop your application. Follow the instructions to [download and install the Spark Server SDK](/server/getting-started/install) and open the client_sdk sample project. If you want to run your C++ Client SDK application on Windows [contact us](mailto://api@bluetradesys.com) to get the required headers and binaries.
# JavaScript
We use JavaScript internally with the Spark Client API over a websocket connection but the documentation and packaging isn't ready yet. If this is something you're interested in get in touch with us at [api@bluetradesys.com](mailto:api@bluetradesys.com).
@@ -0,0 +1,31 @@
+++
title = "Overview"
weight = 1
+++
The Spark Client SDK is a high level command and control API which can be used to build scripts or integrate Spark into your existing ecosystem. The API is divided into several independent **"services"** responsible for different aspects of the system. A Service can define both [remote procedure call (RPC)](/client/getting-started/services#rpc) and incremental [streaming](/client/getting-started/services#streams) data.
The [Spark Desktop](https://www.bluetradingsystems.com/bts-spark/) is built on top of this API so you can be assured that it is complete and well tested.
Spark uses [Google Protocol Buffers](https://developers.google.com/protocol-buffers/) as an interface definition language similar to [GRPC](https://grpc.io) but backed by our custom high-performance TCP protocol. We currently support C#/.NET and C++ <!--and Javascript--> but the architecture is designed for easy extension so contact us about your specific business needs.
## Orders
Use the [OrderService](/client/services/orderservice) to send and manage orders including native exchange orders, spreader orders, and custom Algo orders created using the [Spark Server SDK](https://api.bluetradesys.com/server/).
## Spreader
Use the [SyntheticSecurityService](/client/services/syntheticsecurityservice) to create and manage synthetic spreads. Once created these spreads show up in the security and market data feeds just like exchange listed spreads.
## Position
Use the [PositionService](/client/services/positionservice) to get your position and P&L reports or add fills manually to keep the Spark system up to date with an external system.
## Administration
Use the [AdminService](/client/services/adminservice) to manage users and control limits.
## Market Data
For .NET subscribe to market data though the high level MarketDataClient interface. From C++ or JavaScript use the MarketDataRelay service directly.
@@ -0,0 +1,140 @@
+++
title = "Services"
weight = 20
+++
The Spark Client SDK uses [Google Protocol Buffers](https://developers.google.com/protocol-buffers/) to define the interface for each service in a language independent manner. Services have both functions which return a single result and streams of data which return values continuously while subscribed. This page describes the mapping from the Protocol Buffer definition to the concrete definition in each supported language.
# ServiceContext
To connect your client to the Spark Server you need to get or create a `ServiceContext` instance. A `ServiceContext` represents a connection to the Spark Server and a background thread for handling messages on that connection. Generally there should be a single `ServiceContext` per process. All of the methods on the `ServiceContext` are safe thread safe.
Construct a ServiceContext by calling the default constructor. The ServiceContext will find the Spark Server by loading the server configuration over an HTTP connection. To determine the URL it will search the following locations and use the first one that is present.
* A command line argument `-configserver <url>`
* An environment variable `BTSCONFIG`
* `%APPDATA%/bts/conf/spark.conf` (Windows)
* /sparkdata/conf/spark.conf (Linux)
* $HOME/sparkdata/conf/spark.conf (Linux)
If your application is running on a system with the BTS Client installed this will probably work without any further configuration. If you plan to run your client application on a separate machine we recommend setting the `BTSCONFIG` environment variable.
<div class="info">
<i class="fa fa-lightbulb-o fa-fw" aria-hidden="true"></i>
If you are using the Spark Server SDK to run a local copy of the Spark server set <p><strong>BTSCONFIG = http://localhost:9000/config/</strong></p>
</div>
To get a proxy for a given service call ServiceContext.locate&lt;T>("qualifier") where T is the type of the service and "qualifier" is an optional qualifier used to disambiguate between 2 instances of the same service. The locate call cannot fail but it may return a disconnected proxy. When you make a call on the proxy you should check the call result to see if the method call succeeded.
# RPC
Here is the OrderService reduced to a single method definition. A RPC method always takes exactly 1 argument and returns 1 value. In this example the `create_order` call takes a `Create` instance and returns a `Response`.
```C
service OrderService {
rpc create_order(Create) returns (Response);
...
}
```
The `Create` and `Response` types are also defined as protocol buffer messages. Each field can either be a primitive type another message or a list or map.
```C
message Create {
OrderDefinition new_order = 1;
double price = 2;
uint32 quantity = 3;
}
message Response {
uint32 order_key = 1;
OrderError error_code = 2;
string msg = 3;
}
```
Each RPC call generates both synchronous (blocking) and asynchronous variants. In C# the asynchronous calls have the `_async` suffix and return a `Task`. In C++ the call is overloaded to either return a value synchronously or accept a callback function to be called on the ServiceContext thread when the call completes. <!-- In Javascript only async methods returning a Promise are generated because it never makes sense to make a blocking call in the browser. -->
To call the resulting service locate a proxy using the [ServiceContext](#servicecontext) and then call `cancel_order` or `cancel_order_async`. If you are calling the Spark API from a GUI application you should always prefer the `_async` version of the calls.
### C# example
```c#
var ctx = new ServiceContext();
var orders = ctx.locate<OrderService>();
var response =
await orders.create_order_async(
new Create { price = 2.25, quantity = 42 });
if (response.success) {
Console.WriteLine($"success: {response.value}");
}
else {
Console.WriteLine($"Error: {response.error_message}");
}
```
### C++ example
```cpp
auto ctx = ServiceContext{};
auto orders = ctx.locate<OrderService>();
Create c;
c.set_price(2.25);
c.set_quantity(42);
// Instead of providing an _async method C++ uses overloading.
// To make a syncronous call simply omit the callback
orders.create_order(c, [=](const Result<Response>& response) {
if(response.success()) {
std::cout << "success.";
}
else {
std::cout << "error: " << response.error_message();
}
});
```
# Streams
Streams allow you to subscribe to live updating data. Each stream represents a changing collection of protocol buffer objects. Similar to a database row each item has an `id` which uniquely identifies it within the collection. Updates from the Spark server can add, remove or replace entries in the collection. Since only the changed items are sent over the wire the stream can remain responsive even when it represents a large collection.
Streams are implemented using the language bindings for [ReativeX](http://reactivex.io/) which provide utility functions to drill down to the specific data your application needs. In C# we provide both mutable and immutable versions of the generated data types (C++ users can rely on `const`).
When defined in a proto file streams use the `stream` keyword on the result type.
```C
service OrderService {
...
rpc fills (FillsSub) returns (stream Fill);
}
```
### C# example
```c#
var sc = new ServiceContext();
var orders = sc.locate<OrderService>();
var fills_observable = orders.subscribei_fills();
var unsub = fills_observable.Subscribe(update => {
Console.WriteLine(
"Added {0} items, Removed {1} items, Updated {2} items. Total items {3}",
update.added.Count(),
update.removed.Count(),
update.changes.Count(),
update.all.Count());
});
Thread.Sleep(TimeSpan.FromMinutes(5));
unsub.Dispose();
```
### C++ Example
```cpp
#include "lib/api/public/ServiceContext.h"
#include "lib/api/services/OrderService.client.pb.h"
using namespace bts::api;
ServiceContext ctx;
auto orders = ctx.locate<orderman::OrderService>();
auto unsub = orders.subscribe_fills().subscribe([](const auto& update) {
std::cout
<< "Added " << update.added().size() << " items, "
<< "Removed " << update.removed().size() << " items, "
<< "Updated " << update.updated().size() << " items, "
<< "Total items " << update.all().size() << std::endl;
});
std::this_thread::sleep_for(std::chrono::minutes(5));
```
+6
View File
@@ -0,0 +1,6 @@
+++
title="Samples"
sort_by="weight"
weight = 30
+++
@@ -0,0 +1,3 @@
+++
title = "AdminService"
+++
@@ -0,0 +1,3 @@
+++
title = "OrderService"
+++
@@ -0,0 +1,3 @@
+++
title = "PositionService"
+++
@@ -0,0 +1,3 @@
+++
title = "SyntheticService"
+++
@@ -0,0 +1,6 @@
+++
title="Services"
#sort_by="weight"
weight = 10
+++
@@ -0,0 +1,51 @@
+++
title = "Market Data"
+++
Use the MarketDataService to subscribe enumerate all available securities.
```cs
using System;
using System.Threading;
using bts.api;
using bts.api.core;
namespace sample {
class Program {
static void Main(string[] args) {
using var context = new ServiceContext();
var md = context.locate<MarketDataService>();
using var sub = md.subscribe_securities().Subscribe(update => {
foreach (var security in update.added) {
Console.WriteLine($"Added security {security.Id}: {security.Symbol}");
}
});
Thread.Sleep(TimeSpan.FromMinutes(5));
}
}
}
```
```cpp
#include "lib/api/public/ServiceContext.h"
#include "spark/lib/domain_model/Security.h"
#include "lib/api/services/MarketDataService.client.pb.h"
#include <thread>
using namespace bts::api;
int main(int argc, char** argv) {
ServiceContext ctx;
auto md_service = ctx.locate<bts::api::MarketDataService>();
auto sub = md_service.subscribe_securities().subscribe([](const auto& update) {
for (const auto& s : update.added()) {
std::cout << "Added security: " << s->id() << ": " << s->symbol() << std::endl;
}
});
std::this_thread::sleep_for(std::chrono::minutes(5));
return 0;
}
```
+24
View File
@@ -0,0 +1,24 @@
+++
title="Algo API"
redirect_to = "server/getting-started/overview/"
sort_by="weight"
+++
Getting Started
- Install (docker, editor)
- Downloading
- Write your first algo
- Testing
Reference
- Subscriptions
- Child Orders
- Detaching
- Attaching
- ...
Samples
- Iceberg
- Pro-rata
@@ -0,0 +1,6 @@
+++
title="Getting Started"
sort_by="weight"
weight = 1
+++
Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

@@ -0,0 +1,138 @@
+++
title = "Development"
weight = 3
+++
# Visual Studio Code
In this section we're going to use the Remote - Containers feature of <a href="https://code.visualstudio.com/" target="_blank">Visual Studio Code<i class="fa fa-fw fa-window-restore" aria-hidden="true"></i></a> to simplify the development experience. If you are using a different editor skip to the <a href="#other-editors">other editor</a> section below.
## Remote - Containers
The Visual Studio Code Remote containers extension allows it to run a complete development environment inside the Spark SDK Docker container. The editor UI runs as a thin client on your desktop and connects to a headless instance running inside the Spark SDK Docker environment. This configuration allows us to ship a pre-configured set of [Tasks](https://code.visualstudio.com/Docs/editor/tasks) for building and testing your code.
Start Visual Studio Code and click on the puzzle piece icon on the left-hand side to open the extensions panel. Use the search box at the top to find the "Remote - Containers" extension and install it.
<img src="../vscode_remote_containers.png" width="640" />
## Into the Code
Open the examples/algo_template directory using the File->Open Folder menu option. If you opted to add it to your path during install, you could run `code .` from your command prompt.
When the workspace opens, you should see a notification offering to let you re-open the workspace inside the container.
<img src="../vscode_notification.png" width="480" />
The first time you open the workspace inside the container it will take a few seconds to configure the spark_sdk docker container. While the workspace is open in Visual Studio Code the docker image will also be running in the background. The container will stop automatically when you close the editor.
Open algo_template.cpp from the file browser on the left or by pressing ctrl-p and typing the name. Each Algo is a standard C++ class which implements **IAlgoOrder**. Placing your cursor on IAlgoOrder and pressing F12 will take you to the IAlgoOrder.h header file where you can browse the API. To learn more about how an Algo is instantiated see the [Algo Initialization](/server/ref/initialization).
## Compiling
To build press "Ctrl+Shift+B". You should see the build output at the bottom of your screen. If the build was successful the resulting algo_template.so will be automatically copied to the plugins directory where it will be loaded by the Spark server process on start.
<img src="../compiled.png" width="640" />
## Debugging
To debug your Algo set a breakpoint (F9) and open the Debug panel (Ctrl+Shift+D) and choose "(gdb) Launch". This will launch the Spark Server inside the container with the debugger attached.
<img src="../gdb_launch.png" width="380" />
With sparkd running you can launch the Spark Client (spark_client.cmd) and it will connect to the running server. Log in with the user "bts" and no password and open a ladder. You can now select your Algo on the order type dropdown and activate it by clicking on a price on the ladder.
<img src="../myalgo.png" width="150" />
While sparkd is running you can also access the Spark Server Admin interface on [http://localhost:9000](http://localhost:9000). Use the same "bts" login to access the admin interface. Here you can manage user and account permissions and risk limits.
## Starting Spark Server
To start the Spark Server without attaching a debugger press "Ctrl+Shift+P" and select "Tasks: Run Task" and then "Start Sparkd" and "Never scan task output" This will open a new terminal where you can see any messages logged with the **Sdk** subsystem as well as any warnings or errors. To stop the Spark server simply kill the terminal (trash can icon) or run the "Stop Sparkd" task.
## Next Steps
If you would like to understand more about how Docker is working behind the scenes continue to the [next section](#other-editors). Otherwise, continue to [Algo Registration](/server/ref/registration) to learn how Algos are registered with the Spark.
<hr>
# Other Editors
In this section you will be more exposed to the details of how Docker works and how to compile and test your Algo using the command line.
## Docker
Spark Server is built and runs only on Linux so you need a Linux development environment to effectively develop plug-ins for it. Docker lets you take the spark_sdk.img disk image and run it inside a virtual Linux machine running on your Windows desktop.
First, some terminology. A Docker "image" is a disk image containing a complete filesystem. The spark_sdk.img file you imported earlier is an image. A Docker "container" is what you get when you get when you attach this image to a running Linux system. You can connect to a running container and use it to run commands like the C++ compiler or the Spark server. Directories from your local filesystem can be mapped into the Docker container when it starts so you can easily share files.
### Start
The first step is to start the spark_sdk Docker container with the examples directory mapped so we can compile the examples inside the container. In your command prompt cd to the *examples* directory that you unzipped from the spark_sdk.zip file. Then run the following command to start the container.
Windows Command Prompt:
{% clipable() %}
docker run --rm -it -v %CD%:/examples -u bts -w /examples --shm-size 2048m --name spark_sdk -h spark_sdk --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -p 9000:9000 -p 9001:9001 spark_sdk bash
{% end %}
**Powershell** / Linux / Mac:
{% clipable() %}
docker run --rm -it -v ${PWD}:/examples -u bts -w /examples --shm-size 2048m --name spark_sdk -h spark_sdk --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -p 9000:9000 -p 9001:9001 spark_sdk bash
{% end %}
### Attach
The container will remain as long as this prompt is open. You can attach an additional to the running container with the following command:
{% clipable() %}
docker exec -it spark_sdk bash
{% end %}
## Compiling
Let's look at the algo_template sample first. All of the samples are laid out similarly with a `build.sh` script for compiling. As long as you are running build.sh inside the spark Docker container, it automatically copies the build output to /sparkbin/plugins/ where it needs to be to get loaded by the Spark server.
```
bts@spark_sdk:/examples$ cd algo_template/
bts@spark_sdk:/examples/algo_template$ ./build.sh
algo_template.so copied to /sparkbin/plugins/
Restart sparkd to see changes.
```
## Starting Spark Server
To start the Spark server `cd /sparkbin/` and run `./sparkd run`. Press Ctrl+C to stop it.
```
bts@spark_sdk:/sparkbin$ ./sparkd run
2019-10-25 16:21:09.383626|262552152803600|Gen|Warn |1 |main|132 |Run.cpp:53 |dev|
------------------------------------ Sparkd launched --------------------------------
```
You will see any Sdk log messages as well as any log messages at or above Warning level from other parts of the system. If you need additional diagnostic information more details logs are stored in /sparkdata/data/logging/log. These logs will be automatically deleted when you stop the Docker container.
With sparkd running you can launch the Spark Client (spark_client.cmd) and it will connect to the running server. Log in with the user "bts" and no password and open a ladder. You can now select your Algo on the order type dropdown and activate it by clicking on a price on the ladder.
<img src="../myalgo.png" width="150" />
While sparkd is running you can also access the Spark Server Admin interface on [http://localhost:9000](http://localhost:9000). Use the same "bts" login to access the admin interface. Here you can manage user and account permissions and risk limits.
## Debugging
You can debug your algo using gdb from the bash command prompt.
```bts@spark_sdk:/sparkbin$ gdb --args ./sparkd run
GNU gdb (Ubuntu 8.1-0ubuntu3) 8.1.0.20180409-git
Copyright (C) 2018 Free Software Foundation, Inc.
...
Reading symbols from ./sparkd...done.
(gdb) break algo_template.cpp:45
No source file named algo_template.cpp.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (algo_template.cpp:45) pending.
(gdb) run
Starting program: /sparkbin/sparkd run
```
If your editor supports debugging over the ssh protocol you can start sshd from inside the container.
## Next
Continue to [Algo Registration](/server/ref/registration) to learn how Algos are registered with the Spark.
Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

@@ -0,0 +1,88 @@
+++
title = "Download SDK"
weight = 2
+++
## Request Access 🔑
To start using the Server SDK you will need to request access though our sales department. Please email <a href="mailto:api@bluetradesys.com">api@bluetradesys.com</a> or call <a href="tel:919-913-0850">(919) 913-0850</a> and we will provide download credentials.
## Download
Download the latest SDK image here: [spark_sdk.zip](https://api.bluetradesys.com/download/spark_sdk.zip)
Unzip that folder into a working directory. Inside you should see something like this:
```
spark_sdk.img
client/
spark_client.cmd
examples/
```
## Import
Import the spark_sdk image into docker using the `docker load` command.
{% clipable() %}
docker load < spark_sdk.img
{% end %}
<div class="info">
<i class="fa fa-lightbulb-o fa-fw" aria-hidden="true"></i>
<strong>If you see this error it means Docker Desktop is not running:</strong>
error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.40/images/json: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running.
</div>
Confirm that the import worked by running `docker images` which should list the new image.
```
c:\bts> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
bluetradingsystems/spark_sdk latest e2be89436e73 4 hours ago 3.89GB
```
<!--
## Run
Start the docker container by running
```
docker run -d -v %CD%:/work --name spark_sdk --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -p 8000:8000 -p 8001:8001 -p 8008:8008 bluetradingsytems/spark_sdk
```
<div class="linux">
<i class="fa fa-linux fa-fw" aria-hidden="true"></i>
If you are using Linux or Mac replace <strong>%CD%</strong> with <strong>$PWD</strong>.
</div>
The first time you invoke `docker run` you may be prompted to "share" your filesystem with Docker. This usually works fine but if you run into trouble, see <a href="">Docker Desktop for Windows tips</a> on avoiding common problems.
## Success 🎉
Docker is now running the spark SDK image. If you are on Windows or Mac it is running inside a virtual Linux machine. You can see that is is running by typing `docker ps` to list running docker containers. If you restart the Docker Desktop application you will need to start the spark_sdk image again using `docker start spark_sdk`.
You should now be able to access an admin interface at http://localhost:8008/ which will let you stop and start the spark server process.
-->
## Update
To update your Spark SDK simply download an unzip a new [spark_sdk.zip](https://api.bluetradesys.com/download/spark_sdk.zip) and use `docker load < spark_sdk.img` to overwrite the old image with the new one.
To preserve the old image so you can go back to it later run `docker tag spark_sdk spark_sdk:your_custom_tag` before loading the new SDK image.
### Re-build the Dev Container
If you are using Visual Studio Code you also need to rebuild the dev-container so it picks up the new image.
#### Inside VSCode
To re-build from inside Visual Studio Code. Click the 'Remote Explorer' icon on the left hand side.
You should see your spark_sdk project listed under the Containers section. Right click on it and select **rebuild-container**.
#### Command Line
To re-build from the command line run `docker ps -a` and find the row with the spark_sdk image.
```
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
54d96cfa3888 spark_sdk "/bin/sh -c 'echo Co…" About a minute ago Up About a minute 127.0.0.1:9000-9001->9000-9001/tcp quizzical_lichterman
```
Then run `docker rm 54d96cfa3888` (use your container id instead of 54d96cfa3888) or `docker rm quizzical_lichterman` (use your container name).
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

@@ -0,0 +1,57 @@
+++
title = "Install Prerequisites"
weight = 1
+++
These instructions assume you are using Microsoft Windows but you should be able to follow them on a Linux or Mac with minor modifications.
{% linux() %}
When there is a significant difference on non-Windows platforms it will be called out in a box like this one.
{% end %}
{% info() %}
Tips or solutions to common problems will be highlighted in a box like this.
{% end %}
The minimum hardware requirements for using the SDK are:
- **12 GB** RAM (preferably 16 GB or more)
- 4 CPU cores
- 20 GB free hard disk space
The Spark SDK uses a tool called Docker to distribute all of the tools you need to build and test your trading algorithm ("Algo"). Once you have Docker installed you can download and import the Spark SDK image and be ready to start developing your Algo in a few minutes.
## Docker
Download and install <a href="https://www.docker.com/products/docker-desktop" target="_blank">Docker Desktop for Windows/Mac. <i class="fa fa-fw fa-window-restore" aria-hidden="true"></i></a>
<div class="linux">
<i class="fa fa-linux fa-fw" aria-hidden="true"></i>
If you are using Linux follow the <a href="https://docs.docker.com/install/#supported-platforms">official install instructions for Docker for your distribution.</a>
</div>
During the install Docker may ask you to enable virtualization support and reboot.
Once Docker Desktop is installed and running it will create an icon in your system tray area that looks like the Docker logo.
![](../docker_tray.png)
Right click on the tray icon and choose 'Settings' and choose the 'Advanced' tab.
Ensure that the docker image has 8192 MB of memory and at least 2 cores. Memory that you assign to the docker image will not be available to Windows/Mac while Docker is running. CPU cores are shared with the host OS. Since you are going to use this image to compile your Algo it makes sense to allow Docker to use all available cores.
<img src="../docker_config.png" width="640" >
## Sharing
You need to give Docker access to the Windows drive where your source code is kept.
Open Settings -> Shared Drives and check the drive where you intend to keep your Algo source code.
<div class="info">
<i class="fa fa-lightbulb-o fa-fw" aria-hidden="true"></i>
If you run into trouble with drive sharing, see <a href="https://code.visualstudio.com/docs/remote/troubleshooting#_docker-desktop-for-windows-tips">Docker Desktop for Windows tips</a> on avoiding common problems.
</div>
## Editor
The Server SDK includes a complete configuration for C++ development with the <a href="https://code.visualstudio.com/" target="_blank">Visual Studio Code <i class="fa fa-fw fa-window-restore" aria-hidden="true"></i></a> editor. If you are a new to C++ development on a Linux system we recommend you give this a try as it's the easiest way to get up and running quickly. Of course, If you have a different editor that you prefer we fully support that as well.
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

@@ -0,0 +1,44 @@
+++
title = "Overview"
weight = 0
+++
Using the **Spark Server SDK**, users can create new order types ("Algos"). In this case, users implement the new functionality in C++, producing a shared library that is loaded at run time by our Spark Server.
If you are interested in accessing Spark server remotely, please see the [Spark Client SDK](/client/).
## Speed
The Spark platform offers a sub-10 microsecond socket to socket response times for algorithmic trading. With the **Spark Server SDK**, you can create your order types in high-performance C++ and load them into the Spark server.
Since your order is running inside the Spark Server, there is virtually no overhead allowing your algorithm to take full advantage of the speed Spark offers. Hosting a high-performance language like C++ directly in the Spark server process allows it to respond to the market thousands of times faster than an Algo built using a proprietary drag and drop tool.
## Easy to Get Started
If you are not actively developing with C++, it can be time-consuming to set up a complete development environment from scratch. That is why we provide a full development environment out of the box with [Docker](https://docker.io) so you can download and try the Server SDK quickly and easily.
Docker works across Windows, macOS, and Linux, so you don't need to change your development environment to try the Spark API. Docker also ensures that all of the dependencies you need are packaged together in one image, so you know it will work out of the box, no matter the platform.
## Implementation
Creating a new Algo begins with implementing a standard C++ class derived from IAlgoOrder. Start from the [algo_template](/server/samples/template) example to get going quickly.
The first call your new Algo receives is [do_before_launch](/server/ref/initialization#before-launch), which is an opportunity to validate parameters and allocate any long-lived resources needed during execution. Next, it receives either [do_launch](/server/ref/initialization#launch-launch-attached) in the case of a new order or [do_launch_attached](/server/ref/initialization#launch-launch-attached) if the order is attaching to an existing order.
The Algo receives a reference to [IAlgoServices](/server/ref/subscriptions/), which is how it calls out to the Spark system. It will use [IAlgoServices](/server/ref/subscriptions/) to subscribe to market events, launch and control child orders, and communicate its state to the larger Spark system.
## Fully Integrated
When a Spark Server plugin is loaded, it registers its exposed Algos with the Spark Server though the [init_spark_plugin](/server/ref/registration) callback. This callback allows the Algo to describe the parameters it expects so they can be automatically entered in the [Spark Client](https://www.bluetradingsystems.com/bts-spark/).
<img src="../myalgo.png" width="150" />
<img src="../paramsui.png" width="460" />
Compose your Algo with out of the box Algos in the [Spark Algo Studio](https://www.bluetradingsystems.com/news/155-bts-algo-studio-provides-algo-library-with-customization-functionality) to create new functionality on the fly.
<img src="../algostudio.png" width="548" /><br />
<img src="../iced_algo.png" width="460" />
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

+6
View File
@@ -0,0 +1,6 @@
+++
title="Reference"
sort_by="weight"
weight = 2
+++
+14
View File
@@ -0,0 +1,14 @@
+++
title = "Questions"
weight = 40
+++
## I need to make a call that might take a few seconds. What is the best way to do this?
Create a background thread in [do_before_launch](/server/ref/initialization#before-launch) or [do_launch](/server/ref/initialization#launch-launch-attached) to do the work. Use [on_timer](/server/ref/subscriptions#timer) to poll until the result is available.
## I don't see the header files in the .zip file. Where are they?
The SDK headers are baked into the docker image along with the build tools. Once you've loaded the image with `docker load < spark_sdk.img` you can run this command to copy them out to your local file system `docker run --rm -it -v $PWD:/out spark_sdk /bin/tar -cvf /out/headers.tar /sdk/include` This will copy the headers to the current directory in headers.tar. We still recommend doing the actual build inside the docker environment but having a copy of the headers can be useful for setting up your development environment.
@@ -0,0 +1,97 @@
+++
title = "Initialization"
weight = 10
+++
Each Algo derives from IAlgoOrder and overrides virtual methods to receive callbacks from the Spark system.
## Before Launch
When an order is activated by a user or by another Algo, the first call it receives is do_before_launch. This call happens outside of the latency-sensitive path, so it's the place to validate parameters and set up data structures that the Algo might need.
This call returns an OrderOpResult, which allows it to fail and return an error message to its creator. If a user created this order, this message is displayed in the [Activity Log](https://www.bluetradingsystems.com/docs/bts_spark/Help/#activity-log) and across the bottom of the ladder.
Every SDK Algo is a "Dynamic" Algo since it's parameters are defined during [registration](/server/ref/registration/). Use the `get_if<T>` helper to retrieve a named parameter from the `order_params` collection as a `std::option<T>`. If a parameter has a valid default value you can use `std::option::value_or(...)` to set default values for missing parameters. If a parameter *must* exist or must be within a certain valid range, return an error to the caller.
```cpp
OrderOpResult MyAlgo::do_before_launch(IBeforeLaunchAlgoServices& serv) {
auto& def = serv.definition();
auto& params = def.custom_def().dynamic().order_params();
auto mqi = get_if<uint32_t>(params, "Min Quantity");
if (!mqi || mqi.value() == 0)
return OrderOpResult{
ORDER_ERROR_INVALID_ORDER_DEFINITON,
"Min Quantity parameter must be defined and non zero"};
}
```
<div class="info">
<i class="fa fa-lightbulb-o fa-fw" aria-hidden="true"></i>
The parameters are defined during <a href="/server/ref/registration/">registration</a> by the <a href="/server/ref/registration/#dynamicorderdescriptor">DynamicOrderDescriptor</a>.
</div>
### IBeforeLaunchAlgoServices
IBeforeLaunchAlgoServices is passed to `do_before_launch` and allows the Algo to query its environment.
```cpp
class IBeforeLaunchAlgoServices {
public:
// The OrderDefinition for this algo
virtual api::orderman::OrderDefinition const &definition() const = 0;
// The security this algo is paramterized with (also available from
// definition())
virtual api::Security const &security() const = 0;
// The unique order key for this algo
virtual OrderKey order_key() const = 0;
// The parent key for this algo's parent or null_order_key() if the
// algo does not have a parent
virtual OrderKey parent_order_key() const = 0;
// The security identified by k or nullptr if no such security exists
virtual api::Security const *lookup_security(SecurityKey k) const = 0;
// Wheter this algo is being attached to an existing order.
// If an algo does not support attaching it can return an error
// if is_attaching() == true from do_before_launch.
virtual bool is_attaching() const = 0;
// Build a child template that can later can be used to quickly
// launch child orders. The reserve parameter indicates how many
// orders should be created ahead of time, before they are
// launched. This is usefull to remove the relatively expensive
// order creation operation to a background thread.
virtual ChildTemplate &
make_child_template(api::orderman::OrderDefinition const &child_def,
size_t reserve = 1) = 0;
// Get the current time
virtual TimeStamp get_time() const;
};
```
## Launch / Launch Attached
Depending on the state of `is_attaching()` the next call will either be `do_launch` or `do_launch_attached`. The only difference is that in `do_launch_attached` the existing OrderKey and ChildState are provided.
`do_launch` and `do_launch_attached` are in the latency-sensitive path and should not do more work than needed. These functions get a reference to `IAlgoServices`, which is a superset of the functionality available on `IBeforeLaunchAlgoServices`. Most Algos should store a pointer or reference to this object for managing child orders (it has a stable address).
Now is the time to use `IAlgoServices` to subscribe to market events that are relevant to your Algo and create any child orders that need to exist at the start of your Algo. You can safely call IAlgoServices from any `IAlgoOrder` callback.
To learn more about subscribing to events see [subscriptions](/server/ref/subscriptions).
### Things to do in the launch callback
☑ Store a reference to IAlgoServices
☑ Subscribe to relevant market events
☑ Launch a child order?
## Update
If the user or parent Algo changes the order parameters (price, size, or the custom parameters defined during registration), Spark calls the `do_update` callback with the new parameters. It is up to the Algo to decide how to apply the new parameters to update the running state. It can do this by canceling, changing, or adding new child orders.
Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

+88
View File
@@ -0,0 +1,88 @@
+++
title = "Child Orders"
weight = 30
+++
Every Algo must, at some point, launch a child order to be useful. Each child order can be another Algo or regular exchange order. When the child order is updated or filled, those changes are also sent to the parent.
# Templates
Since launching a child order is one of the most latency-sensitive things an Algo can do, the Server SDK enables you to create a child template. An order template prepares an order based on a known OrderDefinition and gets it ready to send on a background thread. When the Algo determines it is time to send the order, it only needs to provide the price and quantity to complete and send the order. If an Algo expects to send multiple child orders, it can reserve more than one. Preparing a child template is typically done in [do_before_launch](http://127.0.0.1:1111/server/ref/initialization/#before-launch) callback.
```cpp
virtual ChildTemplate&
IBeforeLaunchAlgoServices::make_child_template(
api::orderman::OrderDefinition const &child_def,
size_t reserve = 1);
```
# Launch
IAlgoServices provides two overloads for launching child orders. By default, launching a child order automatically subscribes the Algo to its state changes.
Launch a child order from a template if you have one prepared. This is the fastest option.
```cpp
OrderKey IAlgoServices::launch_child(ChildTemplate&, Price, Quantity, bool subscribe = true);
```
Launch a child order by constructing an OrderDefinition as needed.
```cpp
OrderKey launch_child(OrderDefinition const &, Price, Quantity, bool subscribe = true);
```
When a child is launched its `OrderKey` is returned to the caller. This ID can be used to update, cancel, or detach the child order.
## Update
To update an existing child order, call update_child and pass an Update. The Update type lets you change the price, size or the entire OrderDefinition. You only need to specify the fields that you intend to update so only set the price() field if that is what you are changing.
```cpp
void IAlgoServices::update_child(OrderKey child, api::orderman::Update const &);
```
## Cancel
To cancel an existing child order call `cancel_child`. When the order is canceled you will receive an update though the `on_child_change` callback.
```cpp
void IAlgoServices::cancel_child(OrderKey child);
```
## Detach
The lifetime of a child order is tied to its parent. If a parent is canceled or completed child orders are automatically stopped as well. If the Algo needs to launch an order that will continue after the Algo ends use `detach_child` to sever the connection. This order hierarchy can be viewed in the Spark [Order Book](https://www.bluetradingsystems.com/docs/bts_spark/Trading/#order-book).
```cpp
void IAlgoServices::detach_child(OrderKey child);
```
To detach all children at once use `detach_all_children`.
```cpp
void IAlgoServices::detach_all_children();
```
# Child Updated
When a child order is updated the parent receives the `on_child_change` callback with an updated ChildState object.
```cpp
void on_child_change(OrderKey, ChildState const &) override;
struct ChildState {
Price price;
Quantity quantity;
Quantity total_fills;
Price avg_price;
Quantity last_fills;
Price last_price;
ChildStatus status;
Quantity fills_at_attach_time;
};
```
<!--
To talk about:
- updating fills (update_fill_state)
- handling child finished (unexpected cancel)
-->
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

@@ -0,0 +1,92 @@
+++
title = "Registration"
weight = 1
+++
When Spark Server starts, it loads all plugins listed in the /sparkbin/plugins directory and calls an exported function named `init_spark_plugin` which must have the following signature.
```cpp
extern "C" void init_spark_plugin(bts::SparkServices &serv) { }
```
The `init_spark_plugin` function registers the Algo with a DynamicOrderDescriptor. Once registered, the Algo appears in the [Spark ladder](https://www.bluetradingsystems.com/docs/bts_spark/Trading/#ladder) and the [Algo Studio](https://www.bluetradingsystems.com/docs/bts_spark/Trading/#algo-studio).
To register an Algo call `register_dynamic_algo_order` on the provided bts::SparkServices instance. This function takes the DynamicOrderDescriptor and a function that is called to construct the IAlgoOrder. A single init_spark_plugin can call register_dynamic_algo_order multiple times to register multiple Algos.
The DynamicOrderDescriptor must have a dynamic_order_type (name), or the registration will fail.
```cpp
DynamicOrderDescriptor desc;
desc.set_dynamic_order_type("My Algo");
auto result =
serv.register_dynamic_algo_order(
desc, []() { return std::make_unique<MyAlgo>(); });
if (result != bts::AlgoRegistrationResult::SUCCESS) {
// Algo failed to register
}
```
## DynamicOrderDescriptor
The DynamicOrderDescriptor describes the type of parameters that the Algo accepts. These inputs can come either from the user manually entering them or from a parent Algo. Spark Algos are composable, so one Algo can activate another. See [Child Orders](/server/ref/orders) for more on how to activate custom order types as child orders.
Add parameters to the DynamicOrderDescriptor by calling `add_param_desc()` and setting the name and parameter type.
```cpp
*desc.add_param_desc() = param_bool("Enable Feature");
*desc.add_param_desc() = param_uint32("Feature Quantity");
```
The above parameters look like this when rendered in the Spark ladder.
<img src="../paramsui.png" width="460" />
And like this when viewed in the Spark order book.
<img src="../orderbook_truncated.png" width="988" />
Each descriptor can be one of the following types:
```
// Primitive
int32
uint32
double
string
bool
// Complex
Order
Array
Struct
```
**Currently the Spark UI only renders parameters with primitive types.** The complex types can only be provided by a parent order.
### Order
This parameter type indicates that another order type parameterizes this Algo. When the Algo needs to create a child order, it can use this parameter type to create a custom order type instead of defaulting to a limit order.
For example, an Algo might be designed to wait for a specific market condition before putting in an order. Instead of placing a limit order when the condition is met, the user can specify that it should an IceBerg order. The Algo doesn't need special logic to handle different child order types.
### Array
An array parameter is a collection of the same type of parameter. If your Algo needed to behave differently depending on a table of prices, you could send that list in though an array parameter.
```cpp
*desc.add_param_desc() =
param_array("Price Points",
param_double("unused").param_type());
```
### Struct
A struct parameter is a set of named parameter types similar to the entire DynamicOrderDescriptor. The struct parameter type can be combined with the array type to handle tabular data.
```cpp
*desc.add_param_desc() =
param_array("Step Table",
param_struct("", {
param_uint32("Market Quantity"),
param_uint32("Order Quantity")
}).param_type());
```
@@ -0,0 +1,69 @@
+++
title = "Subscriptions"
weight = 20
+++
An Algo exists to observe changes in the market and respond to them. When the Algo is [launched](1/server/ref/initialization/#launch-launch-attached) it uses IAlgoServices to subscribe to the events it needs to operate. Each subscribe call is paired with a matching unsubscribe call, which takes the same argument to unsubscribe.
# Book
Subscribe to book updates for the specified security call use subscribe_book and unsubscribe book.
```cpp
// Subscribe to book updates for the specified security
void IAlgoServices::subscribe_book(SecurityKey);
void IAlgoServices::unsubscribe_book(SecurityKey);
// You implement
virtual void on_book(SecurityKey, Book const &) override;
```
Get the `SecurityKey` of the current security using:
```cpp
services.subscribe_book(SecurityKey(algo_services().security().id()));
```
If your Algo needs to subscribe to other securities, their keys must be passed in as parameters.
To get the details of a security use
```cpp
api::Security const* IBeforeLaunchAlgoServices::lookup_security(SecurityKey k) const = 0;
```
# Timer
To handle time-based logic, an Algo can subscribe to a common timer event that is invoked once every 10 milliseconds. Use the TimeStamp class from `bts_chrono.h` to efficiently handle time calculations.
```cpp
// Subscribe to a periodic 10ms timer
void IAlgoServices::subscribe_timer();
// You implement
virtual void on_timer() override;
```
# Ticker
The status callback is called when the market for this security opens, closes, or has some other state transition.
```cpp
// Subscribe to trade ticker
void IAlgoServices::subscribe_ticker(SecurityKey);
// You implement
void on_ticker(SecurityKey, TradeVector const&) override;
```
# Trading Status
The status callback is called when the market for this security opens, closes, or has some other state transition.
```cpp
// Subscribe to security trading status
void IAlgoServices::subscribe_status(SecurityKey);
// You implement
virtual void on_status(SecurityKey, co2::TradingStatus) override;
```
# Child Orders
When an Algo launches a child order, it is subscribed to the changes on that child automatically. If the Algo unsubscribes from those changes, it can re-subscribe using this method.
```cpp
// Subscribe to child order updates for the specified child order.
void IAlgoServices::subscribe_child_change(OrderKey);
// You implement
virtual void on_child_change(OrderKey, ChildState const &) override;
```
+6
View File
@@ -0,0 +1,6 @@
+++
title="Samples"
sort_by="weight"
weight = 3
+++
+354
View File
@@ -0,0 +1,354 @@
+++
title = "Join"
weight = 10
+++
Join starts working N ticks away from the market (usually) and then watches for the opposite inside to become same side inside market; if there is then enough size on that market, it will join.
<div class="info">
<i class="fa fa-lightbulb-o fa-fw" aria-hidden="true"></i>
This sample is part of the Server SDK examples included in the <a href="/server/getting-started/download/">spark_sdk.zip download</a>.
</div>
```cpp
#include "spark/lib/config/config.h"
#include "spark/lib/config/protos/system.pb.h"
#include "spark/lib/domain_model/Security.h"
#include "spark/lib/orderman/orders/server/IAlgoOrder.h"
#include "spark/lib/orderman/orders/server/IAlgoServices.h"
#include "spark/lib/plugin/SparkServices.h"
#include "spark/lib/orderman/order_factory/IOrderFactory.h"
#include "spark/lib/orderman/orderman_utils/Book.h"
#include "spark/lib/orderman/orderman_utils/orderman_utils.h"
#include "spark/lib/utils/PBUtils.h"
using namespace bts::api::orderman;
using namespace bts::orderman;
namespace bts {
namespace order_example {
// Join starts working N ticks away from the market (usually) and then
// watches for the opposite inside to become same side inside market;
// if there is then enough size on that market, it will join.
class DynamicJoin : public IAlgoOrder {
public:
DynamicJoin();
~DynamicJoin();
OrderOpResult do_before_launch(IBeforeLaunchAlgoServices &) override;
void do_launch(IAlgoServices &) override;
void do_launch_attached(IAlgoServices &, OrderKey, ChildState) override;
void do_update(api::orderman::Update const &) override;
void on_book(SecurityKey, Book const &) override;
void on_child_change(OrderKey, ChildState const &) override;
private:
enum class Status;
struct PImpl;
std::unique_ptr<PImpl> me;
IAlgoServices &algo_services() const;
void try_to_join();
};
// The three stages our algo goes through. We start by waiting to
// observe the book for our security (WAITING_FOR_MD). Once we have a
// book we use it to derive our target price and we continue to
// monitor the book to see if we should join the market
// (WAITING_TO_JOIN). Once the size and price constraints are met we
// jump to the target price (JOINED). We remain in the JOINED state
// until our order is filled or canceled.
enum class DynamicJoin::Status { WAITING_FOR_MD, WAITING_TO_JOIN, JOINED };
// All state information needed for this algo
struct DynamicJoin::PImpl {
IAlgoServices *algo_services;
Quantity min_quantity_to_join;
Status status = Status::WAITING_FOR_MD;
OrderKey child_key = null_order_key();
ChildTemplate *child_template = nullptr;
Book book_at_inception;
Book last_book;
};
DynamicJoin::DynamicJoin() : me(new PImpl()) {}
DynamicJoin::~DynamicJoin() {}
IAlgoServices &DynamicJoin::algo_services() const { return *me->algo_services; }
// This is called outside of the latency sensitive path
// once. Expensive initialization should be done here, rather than
// in do_launch()
OrderOpResult DynamicJoin::do_before_launch(IBeforeLaunchAlgoServices &serv) {
auto &def = serv.definition();
bts_assert(def.has_custom_def());
bts_assert(def.custom_def().has_dynamic());
// Validate our parameters, returning an error if we find a
// problem. If an error is returned here the order will be
// abandoned.
auto &params = def.custom_def().dynamic().order_params();
auto mqi = get_if<uint32_t>(params, "Min Quantity");
if (!mqi || mqi.value() == 0) {
return OrderOpResult{
ORDER_ERROR_INVALID_ORDER_DEFINITON,
"Min Quantity parameter must be defined and non zero"};
}
me->min_quantity_to_join = Quantity(mqi.value());
if (!serv.is_attaching()) {
// If we are not attaching, create a child template so we can
// quickly launch our child when the time comes.
// We will be sending a limit order with the same side,
// security, trader, account, etc, as this algo order, so just
// copy our definition to the child definition to start with.
auto child_def = def;
// Now add a limit order component to mark our child as a limit
// order. Limit orders do not require any extra parameters
// beyond those already inherited from this algo order
// (i.e. beyond what we obtained through serv.definition()) so
// we can just use a default constructed LimitOrderDefinition.
*child_def.mutable_custom_def()->mutable_limit() = LimitOrderDefinition{};
// Now just build the child template and cache it for future use
me->child_template = &(serv.make_child_template(child_def));
} else {
// If we are attaching to an existing order then we do not need
// to spawn a new child, so there is no need to setup a child
// template
}
// All is good, return a default constructed OrderOpResult which
// indicates success.
return {};
}
// Called in the latency sensitive path, once, when the algo is first
// launched.
void DynamicJoin::do_launch(IAlgoServices &services) {
// Cache our algo services
me->algo_services = &services;
LOG(OrderMan, Diag, "Lauching DynamicJoin k: {} ",
algo_services().order_key().value());
// Launch our child order
me->child_key =
services.launch_child(*me->child_template, algo_services().price(),
algo_services().quantity());
// Subscribe to market data
services.subscribe_book(SecurityKey(algo_services().security().id()));
}
// Called in the latency sensitive path, once, when the algo is first
// launched. In this case the algo is provided with an existing order
// it is now responsible for managing.
void DynamicJoin::do_launch_attached(IAlgoServices &services,
OrderKey attached_order, ChildState st) {
// The order was launched and attached to an existing order, with
// key 'attached_order' and current state 'st'
// Cache our algo services
me->algo_services = &services;
LOG(OrderMan, Diag,
"Lauching DynamicJoin k: {} Attached to existing order: {}",
algo_services().order_key().value(), attached_order.value());
// Cache the key of the attached order we will be managing
me->child_key = attached_order;
// Subscribe to market data
services.subscribe_book(SecurityKey(services.security().id()));
// Simulate a child change so we can update our own state to
// reflect that of the child order we attached to. From this point
// forward there is no distinction between an algo instance that
// spawned a new child order and one that attached to an existing
// order.
on_child_change(attached_order, st);
}
// Called when a human (or a supervising algo) updates a parameter for
// this algo. The implementation validates the update and depending on
// the validation outcome either applies the update or terminates the
// algo.
void DynamicJoin::do_update(api::orderman::Update const &update) {
LOG(OrderMan, Diag, "DynamicJoin k: {} receiving update: {}",
algo_services().order_key().value(), utils::pb::to_string(update));
// Validate update
if (update.quantity() == 0) {
// An invalid update has been detected so we terminate the
// algo, signaling an error. Any child orders launched by
// this algo will also be terminated.
algo_services().terminate_error("Invalid update");
return;
}
// Updates have two parts, a standard part consisting of price and
// size and present in all updates, and an optional part that is
// specific to the algo in question. Below we check for the
// existance of this optional part and validate if present.
bool has_new_min_qty = false;
if (update.has_custom()) {
auto &params = update.custom().dynamic().order_params();
auto mqi = params.find("Min Quantity");
if (mqi == params.end() || mqi->second.as_uint32() == 0) {
algo_services().terminate_error(
"Minimum quantity to join must be greater than 0");
return;
}
has_new_min_qty = true;
me->min_quantity_to_join = Quantity(mqi->second.as_uint32());
}
// Update is good, forward it to our child
Update child_update;
child_update.set_price(update.price());
child_update.set_quantity(update.quantity());
algo_services().update_child(me->child_key, child_update);
// Try to join again if conditions changed
if (me->status == Status::WAITING_TO_JOIN && has_new_min_qty)
try_to_join();
}
// Called when the book for the specified security has changed
void DynamicJoin::on_book(SecurityKey, Book const &b) {
// Cache the book, so we can reffer to it in the event of a
// parameter change that might allow us to join
me->last_book = b;
LOG(OrderMan, Diag, "DynamicJoin order {} on book. BID: {}@{} ASK: {}@{}",
algo_services().order_key().value(), b.side(api::SIDE_BUY)[0].size(),
b.side(api::SIDE_BUY)[0].price(), b.side(api::SIDE_SELL)[0].size(),
b.side(api::SIDE_SELL)[0].price());
switch (me->status) {
case Status::WAITING_FOR_MD: {
auto other_side =
securities::other_side(algo_services().definition().side());
auto &other_side_top = me->last_book.side(other_side)[0];
if (other_side_top.size() > 0) {
// First time we get the opposite side market, we will use
// this price as the target price for the join
me->status = Status::WAITING_TO_JOIN;
me->book_at_inception = b;
LOG(OrderMan, Diag,
"JoinOrder order {} receiving first book: {} Target: {}",
algo_services().order_key().value(),
me->min_quantity_to_join.value(), other_side_top.price());
try_to_join();
}
} break;
case Status::JOINED:
// Nothing to do at this point
break;
case Status::WAITING_TO_JOIN:
// Check if we reached the target and join if so
try_to_join();
break;
}
}
// Given the current book, our target price and our min quantity
// parameter, join if appropriate
void DynamicJoin::try_to_join() {
bts_assert(me->status == Status::WAITING_TO_JOIN);
auto my_side = algo_services().definition().side();
auto other_side = securities::other_side(my_side);
auto &my_side_psz = me->last_book.side(my_side)[0];
auto &opposite_at_inception_psz = me->book_at_inception.side(other_side)[0];
if (my_side_psz.size() &&
my_side_psz.size() >= me->min_quantity_to_join.value() &&
securities::is_equal_or_better(
my_side, Price(my_side_psz.price()),
Price(opposite_at_inception_psz.price()))) {
// Time to update our child to join the market
Update child_update;
child_update.set_price(my_side_psz.price());
child_update.set_quantity(algo_services().quantity().value());
algo_services().update_child(me->child_key, child_update);
me->status = Status::JOINED;
LOG(OrderMan, Diag, "DynamicJoin order {} joined: {}@{}",
algo_services().order_key().value(),
algo_services().quantity().value(), my_side_psz.price());
} else {
LOG(OrderMan, Diag,
"JoinOrder order {} still waiting to join. Order: {}@{} Top of "
"the book: {}@{} Target: {}@{}",
algo_services().order_key().value(),
algo_services().quantity().value(), algo_services().price().value(),
my_side_psz.size(), my_side_psz.price(),
me->min_quantity_to_join.value(), opposite_at_inception_psz.price());
}
}
// Our child reported a change:
void DynamicJoin::on_child_change(OrderKey, ChildState const &st) {
// Our fill quantity and price is always a reflection of our
// child's state
algo_services().update_fill_state(st.total_fills, st.last_price);
switch (st.status) {
case ChildStatus::WORKING:
// Child order is still working, nothing to do
return;
case ChildStatus::COMPLETED:
// Child order completed, we should also complete
algo_services().complete();
return;
case ChildStatus::CANCELED:
// Child order unexpectedly canceled, signal an error and
// terminate
algo_services().terminate_error("Unexpected child cancel");
return;
}
}
// This is called by the spark daemon at startup. In this call we
// describe our algo's parameters and register a factory function to
// create an instance of the algo.
extern "C" void init_spark_plugin(bts::SparkServices &serv) {
using namespace bts;
DynamicOrderDescriptor join_desc;
// Start by naming our order type
join_desc.set_dynamic_order_type("dyn join");
// Now add a single unsigned int parameter, Min Quantity, that will
// determine the minimum quantity that must exist in the book in
// order for us to join the market.
*join_desc.add_param_desc() = param_uint32("Min Quantity");
// Associate the descriptor with a builder function and register
// that with the Spark server.
auto result =
serv.register_dynamic_algo_order(
join_desc, []() { return std::make_unique<DynamicJoin>(); });
if (result != bts::AlgoRegistrationResult::SUCCESS) {
// The join_desc has errors
// Check the error log for more details
}
}
} // namespace order_example
} // namespace bts
```
+146
View File
@@ -0,0 +1,146 @@
+++
title = "Template"
weight = 5
+++
A mostly blank Algo template that can be used as a jump-start for developing a new Algo.
<div class="info">
<i class="fa fa-lightbulb-o fa-fw" aria-hidden="true"></i>
This sample is part of the Server SDK examples included in the <a href="/server/getting-started/download/">spark_sdk.zip download</a>.
</div>
```cpp
#include "spark/lib/config/config.h"
#include "spark/lib/config/protos/system.pb.h"
#include "spark/lib/domain_model/Security.h"
#include "spark/lib/orderman/orders/algo/IAlgoOrder.h"
#include "spark/lib/orderman/orders/algo/IAlgoServices.h"
#include "spark/lib/plugin/SparkServices.h"
#include "spark/lib/orderman/order_factory/IOrderFactory.h"
#include "spark/lib/orderman/orderman_utils/Book.h"
#include "spark/lib/orderman/orderman_utils/orderman_utils.h"
#include "spark/lib/utils/PBUtils.h"
using namespace bts::api::orderman;
using namespace bts::orderman;
namespace bts {
namespace order_example {
// MyAlgo is a blank IAlgoOrder which you can copy when starting a new Algo
class MyAlgo : public IAlgoOrder {
public:
MyAlgo();
~MyAlgo();
OrderOpResult do_before_launch(IBeforeLaunchAlgoServices &) override;
void do_launch(IAlgoServices &) override;
void do_launch_attached(IAlgoServices &, OrderKey, ChildState) override;
void do_update(api::orderman::Update const &) override;
void on_book(SecurityKey, Book const &) override;
void on_child_change(OrderKey, ChildState const &) override;
private:
IAlgoServices* algo_services;
ChildTemplate *child_template = nullptr;
OrderKey child_key = null_order_key();
};
MyAlgo::MyAlgo() : algo_services(nullptr) {}
MyAlgo::~MyAlgo() {}
// This is called outside of the latency sensitive path.
// Expensive initialization should be done here, rather than in do_launch()
OrderOpResult MyAlgo::do_before_launch(IBeforeLaunchAlgoServices &serv) {
LOG(Sdk,Info, "MyAlgo: do_before_launch");
// If we are not attaching, create a child template so we can
// quickly launch our child when the time comes.
if (!serv.is_attaching()) {
// We will be sending a limit order with the same side,
// security, trader, account, etc, as this algo order, so just
// copy our definition to the child definition to start with.
auto child_def = serv.definition();
// Now add a limit order component to mark our child as a limit
// order. Limit orders do not require any extra parameters
// beyond those already inherited from this algo order
// (i.e. beyond what we obtained through serv.definition()) so
// we can just use a default constructed LimitOrderDefinition.
*child_def.mutable_custom_def()->mutable_limit() = LimitOrderDefinition{};
// Now just build the child template and cache it for future use
child_template = &(serv.make_child_template(child_def));
}
// Default constructed result is successful
return {};
}
// Called in the latency sensitive path, once, when the algo is first launched.
// If the Algo is attaching to an existing order do_launch_attached is called instead.
void MyAlgo::do_launch(IAlgoServices &services) {
algo_services = &services;
// Subscribe to book updates for this security
services.subscribe_book(SecurityKey(services.security().id()));
// Launch a child limit order
child_key =
services.launch_child(*child_template, services.price(), services.quantity());
LOG(Sdk,Info, "MyAlgo: do_launch");
}
// Called in the latency sensitive path, once, when the algo is first
// launched. In this case the algo is provided with an existing order
// it is now responsible for managing.
void MyAlgo::do_launch_attached(IAlgoServices &services,
OrderKey attached_order, ChildState st) {
algo_services = &services;
// Subscribe to book updates for this security
services.subscribe_book(SecurityKey(services.security().id()));
// Keep track of the child key
child_key = attached_order;
LOG(Sdk,Info, "MyAlgo: do_launch_attached");
}
// Called when a human (or a supervising algo) updates a parameter for
// this algo. The implementation validates the update and depending on
// the validation outcome either applies the update or terminates the algo.
void MyAlgo::do_update(api::orderman::Update const &update) {
}
// Called when the book for the specified security has changed
void MyAlgo::on_book(SecurityKey, Book const &b) {
}
// Our child reported a change
void MyAlgo::on_child_change(OrderKey, ChildState const &st) {
}
// This is called by the spark daemon at startup. In this call we
// describe our algo's parameters and register a factory function to
// create an instance of the algo.
extern "C" void init_spark_plugin(bts::SparkServices &serv) {
using namespace bts;
DynamicOrderDescriptor desc;
// Start by naming our order type
desc.set_dynamic_order_type("My Algo");
*desc.add_param_desc() = param_bool("Enable Feature");
*desc.add_param_desc() = param_uint32("Feature Quantity");
// Associate the descriptor with a builder function and register
// that with the Spark server.
auto result =
serv.register_dynamic_algo_order(
desc, []() { return std::make_unique<MyAlgo>(); });
if (result != bts::AlgoRegistrationResult::SUCCESS) {
// The desc has errors
// Check the error log (/sparkdata/data/logging/log) for more details
}
}
} // namespace order_example
} // namespace bts
```
+9
View File
@@ -0,0 +1,9 @@
#/bin/bash
# ../../externals/linux/bin/zola/zola build
zola.exe build
rsync -avzL public/ bts@api.bluetradesys.com:/data/sdk/public/
rm -rf ./public/
+97
View File
@@ -0,0 +1,97 @@
html, body {
font-size: 16px;
height: 100%;
}
body {
font-family: "Source Sans Pro", "Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;
line-height: 1.6;
// from http://www.heropatterns.com
background-color: #0072a2;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100'%3E%3Cg fill-rule='evenodd'%3E%3Cg fill='%234b4b4b' fill-opacity='0.4'%3E%3Cpath opacity='.5' d='M96 95h4v1h-4v4h-1v-4h-9v4h-1v-4h-9v4h-1v-4h-9v4h-1v-4h-9v4h-1v-4h-9v4h-1v-4h-9v4h-1v-4h-9v4h-1v-4h-9v4h-1v-4H0v-1h15v-9H0v-1h15v-9H0v-1h15v-9H0v-1h15v-9H0v-1h15v-9H0v-1h15v-9H0v-1h15v-9H0v-1h15v-9H0v-1h15V0h1v15h9V0h1v15h9V0h1v15h9V0h1v15h9V0h1v15h9V0h1v15h9V0h1v15h9V0h1v15h9V0h1v15h4v1h-4v9h4v1h-4v9h4v1h-4v9h4v1h-4v9h4v1h-4v9h4v1h-4v9h4v1h-4v9h4v1h-4v9zm-1 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-9-10h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm9-10v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-9-10h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm9-10v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-9-10h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm9-10v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-9-10h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9z'/%3E%3Cpath d='M6 5V0H5v5H0v1h5v94h1V6h94V5H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
color: $foreground;
// for sticky footer
display: flex;
flex-direction: column;
min-height: 100vh;
}
a {
color: $link-color;
text-decoration: none;
cursor: pointer;
border-bottom: 1px solid rgba(0, 124, 188, 0.25);
&:hover {
border-bottom: 1px solid $link-color;
}
&:visited {
color: $link-color;
}
// totally taken from stripe
&.button {
outline: none;
white-space: nowrap;
display: inline-block;
height: 40px;
line-height: 40px;
padding: 0 14px;
box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08);
background: #fff;
border-radius: 4px;
font-size: 15px;
font-weight: 600;
text-transform: uppercase;
letter-spacing: .025em;
color: #191919;
text-decoration: none;
transition: all .15s ease;
border-bottom: none;
&:hover {
transform: translateY(-1px);
text-decoration: none;
box-shadow: 0 7px 14px rgba(50, 50, 93, 0.1), 0 3px 6px rgba(0, 0, 0, 0.08);
}
&:active {
background-color: #f6f9fc;
transform: translateY(1px);
}
}
&.white {
color: white;
border-bottom-color: rgba(255, 255, 255, 0.25);
&:hover {
border-bottom-color: white;
}
&:visited {
color: white;
}
}
}
pre {
padding: 1rem;
overflow: auto;
}
p code, li code {
// color: #e6e1dc;
// background-color: #383838;
color: #191919;
background-color: #f5f5f5;
white-space: pre-wrap;
padding: 3px;
border-radius: 3px;
font-size: 0.85rem;
font-family: monospace;
// box-shadow: 0 1px 3px rgba(0,0,0,.1), 0 1px 1px rgba(0,0,0,.1), 0 2px 1px -1px rgba(0,0,0,.12);
}
+96
View File
@@ -0,0 +1,96 @@
.documentation {
padding: 3rem;
display: flex;
&__sidebar {
margin-right: 2rem;
ul {
padding-left: 0;
list-style: none;
}
> ul {
> li {
margin-bottom: 1rem;
}
.documentation__sidebar__title {
font-size: 1.25rem;
font-weight: bold;
}
ul {
margin-top: 0.25rem;
li {
border-left: 1px solid $background;
padding-left: 0.75rem;
padding-top: 0.25rem;
padding-bottom: 0.25rem;
}
li.active a {
font-weight: bold;
border-bottom: 1px solid $link-color;
}
}
}
}
&__content {
width: 60%;
// Same as the anchor absolute left to not overlap
margin-left: 2rem;
h1, h2, h3, h4, h5, h6 {
.zola-anchor {
font-size: 1.25rem;
visibility: hidden;
margin-left: -2rem;
text-decoration: none;
border-bottom-color: transparent;
cursor: pointer;
}
&:hover {
.zola-anchor {
visibility: visible;
}
}
}
blockquote {
border-left: 10px solid black;
padding: 0.25rem 0.5rem;
margin-left: 0;
font-style: italic;
}
}
iframe {
width: 100%;
min-height: 400px;
}
}
@media only screen and (max-width: 1000px) {
.documentation {
flex-direction: column;
padding: 2rem;
&__content {
width: 100%;
margin-left: 0;
}
&__sidebar {
border-top: 1px solid $background;
order: 1;
margin-right: 0;
margin-top: 1rem;
}
}
}
+33
View File
@@ -0,0 +1,33 @@
header {
.header__logo {
border-bottom: none;
}
nav a {
margin-right: 2rem;
}
.header__logo {
font-size: 2rem;
font-weight: bold;
&:hover {
text-decoration: none;
}
}
}
@media only screen and (max-width: 1000px) {
header {
padding: 1rem 0;
nav {
text-align: center;
}
.header__logo {
// to force menu links to be on a line below
display: block;
}
}
}
+71
View File
@@ -0,0 +1,71 @@
.inverted-colours {
background: $foreground;
color: $background;
}
.hero {
width: 60%;
margin: 0 auto;
margin-top: 2rem;
margin-bottom: 4rem;
text-align: center;
&__tagline {
margin-bottom: 2rem;
}
}
.disabled {
opacity: 0.5;
}
.selling-points {
padding: 3rem;
&__content {
display: flex;
flex-wrap: wrap;
}
}
.selling-point {
// 2 selling points per row on desktop
width: 50%;
padding: 2rem;
padding-top: 1rem;
}
.selling-header {
width: 100%;
padding: 1rem;
padding-top: 0rem;
display: flex;
align-items: center;
justify-content: center;
img {
align-self: center;
max-width: 70%;
}
}
// and 1 on mobile
@media only screen and (max-width: 1000px) {
.hero {
width: 90%;
margin-top: 2rem;
margin-bottom: 4rem;
}
.selling-points {
padding: 2rem;
}
.selling-point {
width: 100%;
padding: 1rem;
h2 {
text-align: center;
}
}
}
+43
View File
@@ -0,0 +1,43 @@
header {
padding: 2rem 3rem;
}
.container {
max-width: 1000px;
margin: 0 auto;
}
@media only screen and (max-width: 1000px) {
.container {
max-width: 90%;
}
}
.content {
flex-grow: 1;
&--reversed {
background: $foreground;
color: $background;
}
}
.linux {
padding: 25px 15px;
background: #eff0f1;
border-radius: 5px;
border: 1px solid #0072a2;
}
.info {
padding: 25px 15px;
background: #ffffe0;
border-radius: 5px;
border: 1px solid #383838;
}
footer {
text-align: center;
padding: 2rem 3rem;
}
+447
View File
@@ -0,0 +1,447 @@
/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */
/* Document
========================================================================== */
/**
* 1. Correct the line height in all browsers.
* 2. Prevent adjustments of font size after orientation changes in
* IE on Windows Phone and in iOS.
*/
html {
line-height: 1.15; /* 1 */
-ms-text-size-adjust: 100%; /* 2 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/* Sections
========================================================================== */
/**
* Remove the margin in all browsers (opinionated).
*/
body {
margin: 0;
}
/**
* Add the correct display in IE 9-.
*/
article,
aside,
footer,
header,
nav,
section {
display: block;
}
/**
* Correct the font size and margin on `h1` elements within `section` and
* `article` contexts in Chrome, Firefox, and Safari.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/* Grouping content
========================================================================== */
/**
* Add the correct display in IE 9-.
* 1. Add the correct display in IE.
*/
figcaption,
figure,
main { /* 1 */
display: block;
}
/**
* Add the correct margin in IE 8.
*/
figure {
margin: 1em 40px;
}
/**
* 1. Add the correct box sizing in Firefox.
* 2. Show the overflow in Edge and IE.
*/
hr {
box-sizing: content-box; /* 1 */
height: 0; /* 1 */
overflow: visible; /* 2 */
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
pre {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/* Text-level semantics
========================================================================== */
/**
* 1. Remove the gray background on active links in IE 10.
* 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
*/
a {
background-color: transparent; /* 1 */
-webkit-text-decoration-skip: objects; /* 2 */
}
/**
* 1. Remove the bottom border in Chrome 57- and Firefox 39-.
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
*/
abbr[title] {
border-bottom: none; /* 1 */
text-decoration: underline; /* 2 */
text-decoration: underline dotted; /* 2 */
}
/**
* Prevent the duplicate application of `bolder` by the next rule in Safari 6.
*/
b,
strong {
font-weight: inherit;
}
/**
* Add the correct font weight in Chrome, Edge, and Safari.
*/
b,
strong {
font-weight: bolder;
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
code,
kbd,
samp {
font-family: monospace, monospace; /* 1 */
font-size: 1em; /* 2 */
}
/**
* Add the correct font style in Android 4.3-.
*/
dfn {
font-style: italic;
}
/**
* Add the correct background and color in IE 9-.
*/
mark {
background-color: #ff0;
color: #000;
}
/**
* Add the correct font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` elements from affecting the line height in
* all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/* Embedded content
========================================================================== */
/**
* Add the correct display in IE 9-.
*/
audio,
video {
display: inline-block;
}
/**
* Add the correct display in iOS 4-7.
*/
audio:not([controls]) {
display: none;
height: 0;
}
/**
* Remove the border on images inside links in IE 10-.
*/
img {
border-style: none;
}
/**
* Hide the overflow in IE.
*/
svg:not(:root) {
overflow: hidden;
}
/* Forms
========================================================================== */
/**
* 1. Change the font styles in all browsers (opinionated).
* 2. Remove the margin in Firefox and Safari.
*/
button,
input,
optgroup,
select,
textarea {
font-family: sans-serif; /* 1 */
font-size: 100%; /* 1 */
line-height: 1.15; /* 1 */
margin: 0; /* 2 */
}
/**
* Show the overflow in IE.
* 1. Show the overflow in Edge.
*/
button,
input { /* 1 */
overflow: visible;
}
/**
* Remove the inheritance of text transform in Edge, Firefox, and IE.
* 1. Remove the inheritance of text transform in Firefox.
*/
button,
select { /* 1 */
text-transform: none;
}
/**
* 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
* controls in Android 4.
* 2. Correct the inability to style clickable types in iOS and Safari.
*/
button,
html [type="button"], /* 1 */
[type="reset"],
[type="submit"] {
-webkit-appearance: button; /* 2 */
}
/**
* Remove the inner border and padding in Firefox.
*/
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
border-style: none;
padding: 0;
}
/**
* Restore the focus styles unset by the previous rule.
*/
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
outline: 1px dotted ButtonText;
}
/**
* Correct the padding in Firefox.
*/
fieldset {
padding: 0.35em 0.75em 0.625em;
}
/**
* 1. Correct the text wrapping in Edge and IE.
* 2. Correct the color inheritance from `fieldset` elements in IE.
* 3. Remove the padding so developers are not caught out when they zero out
* `fieldset` elements in all browsers.
*/
legend {
box-sizing: border-box; /* 1 */
color: inherit; /* 2 */
display: table; /* 1 */
max-width: 100%; /* 1 */
padding: 0; /* 3 */
white-space: normal; /* 1 */
}
/**
* 1. Add the correct display in IE 9-.
* 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.
*/
progress {
display: inline-block; /* 1 */
vertical-align: baseline; /* 2 */
}
/**
* Remove the default vertical scrollbar in IE.
*/
textarea {
overflow: auto;
}
/**
* 1. Add the correct box sizing in IE 10-.
* 2. Remove the padding in IE 10-.
*/
[type="checkbox"],
[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* Correct the cursor style of increment and decrement buttons in Chrome.
*/
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
/**
* 1. Correct the odd appearance in Chrome and Safari.
* 2. Correct the outline style in Safari.
*/
[type="search"] {
-webkit-appearance: textfield; /* 1 */
outline-offset: -2px; /* 2 */
}
/**
* Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
*/
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* 1. Correct the inability to style clickable types in iOS and Safari.
* 2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
-webkit-appearance: button; /* 1 */
font: inherit; /* 2 */
}
/* Interactive
========================================================================== */
/*
* Add the correct display in IE 9-.
* 1. Add the correct display in Edge, IE, and Firefox.
*/
details, /* 1 */
menu {
display: block;
}
/*
* Add the correct display in all browsers.
*/
summary {
display: list-item;
}
/* Scripting
========================================================================== */
/**
* Add the correct display in IE 9-.
*/
canvas {
display: inline-block;
}
/**
* Add the correct display in IE.
*/
template {
display: none;
}
/* Hidden
========================================================================== */
/**
* Add the correct display in IE 10-.
*/
[hidden] {
display: none;
}
+47
View File
@@ -0,0 +1,47 @@
.search-container {
display: inline-block;
position: relative;
width: 300px;
input {
width: 100%;
padding: 0.5rem;
}
}
.search-results {
display: none;
position: absolute;
background: white;
color: black;
padding: 1rem;
box-shadow: 2px 2px 2px 0 rgba(0, 0, 0, 0.5);
max-height: 500px;
overflow: auto;
width: 150%;
right: 0;
&__items {
list-style: none;
}
li {
margin-top: 1rem;
border-bottom: 1px solid #ccc;
font-size: 0.9rem;
&:first-of-type {
margin-top: 0;
}
}
&__item {
margin-bottom: 1rem;
a {
font-size: 1.2rem;
display: inline-block;
margin-bottom: 0.5rem;
}
}
}
+79
View File
@@ -0,0 +1,79 @@
.themes-container {
padding: 3rem;
width: 80%;
margin: 0 auto;
img {
max-width: 100%;
}
}
@media only screen and (max-width: 1000px) {
.themes-container {
width: 100%;
margin: 0 1rem;
}
}
.themes {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.theme {
width: 45%;
text-decoration: none;
cursor: pointer;
margin-bottom: 2rem;
border-bottom: none;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
padding: 10px;
img {
width: 100%;
height: 90%;
}
span {
display: block;
text-align: center;
font-size: 1.1rem;
}
}
}
.theme-info {
display: flex;
align-items: flex-start;
.thumb {
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07);
width: 400px;
margin-right: 2rem;
}
h1, p {
margin: 0;
}
padding: 1rem;
}
@media only screen and (max-width: 1000px) {
.themes .theme {
width: 100%;
}
}
@media only screen and (max-width: 1000px) {
.theme-info {
flex-direction: column;
align-items: center;
img {
margin-bottom: 1rem;
}
}
}
+19
View File
@@ -0,0 +1,19 @@
@charset "utf-8";
@import "normalize";
*, *:before, *:after {
box-sizing: border-box;
}
$background: #191919;
$foreground: white;
$link-color: #007CBC;
@import "base";
@import "layout";
@import "header";
@import "index";
@import "docs";
@import "themes";
@import "search";
File renamed without changes.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

+2
View File
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg enable-background="new 0 0 523.438 166.055" version="1.1" viewBox="0 0 523.44 166.06" xmlns="http://www.w3.org/2000/svg"><path d="m297.43 153.29c-18.051-6.698-91.506-40.523-160.87-72.832-69.291-32.28-134.17-62.929-134.17-62.929-2.082-0.983-2.971-3.466-1.987-5.549 0.981-2.079 3.466-2.97 5.548-1.988 0.037 0.02 16.216 7.661 41.09 19.354 24.874 11.695 58.412 27.425 93.046 43.557 69.192 32.242 143.09 66.232 160.25 72.574 20.188 7.443 37.922 12.204 80.113 12.239 30.434 0 73.407-2.559 138.44-8.568 2.288-0.211 4.319 1.474 4.531 3.765 0.208 2.29-1.478 4.324-3.771 4.536-65.152 6.014-108.31 8.602-139.2 8.605h-0.423c-42.393-1e-3 -61.964-5.092-82.59-12.764z" fill="#B3B3B3"/><path d="m45.824 145.9v-138.39h101.28c27.03 0 44.924 12.184 44.924 35.789 0 17.513-8.947 26.27-19.226 29.506 12.564 3.996 21.702 15.039 21.702 31.22 0 25.319-17.516 41.88-44.545 41.88h-104.13zm41.692-60.155v-20.37h59.774c13.707 0 20.179-4.758 20.179-16.751 0-14.658-11.613-16.943-29.507-16.943h-67.96v90.234h70.052c17.325 0 29.889-4.759 29.889-18.276 0-11.423-7.423-17.894-20.939-17.894h-61.488z" fill="#0086BF"/><path d="m149.96 153.4h-104.13v-7.502h7.501-7.501v7.502h-7.504v-153.4h108.78c14.604 0.018 27.473 3.236 37.154 10.583 9.724 7.301 15.384 19.035 15.273 32.71 0.018 10.01-2.623 18.337-7.222 24.554-1.308 1.779-2.755 3.368-4.306 4.774 2.395 1.964 4.557 4.235 6.422 6.792 4.847 6.626 7.594 15.107 7.58 24.606 0.044 14.363-5.105 27.096-14.494 35.896-9.347 8.809-22.486 13.486-37.463 13.486-0.028 1e-3 -0.058 1e-3 -0.088 1e-3zm0-15.007c12.016-0.018 21.114-3.62 27.266-9.402 6.125-5.814 9.736-14.02 9.777-24.973-0.015-6.687-1.835-11.817-4.698-15.757-2.875-3.934-6.891-6.753-11.775-8.315l-22.267-7.085c-0.322 7e-3 -0.645 0.011-0.97 0.012h-52.271v5.367h53.988c7.892 0 15.036 1.876 20.422 6.475 5.429 4.589 8.092 11.651 8.015 18.922 0.016 4.524-1.103 8.88-3.35 12.497-2.236 3.632-5.46 6.38-9.02 8.3-7.172 3.825-15.677 4.938-25.019 4.979h-77.553v-105.24h75.46c6.958 0.014 13.253 0.288 19.035 1.724 5.677 1.383 11.425 4.37 14.807 10.025 2.23 3.702 3.174 8.068 3.171 12.698-5e-3 3.663-0.489 7.129-1.729 10.368-1.045 2.753-2.714 5.301-4.853 7.329l2.154-0.677c3.906-1.243 7.213-3.358 9.68-6.692 2.445-3.351 4.276-8.156 4.297-15.657-0.111-9.936-3.399-16.094-9.377-20.786-6.028-4.645-15.62-7.52-28.046-7.501l-93.773-3e-3v123.39h96.629v-1e-3zm-72.453-23.984h62.551c5.981 0.011 11.112-0.651 14.744-1.85 3.688-1.218 5.575-2.753 6.528-4.306 0.647-1.077 1.099-2.388 1.113-4.618-0.073-4.151-1.124-6.039-2.785-7.541-1.701-1.492-5.034-2.853-10.648-2.853h-61.49v-7.501h7.501-7.501v7.501h-7.504v-35.372h67.277c4.502 0.018 7.602-0.643 9.234-1.431 1.634-0.854 2.056-1.329 2.718-2.838 0.402-1.025 0.728-2.648 0.728-4.979-0.01-2.704-0.518-4.121-1.023-4.967-0.526-0.837-1.154-1.457-2.696-2.209-3.023-1.521-9.667-2.335-18.288-2.268h-60.459v75.232z" fill="#fff"/><path d="M251.22,145.899V31.68h-52.54V7.505h129.256V31.68h-52.539v114.22H251.22z" fill="#0086BF"/><path d="m251.22 153.4v-7.499h7.501-7.501v7.499h-7.504l-2e-3 -114.22h-52.538v-39.175h144.26v39.175h-52.541v114.22h-31.678zm16.673-15.001v-114.22h52.538v-9.171h-114.25v9.171h52.542v114.22h9.171v-1e-3z" fill="#fff"/><path d="m340.11 145.9v-24.176h103.74c12.942 0 20.177-7.233 20.177-18.083 0-11.802-7.234-17.893-20.177-17.893h-63.58c-26.075 0-42.257-16.562-42.257-39.404 0-22.271 15.038-38.831 42.639-38.831h99.365v24.174h-99.365c-11.042 0-17.514 6.473-17.514 16.94 0 10.469 6.661 16.751 17.324 16.751h63.388c27.98 0 43.02 13.134 43.02 39.974 0 23.226-14.089 40.546-43.02 40.546h-103.74z" fill="#383431"/><path d="m443.85 153.4h-103.74v-7.499h7.498-7.498v7.499h-7.505v-39.176h111.25c5.118-0.02 8.116-1.385 9.849-2.984 1.71-1.622 2.774-3.8 2.823-7.597-0.071-4.45-1.162-6.342-2.67-7.727-1.55-1.385-4.646-2.668-10.002-2.668h-63.58c-14.603 0.028-27.235-4.711-36.097-13.218-8.89-8.476-13.698-20.511-13.666-33.685-0.032-12.792 4.428-24.712 13.274-33.177 8.826-8.496 21.605-13.184 36.87-13.155h106.86v39.176h-106.86c-4.11 0.028-6.327 1.125-7.658 2.411-1.313 1.309-2.315 3.29-2.354 7.027 0.043 3.691 1.042 5.592 2.354 6.89 1.338 1.278 3.562 2.338 7.469 2.36h63.388c15.081-7e-3 27.896 3.536 37.065 11.888 9.185 8.367 13.511 20.865 13.455 35.59 0.022 13.078-4.037 25.357-12.824 34.248-8.729 8.882-21.678 13.796-37.497 13.796-0.066 1e-3 -0.135 1e-3 -0.2 1e-3zm-96.246-14.999 96.246-4e-3c13.017-0.037 21.505-3.779 27.018-9.329 5.488-5.576 8.475-13.569 8.494-23.712-0.052-12.118-3.246-19.606-8.572-24.519-5.35-4.923-14.046-7.951-26.939-7.956h-63.388c-6.76 0.022-13.199-2.056-17.858-6.541-4.686-4.459-7.014-10.932-6.972-17.712-0.038-6.729 2.191-13.218 6.88-17.764 4.659-4.564 11.2-6.707 18.14-6.678h91.856v-9.174l-91.856 4e-3c-12.341 0.026-20.88 3.617-26.474 8.971-5.574 5.382-8.632 12.875-8.667 22.358 0.035 9.665 3.317 17.334 9.038 22.85 5.746 5.486 14.244 9.029 25.721 9.049h63.58c7.58 0 14.573 1.767 19.88 6.38 5.34 4.606 7.87 11.665 7.799 19.018 0.048 7.05-2.504 13.916-7.652 18.62-5.117 4.73-12.205 6.982-20.026 6.965l-96.246-6e-3v9.18h-2e-3z" fill="#fff"/><path d="m45.824 145.9v-138.39h101.27c6Line truncated

After

Width:  |  Height:  |  Size: 7.6 KiB

+180
View File
@@ -0,0 +1,180 @@
function debounce(func, wait) {
var timeout;
return function () {
var context = this;
var args = arguments;
clearTimeout(timeout);
timeout = setTimeout(function () {
timeout = null;
func.apply(context, args);
}, wait);
};
}
// Taken from mdbook
// The strategy is as follows:
// First, assign a value to each word in the document:
// Words that correspond to search terms (stemmer aware): 40
// Normal words: 2
// First word in a sentence: 8
// Then use a sliding window with a constant number of words and count the
// sum of the values of the words within the window. Then use the window that got the
// maximum sum. If there are multiple maximas, then get the last one.
// Enclose the terms in <b>.
function makeTeaser(body, terms) {
var TERM_WEIGHT = 40;
var NORMAL_WORD_WEIGHT = 2;
var FIRST_WORD_WEIGHT = 8;
var TEASER_MAX_WORDS = 30;
var stemmedTerms = terms.map(function (w) {
return elasticlunr.stemmer(w.toLowerCase());
});
var termFound = false;
var index = 0;
var weighted = []; // contains elements of ["word", weight, index_in_document]
// split in sentences, then words
var sentences = body.toLowerCase().split(". ");
for (var i in sentences) {
var words = sentences[i].split(" ");
var value = FIRST_WORD_WEIGHT;
for (var j in words) {
var word = words[j];
if (word.length > 0) {
for (var k in stemmedTerms) {
if (elasticlunr.stemmer(word).startsWith(stemmedTerms[k])) {
value = TERM_WEIGHT;
termFound = true;
}
}
weighted.push([word, value, index]);
value = NORMAL_WORD_WEIGHT;
}
index += word.length;
index += 1; // ' ' or '.' if last word in sentence
}
index += 1; // because we split at a two-char boundary '. '
}
if (weighted.length === 0) {
return body;
}
var windowWeights = [];
var windowSize = Math.min(weighted.length, TEASER_MAX_WORDS);
// We add a window with all the weights first
var curSum = 0;
for (var i = 0; i < windowSize; i++) {
curSum += weighted[i][1];
}
windowWeights.push(curSum);
for (var i = 0; i < weighted.length - windowSize; i++) {
curSum -= weighted[i][1];
curSum += weighted[i + windowSize][1];
windowWeights.push(curSum);
}
// If we didn't find the term, just pick the first window
var maxSumIndex = 0;
if (termFound) {
var maxFound = 0;
// backwards
for (var i = windowWeights.length - 1; i >= 0; i--) {
if (windowWeights[i] > maxFound) {
maxFound = windowWeights[i];
maxSumIndex = i;
}
}
}
var teaser = [];
var startIndex = weighted[maxSumIndex][2];
for (var i = maxSumIndex; i < maxSumIndex + windowSize; i++) {
var word = weighted[i];
if (startIndex < word[2]) {
// missing text from index to start of `word`
teaser.push(body.substring(startIndex, word[2]));
startIndex = word[2];
}
// add <em/> around search terms
if (word[1] === TERM_WEIGHT) {
teaser.push("<b>");
}
startIndex = word[2] + word[0].length;
teaser.push(body.substring(word[2], startIndex));
if (word[1] === TERM_WEIGHT) {
teaser.push("</b>");
}
}
teaser.push("…");
return teaser.join("");
}
function formatSearchResultItem(item, terms) {
return '<div class="search-results__item">'
+ `<a href="${item.ref}">${item.doc.title}</a>`
+ `<div>${makeTeaser(item.doc.body, terms)}</div>`
+ '</div>';
}
function initSearch() {
var $searchInput = document.getElementById("search");
var $searchResults = document.querySelector(".search-results");
var $searchResultsItems = document.querySelector(".search-results__items");
var MAX_ITEMS = 10;
var options = {
bool: "AND",
fields: {
title: {boost: 2},
body: {boost: 1},
}
};
var currentTerm = "";
var index = elasticlunr.Index.load(window.searchIndex);
$searchInput.addEventListener("keyup", debounce(function() {
var term = $searchInput.value.trim();
if (term === currentTerm || !index) {
return;
}
$searchResults.style.display = term === "" ? "none" : "block";
$searchResultsItems.innerHTML = "";
if (term === "") {
return;
}
var results = index.search(term, options);
if (results.length === 0) {
$searchResults.style.display = "none";
return;
}
currentTerm = term;
for (var i = 0; i < Math.min(results.length, MAX_ITEMS); i++) {
var item = document.createElement("li");
item.innerHTML = formatSearchResultItem(results[i], term.split(" "));
$searchResultsItems.appendChild(item);
}
}, 150));
}
if (document.readyState === "complete" ||
(document.readyState !== "loading" && !document.documentElement.doScroll)
) {
initSearch();
} else {
document.addEventListener("DOMContentLoaded", initSearch);
}
+101
View File
@@ -0,0 +1,101 @@
<!DOCTYPE html>
<html lang="en-us">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="apple-mobile-web-app-capable" content="yes">
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600" rel="stylesheet" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="{% block description %}{{ config.description }}{% endblock description %}">
<meta name="keywords" content="Futures, Options, Derivatives, Trade, Trading, Professional, options trading, futures trading, Software, API, SDK" />
<meta name="rights" content="© Blue Trading Systems" />
<meta name="author" content="{{ config.extra.author }}">
<title>{% block title %}{{ config.title }}{% endblock title %}</title>
<link rel="stylesheet" href="{{ get_url(path="site.css") }}"/>
<link rel="icon" href="{{ get_url(path="favicon.ico") }}">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<script> dataLayer = [{ 'visitorType': 'geek' }]; </script>
</head>
<body>
<header>
<nav class="{% block extra_nav_class %}container{% endblock extra_nav_class %}">
<a class="header__logo white" href="{{ config.base_url }}">
<img width="100" src="/images/logo.svg">
</a>
<a class="white" href="{{ get_url(path="@/server/_index.md") }}" class="nav-link">Server SDK</a>
<a class="white" href="{{ get_url(path="@/client/_index.md") }}" class="nav-link">Client SDK</a>
<a class="white" href="https://www.bluetradingsystems.com/bts-spark" class="nav-link">About Spark</a>
<div class="search-container">
<input id="search" type="search" placeholder="🔎 Search">
<div class="search-results">
<div class="search-results__items"></div>
</div>
</div>
</nav>
</header>
<div class="content content--reversed">
{% block content %}
<div class="hero">
<h1>Spark SDK</h1>
<p class="hero__tagline">
Spark consists of a client UI
(<a href="https://www.bluetradingsystems.com/bts-spark#ladder-algo-screen">Spark Client</a>),
a high-performance professional futures front end, connected via our proprietary protocol over TCP to our Spark Server, which in turn connects to execution venues via their native protocols.
Use the Spark SDK to extend Spark Server with your custom Algos, then use the Client SDK to launch and control them.
</p>
</div>
<div class="inverted-colours selling-points">
<div class="selling-points__content container">
<div class="selling-header">
<img src="/images/API.png" width="100%" />
</div>
<div class="selling-point">
<h2>
Server SDK
<i class="fa fa-tachometer" aria-hidden="true"></i>
</h2>
<p>
Leverage the ultra-low latency Spark C++ API to develop and run your custom Algo. Have your first sub-10 microsecond trading algorithm running in under an hour.
</p>
<a href="{{ get_url(path="@/server/_index.md") }}" class="button">Get started</a>
</div>
<div class="selling-point">
<h2>
Client SDK
<i class="fa fa-gamepad" aria-hidden="true"></i>
</h2>
<p>
The Spark client SDK allows you to integrate spark with your existing ecosystem. The Spark Client is built entirely on this simple, powerful API.
</p>
<a href="{{ get_url(path="@/client/_index.md") }}" class="button">Get started</a>
</div>
</div>
</div>
{% endblock content %}
</div>
<footer>
© Blue Trading Systems
</footer>
<script>
if (location.hostname == "api.bluetradesys.com") {
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-56FHG8R');
}
</script>
<script type="text/javascript" src="{{ get_url(path="elasticlunr.min.js") }}"></script>
<script type="text/javascript" src="{{ get_url(path="search_index.en.js") }}"></script>
<script type="text/javascript" src="{{ get_url(path="search.js") }}"></script>
</body>
</html>
+53
View File
@@ -0,0 +1,53 @@
{% extends "index.html" %}
{# this has access to the "page" variable but documentation.html does not #}
{% block title %}{{ page.title }} | {{ super() }} {% endblock title %}
{% block next_link %}
{% endblock next_link %}
{% block content %}
{% set section = get_section(path=page.ancestors[1]) %}
{#
{#<div>{{ section.title }} </div>#}
<div class="documentation">
<aside class="documentation__sidebar">
<ul>
{% for p in section.subsections %}
{% set subsection = get_section(path=p) %}
<li>
<span class="documentation__sidebar__title">{{ subsection.title }}</span>
<ul>
{% for page in subsection.pages %}
<li class="{% if current_path == page.path %}active{% endif %}">
<a href="{{page.permalink}}">{{page.title}}</a>
</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
</aside>
<div class="documentation__content">
<h1>{{page.title}}</h1>
{{page.content | safe}}
{# next/pre links #}
<p>
{% if page.lighter %}
<a href="{{ page.lighter.permalink }}">
<i class="fa fa-chevron-left fa-fw" aria-hidden="true"></i>
Previous
</a>
{% endif %}
&nbsp;
{% if page.heavier %}
<a href="{{ page.heavier.permalink }}">
Next
<i class="fa fa-chevron-right fa-fw" aria-hidden="true"></i>
</a>
{% endif %}
</p>
</div>
</div>
{% endblock content %}
@@ -0,0 +1,15 @@
<pre
{% if background %}
style="background-color:{{background}};"
{% else %}
style="background-color:#383838;"
{% endif %}
>
<span
{% if color %}
style="color:{{color}};"
{% else %}
style="color:#e6e1dc;"
{% endif %}
><a onclick="navigator.clipboard.writeText('{{body}}')"><i class="fa fa-clipboard fa-underline" style="color: white; text-decoration: none;"></i></a> {{body}}</span>
</pre>
@@ -0,0 +1,7 @@
{% for asset in page.assets -%}
{%- if asset is matching("[.](jpg|png)$") -%}
<a href="{{ get_url(path=asset) | safe }}" target="_blank">
<img src="{{ resize_image(path=asset, width=240, height=180, op="fill", format="auto") | safe }}" />
</a>
{%- endif %}
{%- endfor %}
+4
View File
@@ -0,0 +1,4 @@
<div class="info">
<i class="fa fa-lightbulb-o fa-fw" aria-hidden="true"></i>
{{body}}
</div>
Loaded 100 of 5130 files, more files were not shown because too many files have changed in this diff. Show more