arham
1f94fe65bc
added more detail missing security log in gmdl
2026-10-26 03:32:49 +00:00
arham
edf8adb90e
config: new config for ophirs new sim server
2026-10-21 13:09:14 +00:00
arham
a4ff7743da
Add: simple doc to expplain security handling in sparkd
2026-09-04 13:28:03 +00:00
arham
2853af9e0f
add: locks to gmdl to handle multi-threaded producers and add a way to handled deffered spreads
2026-09-04 13:27:12 +00:00
arham
5482278b5b
ADD: MDP3 pipeline now points to gmdl in case of sime execution
2026-09-04 13:23:25 +00:00
arham
9732d90683
cme md recording and replay no loop
2026-09-01 05:28:30 +00:00
arham
53ddf9a173
cme raw packet recorder
2026-08-28 07:03:16 +00:00
arham
38d87cddcf
fix: white backgroud in datepicker in mf
2026-08-23 22:05:31 -04:00
arham
4d4b2cf967
add: date change for manual fills
2026-08-24 00:32:20 +00:00
John Colvin
eadd6a0706
fix: Update title in new ladder ticket when sec received
2026-08-14 14:50:31 -04:00
John Colvin
503a5e2715
fix: Revert ladder to use fixed price list instead of virtual rows
2026-08-14 14:42:12 -04:00
John Colvin
786736b38f
Add Orders column placeholder to new ladder grid
2026-08-14 14:42:12 -04:00
John Colvin
1ef2ed9d57
Make new ladder grid use 1 row per tick with fixed row count
2026-08-14 14:42:12 -04:00
John Colvin
b39ea9528c
Use fixed price rows (per tick) in new ladder
2026-08-14 14:42:12 -04:00
John Colvin
c59ce773a7
Set security in OnSecurityMd callback in new ladder
2026-08-07 17:20:14 -04:00
arham
400981738f
fix: bug fix now sell works
2026-08-05 15:47:21 -04:00
arham
3fd749dcd9
add: change colors and add ladder link
2026-08-05 14:04:32 -04:00
John Colvin
a250967286
feat: Launch modify ticket w/ ladder
2026-07-30 14:13:35 -04:00
John Colvin
a81126d888
feat: Launch ticket w/ ladder popup from mview
2026-07-30 14:13:35 -04:00
John Colvin
c38ff5926e
feat: Add new order ticket with ladder price levels
2026-07-30 14:13:35 -04:00
John Colvin
49df45574f
Rename get_ladder_profile PascalCase
2026-07-30 11:51:37 -04:00
John Colvin
7b2e19f7c8
Remove unused ext fn subscribe_ladder_profile
2026-07-30 11:51:37 -04:00
John Colvin
c9e3cf8c67
Rename AuxiliaryDataResources -> OrderAuxiliaryPopupResources
...
The old name was unnecessarily vague
2026-07-30 11:48:00 -04:00
John Colvin
6b31f7383c
Remove unused code ConstrainedTextBlock
2026-07-30 11:48:00 -04:00
arham
f2c95d6c28
sec filter on the basis of expiration in mdp3
2026-07-27 09:32:10 +00:00
Taha
1d3bbcc75f
TC2 ATM highlighting wokrs now without AW2 setup
2026-07-22 16:52:49 -04:00
arham
94bfdacf8b
add: trade latency logs
2026-07-02 16:21:08 +00:00
arham
2a8d407f08
conf: add config to run crypto on aws, bybi and gate not working
2026-06-24 01:03:49 +00:00
Taha
55ed962c63
Fixing empty TC2 issue, caused by exceptions in _override_theos
2026-06-17 23:10:57 -04:00
arham
68f766e00b
fix: param syntax change for args
2026-06-17 10:33:29 -04:00
arham
c0252e06c5
fix: fill time nanos stored
2026-06-16 09:58:03 +00:00
John Colvin
4258bd4c82
fix: Use unique ProtoMember ids in orderbook FilterStates
...
The Tag property had the same id as accounts (5)
2026-06-15 15:29:07 -04:00
John Colvin
4981d70bf2
fix: Return NaN instead of throwing if priceType invalid
...
It's possible this fixes the ladder freezing bug reported by Ophir
2026-06-15 15:22:28 -04:00
John Colvin
b85c249a7d
improve: Map nullable Color to Color type in BTSColorExtension
...
So we don't need "Type={x:Type Color}" in ColorAnimation xaml
2026-06-15 15:21:31 -04:00
John Colvin
6721e07cb6
fix: Use BTSColor markup ext instead of StaticResource
2026-06-15 15:08:28 -04:00
arham
8aa5529218
conf: increased shm mem size
2026-06-02 03:04:55 +00:00
arham
ba5fff0168
add: ping service to sdk
2026-06-01 10:28:06 +00:00
arham
976119fbee
fix: build was broken, spark.dll being used by another process
2026-06-01 04:31:57 -04:00
arham
ed741c0621
fix: sdk computes position from fills instead of using postion service
2026-06-01 08:02:44 +00:00
arham
e0cf3c739f
Add: backend il3gw fills aggressor field
2026-06-01 07:51:14 +00:00
arham
59e2519a4d
fix: fills aggressor flag displayed
2026-06-01 02:12:16 -04:00
arham
15de6f3e3d
add: added entries for weekly options cme to defualt cpp conf
2026-05-21 09:48:34 +00:00
John Colvin
2e36f00382
fix: Only set order tag if non-null
2026-05-14 10:43:01 -04:00
John Colvin
9f24a3e7a2
improve: Make sdk demo venue parse case insensitive
2026-05-14 10:43:01 -04:00
John Colvin
e8dbf6fe09
vscode: Set Sdk Demo prelaunch task to Build Spark Sdk
2026-05-14 10:43:01 -04:00
John Colvin
aa403b83ef
improve: Use quantity sign to indicate side in TopOfBookQuoter example
2026-05-14 10:43:01 -04:00
arham
c507f20a8e
fix: build broken for gcc
2026-05-13 12:33:57 +00:00
arham
ea52a4749d
conf: update conf
2026-05-13 12:33:44 +00:00
arham
650710b5e2
remove stale config
2026-05-12 11:53:31 +00:00
arham
20f6a29e05
add: conf for cert and prodexit
2026-05-12 11:51:25 +00:00
John Colvin
e2f8d4db11
fix build (deploy): Actually include native assets in nupkgs
...
Native assets (libspark.dll/so) are copied to the outdir for local
builds, and packed in nupkg files for sdk releases. The dest path in the
package is different from the path in the outdir, so we configured
Copy/Pack as separate msbuild items. However, both had the same
Include="@(NativeWindows/LinuxAsset)", so Pack="false" in the Copy item
was overriding Pack="true" in the Pack item.
2026-05-08 14:15:54 -04:00
arham
1812434ddc
Fix: front end exe polling decreased from 100ms to 1ms
2026-05-08 15:24:26 +00:00
Taha
fd50050064
Position cols in TC2 work again now
2026-05-07 03:57:07 +00:00
arham
6ac43881ae
add: add missing tag to default conf
2026-05-07 00:22:28 +00:00
arham
4af1419748
Add: timezone change to chi and std higher ram for multicast compose
2026-05-07 00:22:03 +00:00
arham
7cfcdc3770
fix: ilink3 code generator produces correct code that handles null values
2026-05-07 00:21:10 +00:00
arham
d03a705077
fix: ilink3 genereated files updated to handle null values with null instead of ascii zero
2026-05-07 00:20:34 +00:00
arham
58eccad70d
fix: fills ui price was zero now it works
2026-05-07 00:19:44 +00:00
arham
5f8ec04ff1
Add: useful tools to prod docker image
2026-05-07 00:19:16 +00:00
arham
05e2107655
Fix: change object pool to detect exe report memory leak from assert to error
2026-05-07 00:18:45 +00:00
arham
d41f613e32
FIx: change object pool limit for il3gw for exe reports
2026-05-07 00:17:52 +00:00
arham
bcbb598423
Add: better logs and disconnect handling
2026-05-04 20:42:23 +00:00
arham
e88c44f9db
CME TEMPLATE 9
2026-05-04 16:39:48 -04:00
arham
93625957d1
Fix: CRITICAL CME FIX
2026-04-29 03:58:45 +00:00
John Colvin
8eccb869e1
Remove unnecessary nuget stuff from externals
2026-04-08 00:13:01 -04:00
John Colvin
40f4333fc7
fix: SingleSecurityCriteria must have single id or venue/name pair
2026-04-07 17:23:25 +00:00
John Colvin
319d5c2384
vscode: Fix PubSubServer config environment param
2026-04-07 17:23:25 +00:00
arham
4a74713369
ophir multicast config replay and live working
2026-04-02 00:17:46 +00:00
arham
082beef1da
Rename
2026-03-31 23:59:04 +00:00
arham
f92d789e90
Add: recording config
2026-03-31 14:16:55 +00:00
arham
cd3e845dd9
Fix: set log to diag, it logs every book update
2026-03-31 14:09:37 +00:00
arham
a5b704eef1
Add: config for ophir wb
2026-03-31 14:09:05 +00:00
arham
afee63e061
Add: new docker compose to support mulitcast
2026-03-31 14:08:42 +00:00
John Colvin
fc9356d1a0
deploy: Optionally mount sparkd entrypoint in config dir
...
To mount a custom entrypoint script, put it in the config profile dir
and define the following env vars:
SPARKD__IMAGE=sparkd_symbols
SPARKD__MAIN_ENTRYPOINT=/home/bts/.local/share/bts/sparkd/conf/<custom-entrypoint>
To invoke the "normal" sparkd entrypoint script from the mounted one:
./sparkd-entrypoint.sh
2026-03-27 18:28:25 +00:00
John Colvin
a85f22c6a8
deploy: Fix sudo issues in sparkd-entrypoint.sh
2026-03-27 17:59:20 +00:00
John Colvin
2024eba4d0
deploy: Add ophir_sim_replay config profile for sparkd
2026-03-26 16:20:41 -04:00
John Colvin
1a49a828ad
build: Don't activate venv when generating individual protos
...
We activate the venv for the whole build
2026-03-26 16:20:41 -04:00
John Colvin
c0448c7c8d
deploy: Resolve profile dirs with regex patterns
2026-03-26 16:20:41 -04:00
John Colvin
a6c6e7faf3
improve: Wait until py work requested before loading py modules
...
So we don't crash due to missing py modules when no py plugins are running.
2026-03-26 16:20:41 -04:00
John Colvin
56445d2d66
deploy: Add sparkd-shell service to compose.yaml for troubleshooting
2026-03-26 16:20:41 -04:00
John Colvin
ccf1bd51c2
cleanup: Remove unused code
2026-03-26 16:20:41 -04:00
John Colvin
fd21269df7
refactor: Wrap md run logic in class MarketDataSession
...
Start in the constructor, gracefully exit in the destructor.
2026-03-26 16:20:41 -04:00
John Colvin
fe85c3e648
Allow md recording dir to be mounted as volume in docker compose
2026-03-26 16:20:41 -04:00
John Colvin
e1d33ecadf
deploy: Configure timezone in entrypoint script
2026-03-26 16:20:41 -04:00
John Colvin
83df96c70f
deploy: Move compose entrypoint to dedicated script
2026-03-26 16:20:41 -04:00
John Colvin
f718f5b15c
deploy: Fix typo in sparkd conf dir path in compose.yaml
2026-03-26 16:20:41 -04:00
John Colvin
5d752f3b73
refactor: Replace DataPacket with IDataPacket in more places
2026-03-26 16:20:40 -04:00
John Colvin
d308dbf15a
build: Check if venv already active before activating
2026-03-26 16:20:40 -04:00
John Colvin
21c43b9240
refactor: Replace TableFormatter with table.h
...
Also move to "format" dir
2026-03-26 16:20:40 -04:00
John Colvin
e1553f1b04
refactor: Replace StringFinder/Joiner.h with find/join.h
...
Also move to "algorithm" dir
2026-03-26 16:20:40 -04:00
John Colvin
a26918efe9
refactor: Rename a few TitleCase .h files snake_case
...
* EnumMacros.h -> enum_macros.h
* TimeSpan.h ---> time_span.h
* TimeStamp.h --> time_stamp.h
2026-03-26 16:20:40 -04:00
John Colvin
f729fc4c59
diag: Use structured logs in MDP3Listener::onOption
2026-03-26 16:20:40 -04:00
John Colvin
fa67adbe36
deploy: Install tzdata in linux_dotnet8 Dockerfile
...
So we can configure timezone in compose services. Specifically, we need this
to support live cme md (so onixs doesn't think messages are "too old").
2026-03-26 16:20:40 -04:00
John Colvin
72f9ec582e
cleanup: Remove unused code
2026-03-26 16:20:40 -04:00
John Colvin
8fea31bdf6
refactor: Add new glbx variable ticks to security (shm and proto)
2026-03-26 16:20:39 -04:00
John Colvin
ca96e41391
build: Upgrade cs LangVersion 11 -> 12
2026-03-26 16:20:39 -04:00
John Colvin
d4e5c95fde
refactor: Rename SparkApiCredentials -> SparkCredentials
2026-03-26 16:20:39 -04:00
John Colvin
f6e0ec3617
refactor: Rename SparkdLoginService -> SparkLoginService
...
This makes it consistent with other type names (we don't use "Sparkd"
anywhere else).
2026-03-26 16:20:39 -04:00
John Colvin
3fa5284838
refactor: Rename SparkdCredentials.cs -> SparkApiCredentials.cs
...
Matches the class name
2026-03-26 16:20:39 -04:00
John Colvin
4dcaa565f6
cleanup: Remove unnecessary subscription wrapper in cs sdk
2026-03-26 16:20:39 -04:00
John Colvin
75ecfa89d6
build: Clean up spark_client.sln
...
* Remove unused csprojs related to old sdk
* Remove erroneous build type config
2026-03-26 16:20:39 -04:00
John Colvin
1c930439a4
fix build (dsqa): Add using Spark.Api.MarketData
...
Needed to reference IMarketDataClient
2026-03-26 16:19:30 -04:00
John Colvin
25084b8cd9
fix build (cs): Add "global::" prefix when using Spark.Api ns
...
Resolves conflicts with the Bts.Spark.Api namespace when the using
statement is nested inside the root "Bts" namespace.
2026-03-26 16:17:16 -04:00
John Colvin
5b8a8a8882
build: Simplify target to include native assets in cs
2026-03-08 16:00:49 +00:00
John Colvin
21052090a2
fix (pre-emptive): Format dotnet flag opts correctly
...
In pack_spark_sdk.py, the dotnet pack cmd is constructed with a dict of
opts. If the value part is None, the opt should be formatted as a flag,
"--key" instead of "--key None".
2026-03-07 13:32:03 -05:00
John Colvin
9bd32b8225
fix build (pack cs sdk): Fix --(no-)cs toggle behavior
...
* Always run "dotnet pack", regardless of csharp toggle opt
* Run "dotnet publish" if csharp toggled on
2026-03-07 13:20:56 -05:00
John Colvin
e8e234f420
fix: Don't fire empty updates in Books IObservable
2026-03-07 01:19:38 -05:00
John Colvin
be23237a45
fix: Update last val in IObservable FlattenSeries ext
...
The bootstrap delegate that stitches the sequences together wasn't
getting properly invoked because of this.
2026-03-07 01:19:28 -05:00
arham
a9d92650f8
Add: Spread name to synthspreadbbo
2026-03-03 04:33:44 +00:00
arham
c03fb13126
Fix: rename EnterSpreaderOrderAsync from CreateSynthAsync
2026-03-03 01:16:10 +00:00
arham
01e6e37db6
Add: Config for ophir live data sim exe
2026-03-03 01:10:34 +00:00
arham
786b0849a7
FIX: removed errenous code that stopped mdp3 from working
2026-03-03 01:09:06 +00:00
John Colvin
4826fc9237
build: Remove dependency on Newtonsoft.Json (in DataStreamCore)
...
Replace with System.Text.Json (official dotnet)
2026-02-23 13:03:49 -05:00
John Colvin
c3341ec29f
refactor: Replace a few more DataPacket refs with IDataPacket
2026-02-23 12:56:27 -05:00
John Colvin
eb88052c7e
chore: Add Metadata prop to IDataPacket
...
To give it parity with DataPacket
2026-02-23 12:55:23 -05:00
John Colvin
74332f9944
fix: Pass IMarketDataClient to PrimitiveManager to enable md streams
...
In DataStreamQueryAnalyzer and Spark Api Server
2026-02-23 11:24:33 -05:00
John Colvin
54c97b5610
fix: Set buffer Position to 0 when deserializing pubsub echo payload
2026-02-21 16:36:53 -05:00
John Colvin
5c05afd9b3
fix: Only fire stream update if there are actually changes
...
In other words, don't fire if addedRows and deletedRows are both empty.
2026-02-21 16:36:53 -05:00
John Colvin
dcbba39e4a
fix: Add null check in BlueDataUtility.build_dp_inc
2026-02-21 16:36:53 -05:00
John Colvin
d09f22007e
fix: Ensure PubSubTagHandlerFactory uses correct config
...
* Add this service as part of the PubSubClient services for dep
injection (it is needed by PublisherCore)
* Get rid of PublisherCore's default constructor, so dep injection
treats the tag handler factory as a required param (fails if it isn't
available)
- Replace the default ctr with a static "Create" fn, so code that
hasn't been updated to use dependency injection can still use that.
- Use PubSubConfig.Instance (runtime) instead of compile time Default
* Fix compile time Default config
- In fallback handler config, change Tag from "" to ".*" and move it
from the beginning of the list to the end (it should be the last
resort, not the other way around).
2026-02-21 16:36:53 -05:00
John Colvin
a07e7ea6b8
fix: Don't call MasterWorker/vsd doWork on DSQA ui thread
...
Now that we use dependency injection, this is handled by a dedicated
service (MasterWorkerService). As a side effect, stream updates aren't
necessarily fired on the ui thread, so we refresh the grid on a form
timer callback.
2026-02-21 16:36:47 -05:00
John Colvin
4da52ff724
fix: Replace DataPacket w/ IDataPacket in DSQA
2026-02-21 14:49:39 -05:00
John Colvin
05c7a32fc5
refactor: Add parameterless ctr to PubsubEchoTestStream
...
So it's quick/easy to check in DSQA (less typing required)
2026-02-21 14:23:51 -05:00
John Colvin
404d3073f9
ui: Unhide PubsubHeartbeatStream (pss_hb) from DSQA
2026-02-21 14:11:46 -05:00
John Colvin
7f1154d70c
cleanup: Fix indentation in PubsubHeartbeatStream.cs
2026-02-21 14:10:11 -05:00
John Colvin
5bc2e29096
fix build: Only check "dsqa" flag when building on windows
...
The --dsqa opt isn't defined when running on linux.
2026-02-21 17:55:12 +00:00
John Colvin
f5731a184c
fix: Actually disable Spark in default DSQA config
2026-02-20 11:08:33 -05:00
John Colvin
120fe8e5c6
vscode: Add DSQA debug config to skip build
2026-02-20 10:44:19 -05:00
John Colvin
137fdc537d
refactor: Move DSQA config to appsettings.json
2026-02-20 10:43:13 -05:00
John Colvin
a605e57bee
build: Add dsqa toggle to build_data_stream.py
...
Windows only
2026-02-20 02:33:38 -05:00
John Colvin
3ca4bf784c
ui: Remove bts.BlueOrb namespace filter for DSQA streams
2026-02-20 02:13:17 -05:00
John Colvin
6c3b7ebdaf
refactor: Use dependency injection in DSQA
2026-02-20 02:13:17 -05:00
John Colvin
2fbb6fe563
Disable Spark in default DSQA config
2026-02-20 02:13:17 -05:00
John Colvin
9ea33ac110
ui: Unhide PubSubServerStateStream (pss_state) from DSQA
2026-02-20 02:13:17 -05:00
John Colvin
0bc021912a
fix: Replace more DataPacket references with IDataPacket
2026-02-20 02:13:17 -05:00
John Colvin
fa017bd9ff
fix build: Remove old ViewStream.rows references from dsqa
...
The 'rows' prop no longer exists
2026-02-20 02:13:17 -05:00
John Colvin
57b59215e6
fix build: Don't echo parenthesis in .cmd if block
...
It's not allowed (because windows).
2026-02-18 02:54:25 -05:00
arham
210768e391
fix: handle badrequests in websocket api
2026-02-18 05:40:27 +00:00
arham
f01e8a578d
Add: enter synthetic spreader orders through
2026-02-18 05:36:02 +00:00
arham
528a00cf98
Add: config for okx_bin_sim
2026-02-18 05:31:18 +00:00
arham
96a04a7c84
Fix: side and status to json in orderrecodtuple
2026-02-18 05:30:28 +00:00
arham
abaf48beb4
Add: other fields to tosjon for security.cs
2026-02-18 05:29:03 +00:00
John Colvin
08fcae94c0
Update externals (moved emumba deribit deb to bitbucket cloud)
2026-02-17 18:16:22 +00:00
John Colvin
30814a2ed6
fix build: Fix Bts.Extensions.Hosting projref path
2026-02-15 16:48:02 +00:00
John Colvin
3c61de5f13
devcontainer: Install Rakurai deb
...
Download from bitbucket cloud.
2026-02-14 18:43:07 +00:00
John Colvin
771c58d4ad
devcontainer: Move emumba deb to bitbucket cloud
...
I just learned that Bitbucket offers per-repo cloud storage for arbitary
files (the "Downloads" section on the web gui). Doing this before adding
another third-party deb to our build (rakurai), which is quite large at
140MB. We don't want to pack that into our repo.
2026-02-14 18:42:03 +00:00
John Colvin
5db5d40a99
devcontainer: Fix CMake NO_PUBLIC_KEY warning
2026-02-14 18:29:28 +00:00
John Colvin
020ec9c6bf
build: Replace proj refs w/ internal nugets when packing
2026-02-03 16:57:32 +00:00
John Colvin
4e28835bbd
vscode: Add tools/py to shell PYTHONPATH
2026-02-03 16:57:32 +00:00
John Colvin
6985fbb090
refactor: Move CompressionUtilities into separate csproj
...
It was nested in PubSub. The new csproj is named Bts.IO.Compression.
2026-02-03 16:57:32 +00:00
John Colvin
2f42311220
build: Update a few python packages
...
* protobuf 4.21.12 -> 6.33.4
* pybind11 2.13.6 --> 3.0.1
* pybind11-stubgen 2.5.3 ---> 2.5.5
2026-02-03 16:57:32 +00:00
John Colvin
3842efcef1
build: Define build py requirements in separate files
...
No need to install backend build deps when building the front-end, and
vice versa. The build scripts (build_spark.cmd, build_sparkd.sh, etc.)
automatically install only the necessary requirements now.
Note: We'll keep the monolith requirements.txt file around (at least for
now), as it includes more than just build deps (e.g., numpy, pandas, and
jupyter for data analysis; pybit for bybit plugins, etc.).
2026-02-03 16:57:32 +00:00
John Colvin
635107eb68
cleanup: Remove unused py code
2026-02-03 05:20:29 +00:00
John Colvin
1b9a49b924
cleanup: Add missing files and env vars to sparkd config profiles
2026-02-03 05:20:29 +00:00
John Colvin
ead35389d5
build: Make PubSub packable
2026-02-03 05:20:29 +00:00
John Colvin
22b44845fb
build: Update Microsoft.AspNetCore.Cors to 2.3.9
2026-02-03 05:20:29 +00:00
John Colvin
8ab26f3e1d
build: Remove dependency on Newtonsoft.Json
...
Replace with System.Text.Json (official dotnet)
2026-02-03 05:16:21 +00:00
John Colvin
01c61bb16d
fix build: Publish spark_api_server csproj instead of the sln
...
There's a version conflict with System.Data.Common when publishing the sln.
2026-01-22 05:50:49 +00:00
John Colvin
e09e49ce56
fix build: Add Bts.Net to Spark.Api.Server.sln
...
It seems like the dep is automatically detected on windows, but not
linux (so we need to add it explicitly).
2026-01-21 15:06:00 -05:00
John Colvin
e6cc20858b
build: Honor "UseProjectRefs" in spark_websocket, spark_api_server
2026-01-21 14:28:48 -05:00
John Colvin
2eb80082d8
refactor: Move Bts.Extensions.Hosting, Bts.Net to cs dir
...
They aren't exclusively used by DataStream csprojs
2026-01-21 14:20:39 -05:00
John Colvin
d55ef854ba
fix build: Don't actually copy files when building with --dry-run
2026-01-21 14:03:01 -05:00
John Colvin
b1417ece5d
fix build: Fix cmake windows preset in publish_api_server.py
...
Changed from 'spark' -> 'spark-windows'
2026-01-21 14:03:01 -05:00
John Colvin
f6ae219a72
build: Add a few toggle opts to publish py scripts
...
--(no-)cpp Enable/disable cpp build
--(no-)cs Enable/disable csharp build
--(no-)csproj-refs Depend on csproj refs, or locally built nugets
2026-01-21 14:03:01 -05:00
John Colvin
1e4b9cf833
Add new StartWithOnTimeout ext fn for IObservable
...
Ophir wanted this functionality for data in the sdk
2026-01-19 10:44:51 -05:00
John Colvin
228931dd2a
cleanup: Fix indentation in launch.json
...
Also rename launch task "(gdb) Attach" -> "Sparkd Attach"
2026-01-19 10:44:51 -05:00
John Colvin
f5b4b36ea1
Move devcontainer Dockerfile to bluetradingsystems/linux_dotnet8_dev
...
We now host it on dockerhub under that name
2026-01-19 10:44:51 -05:00
arham
f19d2d695b
Fix: Updated path so that profiles work
2026-01-16 06:55:09 +00:00
John Colvin
d4b9b6bcba
fix: Dispose subscription in TopOfBookQuoter demo
2026-01-14 10:35:42 -05:00
John Colvin
84d74a7873
refactor: Actually implement IDisposable in MarketDataClient
2026-01-14 10:35:42 -05:00
John Colvin
8c34280d75
fix: Init PriceTicker Security to avoid null ref in Equals impl
2026-01-14 10:35:42 -05:00
John Colvin
474d96ced4
feat: Add PriceStats/Ticker to ISimpleSparkClient (cs sdk)
2026-01-14 10:35:42 -05:00
John Colvin
1432692a26
refactor: Make PriceStats/Ticker record structs
...
Also rename props in PascalCase
2026-01-13 13:57:47 -05:00
arham
1dde5c3ac2
add: trades aggressor side works in the recorder
2026-01-13 18:25:56 +00:00
arham
1cc31e0d2d
add: databento datahandler reads cme recorded files with time delay
2026-01-13 18:00:43 +00:00
arham
edbd0d2a7b
add: conf for es weekly
2026-01-13 17:59:25 +00:00
arham
56a4ec94a2
Fix: glbx config to use databento as marketdata src
2026-01-13 17:55:13 +00:00
arham
e3e3d42972
fix: removed double call to std::move
2026-01-13 17:52:16 +00:00
arham
1b9dff3a83
Add: low tick high tick to genereal marketdata listener
2026-01-13 17:51:43 +00:00
John Colvin
8521a98445
ui: Add Tag column to OrderBook window
2026-01-12 10:45:00 -05:00
John Colvin
10eb1ecf1e
feat: Add order tag param to ISimpleSparkClient (cs sdk)
2026-01-12 10:44:59 -05:00
John Colvin
88beb0f148
fix: Avoid null ref ex in DiffStream
2026-01-11 15:15:13 -05:00
John Colvin
0f70ae5da2
fix: Fix 'future' -> 'spread' typo in LiveFuturesContractStream
2026-01-11 15:15:13 -05:00
John Colvin
bcd207f89e
cleanup: Fix more build warnings in DataStreamSuite
...
Alot more
2026-01-11 15:15:13 -05:00
John Colvin
989d103eef
fix: Properly store and dispose md subscription in BBOStream
2026-01-11 15:15:12 -05:00
John Colvin
aacd22d496
refactor: Move Exception utils to Spark.Core.Diagnostics ns
2026-01-11 15:15:12 -05:00
John Colvin
5d318b6422
refactor: Rename PropertyNotNull -> MemberNotNull
...
Because it can be used to null check any member (including fields and
method returns), not just properties.
2026-01-11 15:15:11 -05:00
John Colvin
d89164c0ff
refactor: Move CollectionExtensions to Spark.Core.Collections namespace
2026-01-11 15:12:33 -05:00
John Colvin
cbddb3ae28
fix: Avoid potential race bug in c# OrderPool
2026-01-11 11:20:40 -05:00
John Colvin
2aa25d4085
refactor: Rename ExceptionAssert.not_null -> NotNull
2026-01-11 11:20:40 -05:00
John Colvin
cd34f9b1cb
cleanup: Tidy up SecondStream, move ThrottleStream to own file
...
There actually already was a file called "ThrottleStream", but since it
didn't have the ".cs" extension it wasn't getting built.
2026-01-11 11:20:40 -05:00
John Colvin
5f689dbd8e
cleanup: Tidy whitespace and using statements
2026-01-11 11:20:40 -05:00
John Colvin
03a8f4e9c0
refactor: Replace DataPacket w/ IDataPacket in many places
2026-01-11 11:20:40 -05:00
John Colvin
49a952fb32
refactor: Generate a few row types with new t4 templates
...
* PubSubHeartbeatRow
* PubSubRouteRow
* PubSubServerStateRow
* PubSubServerTagStatsRow
* TableMetadataRow
2026-01-10 12:59:14 -05:00
John Colvin
a1c6e0ccab
build: Add t4 templates to generate c# row types
...
Produces classes/structs that implement IBlueRow with strongly typed
properties for each column.
2026-01-10 12:59:14 -05:00
John Colvin
63a3eb968c
diag: Assert DataStream updates are incremental
...
In debug builds
2026-01-10 12:59:14 -05:00
John Colvin
9de4b27003
refactor: Ensure stream subscriptions only disposed once
...
In the debugger, I noticed a few streams were unhooking their internal
onChange callbacks unnecessarily (when they were already unhooked).
2026-01-10 12:59:14 -05:00
John Colvin
849c6c28e5
fix: Don't fire empty updates in MutableAppendStream
2026-01-10 12:59:14 -05:00
John Colvin
bf3a8f076f
fix: Change DSQA config pubsub port to 22019
...
The port PubSubServer runs on by default
2026-01-10 12:59:14 -05:00
John Colvin
44749739b9
build: Define centralized SparkVersion prop
...
All csprojs should be on the same version. At the very least, it
is a sensible default.
2026-01-10 12:59:14 -05:00
John Colvin
ddf16bcd5c
fix: Add missing LiveMarketDataStream attribute to InstrumentsStream
...
Otherwise PrimitiveManager returns null for that stream type
2026-01-10 12:59:14 -05:00
John Colvin
cfe7d43770
fix: Initialize ViewStreamDatabase.instance in DSQA
2026-01-10 12:59:14 -05:00
John Colvin
bb5ea19f69
refactor: Get rid of ViewStream.rows prop
...
It was causing weird side effects in debugger
2026-01-10 12:59:14 -05:00
John Colvin
327665b4c3
fix: Add null check in ProximityJoinStream
2026-01-08 14:24:27 -05:00
John Colvin
2843638386
fix: Only start Stopwatch when actually doing work
2026-01-08 14:24:27 -05:00
John Colvin
915322927a
fix: Dispose md subscription in InstrumentsStream
2026-01-08 14:23:09 -05:00
John Colvin
9905216131
fix: Format PubSub and DSQA config json in PascalCase
...
Matches what's in appsettings.json files
2026-01-08 14:22:57 -05:00
John Colvin
f88915a940
fix build: Add --spark-version opt in build_data_stream.py
2026-01-07 02:34:56 -05:00
John Colvin
c5ea913e27
fix: Shutdown application when user closes login dialog
...
Previously, it would hang until you manually killed the process.
2026-01-06 14:02:10 -05:00
John Colvin
7719aaa2b3
fix: Add EnvironmentVariables config provider to HostBuilder
2026-01-06 14:02:10 -05:00
John Colvin
ad3a8a7544
fix: Add json config sources before env vars and cmd line sources
...
So environment variables override json files (if there is a conflict),
and command line args override everything else.
2026-01-06 02:34:36 -05:00
John Colvin
75d3ba1d59
fix: Support cross-type numeric comparisons in ArgumentComparer
...
For example, so we can compare ints with doubles. Also adds support for
DateTime and TimeSpan cross-type comparisons.
2026-01-05 13:36:07 -05:00
John Colvin
0ebe9a876c
fix: Apply MarketDataClientConfig to MDSource
...
For throttle intervals, etc.
2026-01-05 13:26:29 -05:00
John Colvin
ac1cbaa985
deploy: Add ophir_demo config profile for sparkd
2026-01-05 00:04:57 +00:00
John Colvin
e861835690
deploy: Change sparkdata dir to ~/.local/share/bts/spark
...
In docker scripts (Dockerfile, compose.yaml)
2026-01-04 23:35:04 +00:00
John Colvin
10752257cc
vscode: Build sparkd as prelaunch task
...
Must have been removed by accident
2026-01-04 21:19:00 +00:00
John Colvin
8e67bd45d9
improve: Add 'file' and 'start_date' props to md replay config
2026-01-04 21:19:00 +00:00
John Colvin
140e5bb5ee
fix build (sparkd): Disable warnings specifically for clang >= 18
...
The build was broken for clang < 18 (and gcc) because we were blindly disabling
warnings as errors specific to clang 18, without checking the compiler version.
Namely, "-Weffc++" and "-Wenum-constexpr-conversion".
2026-01-04 21:19:00 +00:00
John Colvin
9ebc282ba5
fix: Use AtomicGate to make TableUpdate Select ext thread-safe
2026-01-04 21:19:00 +00:00
John Colvin
549529aa60
tool: Add script to add BTS github nuget source
...
Where we host the BTS sdk nugets
2026-01-04 21:19:00 +00:00
John Colvin
5ed4a5c1c5
feat: Add tag property to OrderDefinition
2026-01-04 21:19:00 +00:00
John Colvin
8c458d48bb
feat: Add server side csharp sdk
...
For Ophir
2026-01-04 21:19:00 +00:00
John Colvin
bb1e7c30c8
build: Add msbuild flag to reference projs or local nugets
...
So we can use project refs for dev builds, and package refs for releases.
2026-01-04 21:19:00 +00:00
John Colvin
6568c29ad4
cleanup: Remove unnecessary ProjectReference
2026-01-04 21:19:00 +00:00
John Colvin
e5e67e1a01
build: Optionally launch console with Spark exe
2026-01-04 21:19:00 +00:00
John Colvin
4f34e57194
refactor: Move Bus code into Bts.Spark.Core
2026-01-04 21:19:00 +00:00
John Colvin
59b1aead62
refactor: Use HostBuilder to launch spark w/ streams
2026-01-04 21:19:00 +00:00
John Colvin
49a4c65f3b
build: Define custom "main" (entry point) for Spark exe
...
This is a prelude to integrating streams into spark. The plan is to use
an ms HostBuilder to instantiate stream services/dependencies alongside
the spark Application object.
2026-01-04 21:19:00 +00:00
John Colvin
cf4158b34c
refactor: Consolidate ShellBootstrapper and base class into one
2026-01-04 21:19:00 +00:00
John Colvin
db0e0d4311
cleanup: Get rid of stunnel code
...
This looks like it hasn't been hooked up for years...it would only start
if a stunnel.conf file was detected, which hasn't been around for a very
long time.
2026-01-04 21:19:00 +00:00
John Colvin
50788f8828
fix: Only create mutex if spark app is NOT running in vs designer
...
I accidentally droped the '!' in a cleanup commit 4 years ago
2026-01-04 21:19:00 +00:00
John Colvin
a515468e37
refactor: Rename TableUpdate props to PascalCase
...
Makes the sdk look more polished, professional
2026-01-04 21:19:00 +00:00
John Colvin
1f68f47b42
build: Propagate py exit codes back to the shell
...
* publish_spark.cmd
2026-01-04 21:19:00 +00:00
John Colvin
84f6d3d9fe
cleanup: Fix build warnings pre-emptively before compiler upgrade
...
For clang>=18
* non-constant-expression cannot be narrowed from type 'uint32_t' (aka 'unsigned int')
to 'float' in initializer list [-Wc++11-narrowing-const-reference]
* -Wenum-constexpr-conversion
2026-01-04 21:19:00 +00:00
John Colvin
4bc1a4c833
build (qol): Add opts to only build cpp or cs
...
Usually, we're only working in one language or the other, and don't need
to rebuild both.
2026-01-04 21:19:00 +00:00
John Colvin
c50a006d7d
deploy: Update dotnet7 -> dotnet8 in docker images
2026-01-04 21:19:00 +00:00
John Colvin
2031f536d6
build: Pack Bts.Spark.Core with libspark
2026-01-04 21:19:00 +00:00
John Colvin
69e4ed84c1
build: Generate version info via git cli in build scripts
...
Instead of GitVersion.MsBuild nuget
2026-01-04 21:18:58 +00:00
John Colvin
2a284b1e9c
cleanup: Remove unused Protobuf.cmake script
2026-01-04 21:08:13 +00:00
John Colvin
4d5d0f8573
build: Consolidate cmake presets
2026-01-04 21:08:13 +00:00
John Colvin
c4a6b4591d
cleanup: Remove last vestiges of spark proto config from DataStreamCore
2026-01-04 21:08:13 +00:00
John Colvin
8f3fa18bca
refactor: Rename spark_api csproj Bts.Spark.Api
...
This follows the conventional naming practices, where the project shares its
name with the namespace. Doing this in anticipation of the csharp sdk we are
about to release (for Ophir).
2026-01-04 21:08:13 +00:00
John Colvin
f60782915c
refactor: Rename spark_core csproj Bts.Spark.Core
...
This follows the conventional naming practices, where the project shares its
name with the namespace. Doing this in anticipation of the csharp sdk we are
about to release (for Ophir).
2026-01-04 21:08:13 +00:00
John Colvin
3565f78be8
cleanup (build): Remove redundant csproj refs
...
For example, projects that reference spark_api don't need an explicit reference
to spark_core, since spark_api already references it. The same goes for projects
that reference DataStream and DataStreamCore.
2026-01-04 21:08:13 +00:00
John Colvin
41ad7b96f4
build: Only expose spark_core internals to spark and spark_test csprojs
2026-01-04 21:08:13 +00:00
John Colvin
c338d26b82
build: Define project specific metadata props for nuget pack
2026-01-04 21:08:13 +00:00
John Colvin
319f054a0c
build: Define global company info build props for csprojs
...
* Authors - Blue Trading Systems
* Company - Blue Trading Systems
2026-01-04 21:08:13 +00:00
John Colvin
389bf6e130
refactor: Rename DictionarySetWrapper -> DictionaryKeySet
2026-01-04 21:08:12 +00:00
John Colvin
ded28c23d7
diag: Preserve file and line number in "log_at" ext fn
2026-01-04 21:08:12 +00:00
John Colvin
04acba409f
dev qol: Add local appsettings, configurations to gitignore
2026-01-04 21:08:12 +00:00
John Colvin
67f7124ed5
build: Remove DSQA from DataStreamSuite.sln
...
Because it doesn't build on linux
2026-01-04 21:08:12 +00:00
John Colvin
322794434a
fix build: Copy libspark to "net8.0" dir (was net7.0)
2026-01-04 21:08:12 +00:00
John Colvin
fbcba118ac
fix build (api server): Fix typo DOTNET_BINARY_DIR cmake var (path)
...
This is the dir into which libspark (c++) is copied for dotnet (c#) exes.
2026-01-04 21:08:12 +00:00
John Colvin
1c579ee063
refactor: Change namespace to Bts.DataStreamCore for a few types
...
Since they're in the DataStreamCore csproj
2026-01-04 21:08:12 +00:00
John Colvin
7508fa0b7f
dev qol: Mark ExceptionAssert 'name' param w/ CallerArgumentExpression
2026-01-04 21:08:12 +00:00
John Colvin
1f18ec4198
refactor: Replace if/else with switch cases
2026-01-04 21:08:12 +00:00
John Colvin
81d7820cca
fix: Ensure IDGenerator instance is created before deref
2026-01-04 21:08:12 +00:00
John Colvin
e125be1f85
fix: Emplace MDConsumerHandle instead of copy assign
2026-01-04 21:08:12 +00:00
John Colvin
040c8cab59
cleanup: Remove unnecessary code
...
Trim includes as well
2026-01-04 21:08:12 +00:00
John Colvin
32a12cf1f7
cleanup: Remove redundant macro def
2026-01-04 21:08:12 +00:00
John Colvin
db604fbed0
improve: Abort md rec loop if nothing configured to record
2026-01-04 21:08:12 +00:00
John Colvin
cc0a3ea15f
cleanup: Trivial whitespace cleanup in Protobuf.cmake
2026-01-04 21:08:12 +00:00
John Colvin
4066cd50ce
build: Clean up data_files cmake proj (support --target clean)
2026-01-04 21:08:12 +00:00
John Colvin
f1ccff9134
build: Resolve app data dir and shared mem prefix at runtime
...
We can't define them at compile time anymore since we build multiple exes that
depend on libspark in the same dir (e.g., api-server, pubsub, sparkd, etc.),
and each one needs its own shared memory and app data filespaces.
For shared memory:
* Prefix all shm files with the proc name and an environment variable,
BTS_SHARED_MEMORY_PREFIX (if defined). The env var is only necessary
when 2 exe's with the same name run simultaneously.
For app data:
* On linux, the default is:
/home/<user_name>/.local/share/bts/<proc_name>
* On windows, the default is:
/User/<user_name>/AppData/Roaming/bts/<proc_name>
* This path can be overridden in the environment variable:
<proc_name>__APPDATA
- For example, SPARKD__APPDATA, PUBSUB__APPDATA, etc.
2026-01-04 21:08:12 +00:00
John Colvin
51ab182b2f
Don't log "initializing spark config" if it has already been initialized
2026-01-04 21:08:12 +00:00
John Colvin
856cd552eb
refactor: Add Api Server service modules for Dependency Injection
...
* Part of a broader paradigm shift towards Dependency Injection and
Factory Pattern.
* Adds "api-server" service to docker compose
* Replaces MarketDataClient w/ IMarketDataClient in a few streams
* Replaces ViewStreamDatabase w/ IWorkScheduler in a few streams
2026-01-04 21:08:12 +00:00
John Colvin
997647e917
refactor: Add handy WebsocketExtensions
...
* IsSocketStateOpen
* IsClosedProperly
2026-01-04 21:08:12 +00:00
John Colvin
687a9741db
fix: Don't assert on exception in BooleanExpression.evaluate
...
Bugs (fixed):
* DataStream WebApp Server sometimes crashes when the user enters a
bad query.
2026-01-04 21:08:12 +00:00
John Colvin
7faa0ade24
diag: Assert that local ip address is successfully obtained
2026-01-04 21:08:12 +00:00
John Colvin
4d6d68aff6
improve: Resolve hostnames when comparing ip addrs
...
So we can to configure pubsub routes by hostname or ipv4 (ipv6 hasn't
been tested yet...so we should assume it doesn't work).
2026-01-04 21:08:12 +00:00
John Colvin
dcf291d6b2
diag: Assert TcpConnection endpoint matches expected
2026-01-04 21:08:12 +00:00
John Colvin
a6b83988e7
diag: Catch exceptions on AsyncTCPConnector_AsyncWrapper bg thread
...
Since it spawns a new thread on each attempt, uncaught exceptions were
previously undetected, and caused silent failures down the pipe. This
should make it easier to track such bugs down.
2026-01-04 21:08:12 +00:00
John Colvin
2c097500f4
fix: Format PubSubRoute as json in log msgs
...
It was previously using the default ToString, which simply returns the type name
2026-01-04 21:08:12 +00:00
John Colvin
81a212e7a3
build: Upgrade packages (deps) in DataStreamTests
2026-01-04 21:08:12 +00:00
John Colvin
449453625c
vscode: Add PubSubServer debug cfg to skip build
2026-01-04 21:08:12 +00:00
John Colvin
5058187d5b
cleanup: Remove reference to spark protobuf Config in ViewStream
...
In general, we should keep BlueOrb dependencies on spark/sparkd to a minimum.
The dotnet dependency injection architecture provides a robust config framework
we can use instead, based on json files, environment variables, and command-line
arguments.
2026-01-04 21:08:12 +00:00
John Colvin
0253a0f60f
refactor: Run RemoteQueryManager as an IHostedService
...
This paradigm more accurately represents the RemoteQueryManager as a
Service that can be started/stopped.
2026-01-04 21:08:12 +00:00
John Colvin
6986cb5e8e
fix: Ensure spark config init and login are only performed once
...
As a static function that could be called from anywhere in the code
(directly or indirectly), 'Configuration.Initialize' was vulnerable to
race bugs. The "Configuration.get<T>()" method, whose calls are
ubiquitous in our code, would initialize config if it hadn't been done
so already. Without a reference to the configServer param, this param
would effectively be ignored/overridden with null.
It's important that login only be performed once, for obvious reasons
(our exes that connect to sparkd are generally designed to process data
for a single user). Furthermore, not every routine that requires a
successful login has a reference to the credentials needed to do it. To
address this, we now pass the ISparkdLoginService singleton to these
routines so they can wait until the singular login task has completed
before they begin.
2026-01-04 21:08:12 +00:00
John Colvin
35a45c35ba
refactor: Move position model to spark_api
...
So we can use it in the new sdk (c# server-side api) for Ophil
2026-01-04 21:08:12 +00:00
John Colvin
970555d2a1
diag: Assert ViewStreamDatabase.instance is only created once
...
The instance must be initialized via ViewStreamDatabase.SetGlobalInstance
2026-01-04 21:08:12 +00:00
John Colvin
1d46ea061a
cleanup: Remove unused code from ViewStreamDatabase
2026-01-04 21:08:12 +00:00
John Colvin
4bd12dc465
fix: Define BoooleanConstant before StringConstant
...
Otherwise the former masks the latter and prevents it from matching
2026-01-04 21:08:12 +00:00
John Colvin
ad1d404314
cleanup: Remove unnecessary deps from csprojs
2026-01-04 21:08:12 +00:00
John Colvin
a7b6da27ae
fix: Catch exception when creating TcpClient
2026-01-04 21:08:12 +00:00
John Colvin
de4a55b34c
fix: Make SystemSubscriptionMapPublisher threadsafe
...
The PubSubState.onTagMapChanged event may not be invoked on
the same thread as doWork.
2026-01-04 21:08:12 +00:00
John Colvin
2e14598667
fix: Add a few null checks
...
* TimeBasedFilter
* TableAccumulator2
* NonIncGroupByStream
2026-01-04 21:08:12 +00:00
John Colvin
3038d9154f
improve: Reduce task wait/timeout code in AsyncTCPConnector
2026-01-04 21:08:12 +00:00
John Colvin
5805758187
diag: Assert System publishers 'doWork' is always called on same thread
2026-01-04 21:08:12 +00:00
John Colvin
2c1b7b95a4
improve: Propagate DataStream exceptions via ErrorChanged event
2026-01-04 21:08:12 +00:00
John Colvin
60af47c4eb
cleanup: Remove unused PubSubConfig props
2026-01-04 21:08:12 +00:00
John Colvin
b0d0594e3d
fix: Always call 'handle_internal_pubs' in PubSubMessageReactor main loop
2026-01-04 21:08:12 +00:00
John Colvin
b29b2a0adb
fix: Fix a few column types in in PubSubServerTagStatsStream
...
* total_bytes (int -> long)
* last_update_time (DateTime -> long)
2026-01-04 21:08:11 +00:00
John Colvin
76fa35382e
refactor: Add DataStream service modules for Dependency Injection
...
Namely, in DataStreamPublisher and PubSubServer. This is part of a broader
paradigm shift towards Dependency Injection and Factory Pattern.
https://learn.microsoft.com/en-us/dotnet/core/extensions/dependency-injection-guidelines
* Use interfaces to decouple services:
- Decouple ManagedSubscriber from ISubscriberCore impl
- Decouple PubTableBroker from IPublisherCore impl
- Decouple RemoteQueryManager from IManagedSubscriber, IPubTableBroker impl
* Rename Publishers -> PublisherNodes in DataStreamPublisherConfig
* Model config profiles after dotnet appsettings
- Rename Configurations/<name>.json -> appsettings.<name>.json
- Make json fields match corresponding csharp props verbatim
* The Dependency Injection framework doesn't support JsonPropertyName
attributes. Config class props must match json fields verbatim.
* Move reusable startup code into new Bts.Extensions.Hosting proj
* Add pubsub and md-publisher services to compose.yaml
2026-01-04 21:08:11 +00:00
John Colvin
716bc92394
refactor: Only support 1 tag type in IPubSubServerTagHandler
2025-12-30 11:42:23 -05:00
John Colvin
3a6141f3ae
refactor: Change Configuration.initialize to be async
...
Tweak SparkCoreServices to synchronize Configuration.init globally
2025-12-30 11:42:20 -05:00
John Colvin
be2368f95a
refactor: Add Spark service modules for Dependency Injection
2025-12-30 11:38:21 -05:00
John Colvin
7e32ac9e06
cleanup: Remove unused pubsub tag handler code
...
* Removed 'IPubSubServerTagHandler.register'
- All implementations of this function were empty
* Removed 'IPubSubServerTagHandler.supportedTagTypes'
- This property wasn't referenced anywhere
* Remove IWorker inheritance from IPubSubServerTagHandler
- No reason these interfaces have to be tied together
2025-12-30 11:38:21 -05:00
John Colvin
8fc4df1427
refactor: Rename CloudStreamManager.cs -> RemoteQueryManager.cs
...
This matches the file name
2025-12-30 11:38:21 -05:00
John Colvin
2020ebed2d
cleanup: Change pub sub schema prefix 'bluto://' -> 'bts-cloud://'
...
In config json files (not actual code change)
2025-12-30 11:38:20 -05:00
John Colvin
cc483ca4b5
diag: Fix typos in log msgs
...
* Bad string interopolation syntax
2025-12-30 11:38:20 -05:00
John Colvin
aae7356dc7
vscode: Add DataStreamPublisher debug cfg to skip build
2025-12-30 11:38:20 -05:00
John Colvin
8d6e94384c
cleanup: Fix benign typos in build scripts
...
Change BUILD_SPARK_PY var name to BUILD_PY (these scripts build other
projects than 'spark').
2025-12-30 11:38:20 -05:00
John Colvin
7d6e4efa4f
cleanup: Fix numerous build warnings in DataStreamSuite
...
Nearly all warnings were due to nullability issues, since the concept of
nullable reference types did not exist when the DataStream code was
originally written.
* Compression related files
- BZip2InputStream (disable nullability warnings)
- BZip2OutputStream (disable nullability warnings)
- DeflaterHuffman (disable nullability warnings)
- Inflater (disable nullability warnings)
- InflaterDynHeader (disable nullability warnings)
- ParallelJoinTest (disable nullability warnings)
- TarHeader
- TarInputStream (disable nullability warnings)
- ZipEntry
- ZipFile
- ZipInputStream
* AsyncTCPConnection_APM
* AsyncTCPConnection_APM
* InflaterHuffmanTree
* ManagedSubscriber
* ManagedTCPMessageHub
* MapStream
* PubSubClientMessage
- Normalize indentation/whitespace
- Fix some typos
- Address nullability issues to fix build warnings
- Modernize code
* PubSubMessageReactor
* PubSubServerManagedTCPConnection
* PubSubSingleTagStateEvent
* PubSubState
* PublisherCore
* PubsubDeserializationController
* RemoteMessage
- make 'message' nullable to resolve warnings elsewhere (in calling code)
* SharedStreamConfig
* SingleTagData
* SubscriberCore
* SuperMapStream
* SystemHeartbeatPublisher
* SystemStatsPublisher
* SystemSubscriptionMapPublisher
* ThreadSafeQueue
* TradeBarsStream
Only use Registry on windows.
2025-12-30 11:38:20 -05:00
John Colvin
02f566a970
cleanup: Modernize PubSubRoute code, json parsing
2025-12-30 11:38:20 -05:00
John Colvin
d0d05a5c18
cleanup: Remove unused DateTime grammar from exp parser
2025-12-30 11:38:20 -05:00
John Colvin
3fafeca9ad
cleanup: Remove empty file (clearly added by accident)
2025-12-30 11:38:20 -05:00
John Colvin
f5a4e7c410
fix: Remove query from literal error stream
...
The parser can't handle colons in the expression (it throws/crashes)
2025-12-30 11:38:17 -05:00
John Colvin
a0b2a8b186
chore: Add async SQLiteEnumerator to read table as IBlueRowCollection
2025-12-30 11:36:35 -05:00
John Colvin
35a207e234
chore: Add various collection classes
...
These will be useful in stream operators, row indexing, etc:
* AggregateList
* CircularBuffer
* DeltaList
* DictionarySetWrapper
* ImmutableOrderedDictionary
* ImmutableOrderedSet
* IMutableCollectionFacade
- inherits IReadOnlyCollection<T> and ICollection<T>
- throws NotSupportedException in default impls for mutation ops
* IMutableListFacade
- inherits IReadOnlyList<T> and IList<T>
- throws NotSupportedException in default impls for mutation ops
* IndexDependentSelectorList
* MergedSortedList
* OffsetList
* OrderedDictionary
* ReverseArrayList
* SliceList
* StepList
More notes:
* Renames ExceptionAssert.is_valid ExceptionAssert.Index.IsValid.
- Like the 'ExceptionAssert.Argument' class, which provides methods to throw
ArgumentException if a condition isn't satisfied, this class throws
IndexOutOfRange exceptions.
2025-12-30 11:36:35 -05:00
John Colvin
2069c64864
chore: Support mutations in AggregateDictionary (optionally)
2025-12-30 11:36:35 -05:00
John Colvin
9a29606fc1
style: Use standard c# capitalization rules
...
* Use 'PascalCase' for public members (instead of 'snake_case')
* Use 'camelCase' for private members (instead of '_snake_case')
2025-12-30 11:36:34 -05:00
arham
e69012a5ad
fix: sanitized dsl in websocket
2025-12-03 13:35:08 +00:00
arham
4237d58f76
Add: metadata to dsl callback
2025-12-03 13:34:37 +00:00
arham
1c75f4a53f
Add: get last n lines of log for websocketserver
2025-12-03 12:24:16 +00:00
arham
aabf1490eb
Fix: Trycatch on base program.cs to prevent crash
2025-12-03 12:21:03 +00:00
arham
14a79b6352
Add:: cross exchange arb stream
2025-12-02 15:21:06 -05:00
arham
f69b517f83
add: f10 to stop dsqa
2025-12-02 13:05:39 -05:00
arham
2d0d33028a
fix: bug fix to rowbasedappendstream
2025-12-02 12:58:22 -05:00
arham
f953b3bb8a
change: change UnionStream name to AppendStream
2025-12-02 12:47:36 -05:00
arham
73672276f3
Add: add year to datetimexpander stream
2025-12-02 12:46:49 -05:00
John Colvin
10bb90c731
fix: Use IDictionary.GetEnumerator explicitly to iterate keyvals
...
We really need to replace these old non-generic collections with generic ones.
BlueRow's IDictionaryEnumerator implementation iterates over values when passed
to a foreach loop, not key value pairs.
2025-11-19 23:55:35 -05:00
John Colvin
0746b27a40
cleanup: Remove docker submodules again
...
I lost count of the number of times they have been deleted long ago.
Taha, please remove them from your repo so they don't come back :)
2025-11-19 10:33:31 -05:00
John Colvin
3a3c3d45d3
cleanup: Change default DSQA sparkd config server to 127.0.0.1
2025-11-19 10:33:31 -05:00
John Colvin
2014931653
feat: Add live bbo stream
2025-11-19 10:33:31 -05:00
John Colvin
aa740e786c
refactor: Automatically add id column in BlueTableSchemaBuilder
2025-11-19 00:36:56 -05:00
John Colvin
12c6b367f4
fix (preemptive): Avoid StackOverflow in md client securities fn
...
One of the 'securities_incremental' fns was calling back into itself instead of
the other overload. This is a 'preemptive' fix because the problematic code path
wasn't running in practice (though it was a ticking time bomb).
2025-11-19 00:36:56 -05:00
John Colvin
5080960b97
refactor: Replace DataPacket w/ IDataPacket in stream handlers
...
This commit also renames BlueTableSchemaAdaptor to BlueTableSchemaAdapter,
and makes it implement IBlueTableSchema.
2025-11-19 00:36:56 -05:00
John Colvin
770e14752a
chore: Add json facilities for DataStream websocket api
2025-11-19 00:36:56 -05:00
John Colvin
e24b877e58
Add gen purpose blue row/table utils for data streams
...
* Add BlueRowReflection<T> so ViewStream implementations can use
strong row types without needing to implement IBlueRow
* Add default implementations for IDictionary members in IBlueRow to make
implementing IBlueRow less tedious
2025-11-19 00:31:53 -05:00
Taha Afzal
09abe4a432
Added RowBasedAppendStream
2025-11-18 03:10:30 +00:00
Taha Afzal
66c0baa150
Adding meta data to DataPacket, NLStream adds nl -> dsl as a name value pair in the meta data. Also removing windows ref from DataStreamStudio.sln
2025-09-24 13:16:28 +00:00
arham
5305b32c04
Fix file path didnt work in linux
2025-09-17 04:28:25 +00:00
arham
e6304609f8
changes to make streams run on linux
2025-09-16 15:38:21 +00:00
arham
91d6f80b45
streams ws defaults to nl
2025-09-16 15:33:58 +00:00
arham
21d84d811d
simple changes to make stream work with wbesite
2025-09-02 17:17:43 +00:00
arham
77e542efa9
Fix: websocket code
2025-09-02 17:17:43 +00:00
Taha
6b28fc4779
Lot of BlueOrb stream changes
2025-09-02 17:17:43 +00:00
John Colvin
c0602ceb93
fix (api server linux): Add missing deps to fix crash on start
...
The api server likely broke when we reorganized cpp with stuttering dirs.
* Link Catch2 and ssh2
* Add a few .cpp files to the build
2025-09-02 14:06:08 +00:00
John Colvin
6f5d89cceb
fix build (api server linux): Trivial cmake changes
...
* Get rid of old 'cfg_defaults' param in get_proto_sources impl for linux client
builds
* Make libfmt dep header-only
* Use CMAKE_SHARED_LIBRARY_PREFIX if "PREFIX" is undefined when copying libspark
to dotnet bin dirs
2025-08-29 19:54:39 +00:00
arham
7baaafbeeb
sasalgo local pos working
2025-08-29 15:50:43 +00:00
Adeel Khan
8569b02f5c
cleanup: spread websocket.
2025-08-25 11:45:57 +00:00
Adeel Khan
8f0784e6c2
cleanup: logs.
2025-08-25 11:31:28 +00:00
Adeel Khan
c15968e17e
ADD: py_spread.h..
2025-08-25 07:51:04 +00:00
John Colvin
0e331229d4
fix build: Add missing constructors for SecuritiesEventLog
2025-08-25 06:07:30 +00:00
John Colvin
45c85310e7
hotfix: Remove 0 qty check in ExecutionReport validation fn
...
This (hopefully) fixes part of a compounding error where 1) the SprayAndSkewAlgo
sends 0 lot orders, which are rejected by the exchange. Then 2) the REJECT exe
report fails a misguided "validation" check due to its 0 qty, and is never
propagated to the rest of the system.
2025-08-25 05:53:36 +00:00
John Colvin
7b41dbb19a
diag: Reduce "Waiting for request" log level to diag in py bridge
...
It's too noisy for Info
2025-08-24 17:45:21 +00:00
Adeel Khan
e6a3116327
FIX: Minor recorder fixes.
2025-08-21 22:12:03 +00:00
Adeel Khan
86ce16790a
FIX: Changed log level.
2025-08-21 22:12:03 +00:00
Adeel Khan
897cf10be6
ADD: Support for bbo in MDRecorder & Config support.
2025-08-21 22:12:03 +00:00
Adeel Khan
ca27903f63
ADD: Support for Spreads on Bybit. Gateio fixes.
2025-08-21 22:12:03 +00:00
Adeel Khan
1b5f1bfb27
UPDATE: Added back Spots to Bybit MD.
2025-08-21 22:12:03 +00:00
John Colvin
217db51cbc
fix: Propagate error message to ExecutionReport in bybit gw
...
Specifically, the 'rejectReason' field in order update json.
2025-08-21 13:52:57 +00:00
John Colvin
c08a893ecf
change: Hardcode PostOnly flag for Limit/GTC orders in bybit gw
...
'PostOnly' is a TimeInForce flag that we don't have in our system. It makes it
so Limit orders that would be filled on entry are rejected. Ali's SprayAndSkew
algo needs this to avoid taker fees.
2025-08-21 13:31:37 +00:00
John Colvin
a022f08b49
fix: Don't log error when positions are empty in bybit gw
...
This particular error log was intended for failed position requests. Since an
empty list evaluates to false in python, we were incorrectly interpreting an
empty result as a failed request.
2025-08-20 15:08:25 +00:00
John Colvin
5af98658d8
fix: Fix typos in bybit_execution_gateway.py
...
* Change 'new_req' -> 'req'
* Change 'self.exe_report_callback' -> 'self.bridge.on_execution_report'
...this is what you get when you take shortcuts and copy/paste code.
2025-08-18 22:14:55 +00:00
John Colvin
933511f430
fix: Reset last filled qty to 0 on updates with no fills in bybit gw
...
For example, on status change updates.
2025-08-18 18:54:38 +00:00
John Colvin
63291d7374
fix: Buffer req on ws closed exception just like normal disconnect in bybit gw
2025-08-18 18:31:58 +00:00
John Colvin
30276066f8
cleanup: Remove redundant code
2025-08-18 18:24:05 +00:00
John Colvin
809a66323d
fix: Guarantee unique tx id for bybit exe reports
...
Use a version counter instead of 'time.time_ns' (the latter probably would have
been fine in practice, but the former is better).
2025-08-18 15:54:22 +00:00
John Colvin
5c4ee1a262
fix: Insulate algos from bybit disconnect/reconnect
...
* Buffer incoming requests while reconnecting
* Sync orders upon reconnect and fire execution reports to account for diff
2025-08-18 15:54:22 +00:00
John Colvin
504f441d2e
fix: Count fills correctly in bybit exe gw plugin
...
* Round fill price and qty to 7 digits in bybit gw plugin
* Remove erroneous line of code that reset filled_quantity to 0 on each
update (it was causing partial fills to be overcounted)
2025-08-18 15:51:11 +00:00
John Colvin
fd51025b00
diag: Increase waiting for admin data log throttle to 5s
...
This log is particularly noisy if the configured account isn't in the system. It
logs continuously until the account is added via the Risk webapp.
2025-08-18 15:51:11 +00:00
John Colvin
f4afd92db2
diag: Get sec name from py_sec instead of var that was std::moved
2025-08-18 15:51:11 +00:00
John Colvin
b1fe5b52f6
diag: Change bybit_dev exe gw console level to INFO
...
I found myself constantly changing it from WARN to INFO while developing/testing.
This is a 'dev' config profile, so it should be tuned for development.
2025-08-18 15:45:43 +00:00
John Colvin
164ca306f5
hotfix: Reject new orders when bybit gw not in READY state
2025-08-15 13:42:33 +00:00
John Colvin
a6d23ef4ef
devcontainer: Add python extension
2025-08-15 04:00:25 +00:00
John Colvin
c0f4090d70
fix: Add error_msg to PyExecutionReport json fmt
2025-08-14 03:54:33 +00:00
John Colvin
63c94e09e7
diag: Add bybit order ticket webapp for testing purposes
2025-08-13 21:39:21 +00:00
John Colvin
fc94ec4d46
feat: Automatically reconnect in bybit exe gw plugin
...
Previously, the plugin would just throw an exception and assert crashed
when this happened (the exception would bubble up to the c++ bridge).
2025-08-13 21:39:21 +00:00
John Colvin
e2fdb569c6
feat: Fire position snapshots in bybit exe gw plugin
2025-08-13 21:39:21 +00:00
John Colvin
804c27eb49
fix: Stop bybit websocket stream ping timer on disconnect
2025-08-13 21:39:21 +00:00
John Colvin
6448b4cf90
diag: Add support for custom json formatter in JsonElement
...
The JsonElement class is primarily used for structured logging, as it provides a
means to format objs as json via printf style formatting outside the "hot" path.
2025-08-13 21:39:21 +00:00
John Colvin
e01a825aff
fix: Create parent dirs if necessary for py plugin log files
2025-08-13 21:39:21 +00:00
John Colvin
00649e0c14
chore: Hook up py execution gw position callback
...
Refactor the py bridge placeholder function to accept a vector of position
objs (instead of a single one) to more accurately reflects its c++ counterpart.
It also allows us to pass the account's entire position (for all securities) in a
single call.
2025-08-13 21:39:21 +00:00
arham
ae1e9ecb29
Removing docker submodules
2025-08-11 17:03:26 -04:00
John Colvin
ff65acba05
fix: Gracefully handle missing column settings in pnl win
...
Pnl window settings are stored with the workspace on the server (like all shell
window settings), and may originate from an older version of Spark with a
different set of columns. We shouldn't crash if this happens.
2025-08-07 14:33:55 -04:00
John Colvin
dc08945719
fix: Check proto HasPrice/QuantityDisplay before accessing props
2025-08-07 14:02:10 -04:00
John Colvin
a739ca9a75
fix build: Disable warning in cs Timestamp struct
...
It is initialized from data stored in shared memory (not a normal struct). The
cs build emits a warning because it detects a field that "is never written to
and will always have a default value of 0."
This code hasn't changed for years. It suddenly becoming a warning-as-error is
likely related to a recent Visual Studio update.
2025-08-07 13:39:21 -04:00
John Colvin
ed7b187876
feat: Add ExportToCsv button to fills win
2025-08-07 13:01:06 -04:00
John Colvin
53e1e92a6a
fix: Keep existing items in SettingsPersistenceModel filtered sub
...
Bugs (fixed):
* SettingsPersistenceModel drops items after initial update in filtered
subscriptions.
Cause: The SettingsPersistenceModel subscribe fn only publishes the "added"
items in each update, and omits pre-existing items. From the observer's
perspective, pre-existing items appear deleted.
2025-08-05 16:23:02 -04:00
John Colvin
eee7af494a
fix (fills ui): Preserve sort order during incremental update
...
Binary search is used to add, remove, and change rows in response to
incremental updates. Needless to say, if the rows become unsorted,
everything breaks.
Bugs (fixed):
* The fills window crashes sometimes, possibly related to client
reconnecting to server.
Cause: This was a 2 part bug.
1) Changes to existing rows are applied BEFORE the new sort index
is determined via binary search. If the change affects a
property in the current sorting criteria, the rows could
become unsorted and thus invalidate the binary search.
2) When an existing row is changed so that its new sort index is
greater than its current one, the new index is not decremented
by one (it must be since the row is removed before it is
re-inserted).
2025-08-05 13:47:06 -04:00
Taha Afzal
91a7c35edf
Registering Pingpong algo
2025-08-05 15:59:43 +00:00
Taha Afzal
3eaef1a1b6
PingpongAlgo scaffolding
2025-08-05 15:22:53 +00:00
arham
4a70b4910d
config: test algos
2025-07-28 13:07:15 +00:00
arham
7697f73ada
Fix: change order of plugin loading
2025-07-28 13:03:45 +00:00
arham
029875e0a0
Add: SASALGO
2025-07-28 13:03:26 +00:00
John Colvin
9dc7611c0a
fix build: Forgot to add NullableWrapper.cs a few commits back
...
When I made the change to format min order qty/notional cols with sec
ticks
2025-07-21 17:07:52 -04:00
John Colvin
782cdd7430
ui (orderbook): Use dark theme font color in Algo State grid
...
It was barely legible to against the dark background (must have been
overlooked when we originally implemented dark theme).
2025-07-21 10:02:38 -04:00
John Colvin
4184278d94
fix: Fix typo in weighted_average fn
...
Was multiplying distance from x by wrong weight
Bugs (fixed):
* Pnl window avg cost is wrong when there are both start and day
positions
2025-07-18 09:54:17 -04:00
John Colvin
0b3fa813f1
tool: Add script to dump structured logs to console
2025-07-17 16:25:23 +00:00
John Colvin
e60f2159e1
fix: Prevent python plugins from intercepting kill sig
...
So the process actually terminates on ctrl+c
2025-07-17 16:25:23 +00:00
John Colvin
610861be20
diag: Shorten BookLevel json field names
...
To reduce log file size and improve readability
2025-07-17 16:25:23 +00:00
John Colvin
1787460c35
refactor: Rewrite binance usds futs md without ccapi
2025-07-17 16:25:23 +00:00
John Colvin
588b86710f
refactor: Rename lib_binance_execution lib_binance
...
Implementing md and execution for the same exchange in separate projects
has proven to be messy and impractical. I'm renaming this project in
advance of a binance md rewrite which will join md and execution
together in the same lib.
2025-07-17 16:25:23 +00:00
John Colvin
3022a25a10
Add config toggle to batch subscribe binance ufuts md
2025-07-17 16:25:23 +00:00
John Colvin
cf30649dd2
fix: Fix elapsed check in ConcurrentQueue waiter
2025-07-17 16:25:23 +00:00
John Colvin
afb8444815
diag: Use structured logging in gen md listener
2025-07-17 16:25:23 +00:00
John Colvin
fc59247958
cleanup: Remove redundant if check in gen md listener
2025-07-17 16:25:23 +00:00
John Colvin
14c417eeec
refactor: Use core::TimeStamp::to_ll in gen md listener
...
Working towards unifying TimeStamp code
2025-07-17 16:25:23 +00:00
John Colvin
62a6e4340f
chore: Add to_ll fn to core::TimeStamp
...
One step closer to unifying TimeStamp code
2025-07-17 16:25:23 +00:00
John Colvin
cce85e45b7
chore: Make a few domain types fmt formattable
...
So we can pass them directly to LOG statements
* Book
* BookSide
* TradeRecord
2025-07-17 16:25:23 +00:00
John Colvin
ff584ee19a
refactor: Make pretty enum formatting more performant
2025-07-17 16:25:23 +00:00
John Colvin
f146859677
diag: Disable frame_header/payload logs in ws client
...
They're useless noise. Worse than that, the messages are byte strings
that cause text searches to omit matches (via grep, less, etc.).
2025-07-17 16:25:23 +00:00
John Colvin
cf55e4bc1d
refactor: Make domain::Security default ctr constexpr
2025-07-17 16:25:23 +00:00
John Colvin
a0b1078572
chore: Move a few inlined fns to .cpp
2025-07-17 16:25:23 +00:00
Taha
afd229b7c7
Merging
2025-07-15 17:51:28 -04:00
John Colvin
bfc7615c9a
ui: Add "Is Aggressor" column to fills grid
2025-07-15 14:48:44 -04:00
John Colvin
0023574905
build: Add data stream projs to spark_client.sln
...
They're already built with the solution as dependencies, so it seems
appropriate to include them. This also fixes intellisense issues in
those projs when you have spark_client.sln loaded.
2025-07-15 10:22:23 -04:00
John Colvin
7e79a21cd4
Add some nifty DataPacket/TableUpdate IObservable utils
2025-07-15 10:13:53 -04:00
John Colvin
6b0030559b
fix build: Fill in transaction fee prop getter
...
TODO: Actually implement maker/taker fee. For now, just return 0.
2025-07-15 10:13:53 -04:00
John Colvin
77caef2640
fix build: Add missing name to fn arg
2025-07-15 10:13:53 -04:00
Adeel Khan
edb8a9d516
FIX: Removed Commented Out Code.
2025-07-14 22:35:36 +00:00
Adeel Khan
153631191a
FIX: Removed fallbacks(not needed).
2025-07-14 22:35:36 +00:00
Adeel Khan
026a8af893
FIX: Removed Normalize Contract Function-Not Needed.
2025-07-14 22:35:36 +00:00
Adeel Khan
3739532947
FIX: Reduced REST calls.
2025-07-14 22:35:36 +00:00
Adeel Khan
0cb3cadc11
FIX: Added filter to exclude InverseFutures--MD not freezing.
2025-07-14 22:35:36 +00:00
Adeel Khan
36db69dc67
FIX: bybit_md_provider.py works with default symbol format in py_bybit_md_provider.json.--MD Freezes on InverseFutures.
2025-07-14 22:35:36 +00:00
Adeel Khan
c7c755a964
ADD: Added support for Linear USDC channel-py_bybit_md_provider.json takes full security names.
2025-07-14 22:35:36 +00:00
Adeel Khan
0e460353a7
ADD: BYBIT MD support for USDC Margined Perps.
2025-07-14 22:35:36 +00:00
Adeel Khan
5198236b45
ADD: BYBIT MD support for Spots and Linear USDT Margined Perps/Futures.
2025-07-14 22:35:36 +00:00
Taha
767fa25d61
Adding comments
2025-07-14 15:18:03 -04:00
Taha
0858eaac23
Polishing BlueOrb streams
2025-07-13 21:21:10 -04:00
Taha Afzal
593601551d
Adding FillAggressorFlag o ExecutionReport
2025-07-13 22:43:19 +00:00
John Colvin
036df46b1c
deploy: Copy algo plugins from config to runtime dir
...
So we can deploy algos by uploading them to the config dir on the
server, then bouncing sparkd.
2025-07-07 17:24:13 +00:00
John Colvin
84697a6d65
dev qol: Add slim requirements.txt to binance_dev cfg profile
...
So it doesn't needlessly install every package in our dev venv when it
builds the container, which can take several minutes.
2025-07-07 16:34:29 +00:00
John Colvin
bb550d3f88
fix (deploy): Add PYTHON_REQUIREMENTS docker arg to base image
...
Docker args must be redeclared in each build stage that uses them.
2025-07-07 16:34:29 +00:00
John Colvin
85bd2da414
cleanup: Remove security from StoredFillEvent
...
It created an unnecessary dependency
2025-07-07 16:02:42 +00:00
John Colvin
cc55fe1acf
ui: Format min order qty/notional cols with sec ticks
2025-07-07 12:00:39 -04:00
John Colvin
bb64760c62
fix (mview): Add switch case for Venue column comparer
...
Bugs (fixed):
* In mview, venue column sorting is broken
2025-07-07 12:00:39 -04:00
John Colvin
8b9525f503
dev qol: Add python.env for plugin intellisense
2025-06-26 04:25:43 +00:00
John Colvin
eccfd1ee30
fix: Disable ccapi md provider if venue has empty symbols config
...
Previously, ccapi exchanges (e.g., binance) would subscribe to EVERYTHING if
symbols config was empty. There are way too many symbols for that.
2025-06-26 04:20:08 +00:00
John Colvin
7b933026bb
refactor: Only import fake_md_bridge if running plugin standalone
2025-06-25 16:33:30 +00:00
John Colvin
ffe859703a
fix: Forgot to add fake_md_bridge.py
...
Needed to run py md plugins as standalone apps
2025-06-25 16:30:44 +00:00
John Colvin
4756e243fa
chore: Add DUCK and MILK to bybit_dev config profile
2025-06-24 19:57:44 +00:00
John Colvin
0133159296
fix: Support integer ticks in sparkd, py plugins
...
Bugs (fixed):
* sparkd crashes if DUCK is added to bybit symbols
Cause: DUCKUSDT qty tick is 10 (previously, we only supported qty
ticks <= 1)
2025-06-24 18:09:20 +00:00
John Colvin
38afd3055f
diag: Add sec name, venue, and type to PyBook json
2025-06-24 18:08:27 +00:00
John Colvin
4f184c2566
feat: Support running bybit_md_provider as standalone app
...
HACK: I changed it so numpy is imported AFTER python_interop_module to
avoid a strange segfault that only happens when running standalone app.
2025-06-24 18:08:27 +00:00
John Colvin
f608497094
fix: Propagate min notional value from py plugins sparkd
...
It was getting lost in the translation from PySecurity ->
domain::Security -> FixedSecurity.
2025-06-24 15:27:13 +00:00
John Colvin
9035b95612
fix: Propagate newly deleted synths in MDDaemon
...
There was a typo when determining "deletes" and "undeletes" on synth
changes (i.e., when deleted changes false -> true, and true-> false
respectively).
2025-06-24 10:48:42 -04:00
John Colvin
7483665b5a
chore: Set min notional value for secs in bybit md provider
2025-06-24 10:48:42 -04:00
John Colvin
5f141a8030
chore: Add missing TimeInForce enum vals in py
2025-06-24 10:48:42 -04:00
John Colvin
83f1b5b567
dev qol: In envsource.fish, split PATH vars into list
...
Assume they are semi-colon delimited.
2025-06-24 10:48:42 -04:00
John Colvin
06ad3a1d9e
dev qol: Add trade_client_cli.py to test md/exe plugins
...
Independent of sparkd
2025-06-24 10:48:42 -04:00
John Colvin
01de13bb43
refactor: Pass sec id instead of ptr to FilledPositionEvent
...
Then we don't need to resolve the security in order to fire the event.
This removes a noisy log that would happen when the security resolution
fails as a byproduct.
2025-06-24 10:48:42 -04:00
John Colvin
155a396af5
fix: Round tick base to power of 10 in default case
...
Bugs (fixed):
* Bybit execution gw throws on MILKUSDT orders due to bad price tick.
Cause: rounding error when converting the small price tick (0.00001)
to "tick factors" (1/10000). The denominator is computed as
1/0.00001 = 99999.9...
2025-06-24 10:48:42 -04:00
John Colvin
399f9e61e2
chore: Add security type to py reqs
...
Venue and sec name alone don't always identify a unique security.
2025-06-24 10:48:42 -04:00
John Colvin
1f67456cc5
cleanup: Remove unused code
2025-06-24 10:48:42 -04:00
John Colvin
9ff7821b59
fix: Propagate bybit gw conn status change to bridge
2025-06-24 10:48:42 -04:00
John Colvin
c598f831d0
ui: Change default TimeInForce to GTC
...
The old default, "Day" orders, isn't supported at crypto exchanges, it
doesn't apply (there is no "end of day").
2025-06-24 10:48:42 -04:00
John Colvin
3ca4cedf54
ui (mview): Add min order qty/notional value columns
2025-06-24 10:48:42 -04:00
John Colvin
d919ec5474
fix (mview): Bind cpp column filter to correct prop in vm
...
Was bound to "currency_filter" (prob a typo due to lazy copy/paste job)
2025-06-21 01:24:04 -04:00
John Colvin
98c2d738b2
fix: Set timeInForce in bybit order reqs
2025-06-20 20:17:01 +00:00
John Colvin
cf3f7e6862
fix: Don't send unlisted/fake bybit securities to sparkd
...
Securities that aren't listed in the instrument-info response from the
exchange shouldn't be in our system.
2025-06-20 16:37:47 +00:00
John Colvin
ae868ab74d
fix: Use default cash-per-point of 1 at bybit
2025-06-20 16:37:47 +00:00
John Colvin
bd22f4779d
fix: Request all "pages" of instrument info (not just first)
2025-06-20 16:37:47 +00:00
John Colvin
27cbd51b1c
fix: Fire reject report if order ack has errors
...
Rejects are ONLY observable in the order ack, not the execution report
stream from which all other updates are observed. While the pybit sdk
does expose ack callbacks, it doesn't invoke them on rejects/errors.
2025-06-20 16:37:47 +00:00
John Colvin
02626ce35c
chore: Copy a few pybit modules into our code for tweaking
...
No tweaks have been made (yet). I'm copying the files verbatim first
to give us a frame of reference. Then, when the tweaks are committed,
we'll be able to view them in terms of the diff with the sdk.
2025-06-18 18:39:18 +00:00
John Colvin
d219804caf
fix: Prepend plugin dir to py path, rather than append
...
So our modules win import-name conflicts with system/third party ones.
This became a problem when I copied a couple files from the pybit sdk
into our plugins dir in order to apply tweaks.
2025-06-18 18:18:35 +00:00
John Colvin
1e0ec5bb46
chore: Bind __str__ fns for py interop list types
...
The default __str__ for these list types shows item addresses (not the
items themselves)...a bit of a headscratcher considering the lists'
element types have proper __str__ functions.
2025-06-18 18:14:45 +00:00
John Colvin
c281bc49b5
improvement: Set bybit exe gw websocket timeout to 5s
...
The default (1s) is too strict in practice.
2025-06-17 17:49:52 +00:00
John Colvin
b3566155a3
fix: Fix rounding error when creating tick factors
2025-06-16 15:52:09 +00:00
John Colvin
a4e39afbb9
ui: Add cash-per-point col to mview
2025-06-16 15:52:09 +00:00
John Colvin
efce01d28e
vscode: Replace net7 w/ net8 in tasks.json
2025-06-16 15:52:09 +00:00
John Colvin
d362022b89
Add c# SyntheticBookCalculator
2025-06-16 15:52:09 +00:00
John Colvin
e7d751fb68
refactor: Remove unnecessary constraint on MathUtils.lcm params
...
Not sure why T ever needed to implement IMultiplyOperators<T, int, T>
2025-06-16 15:52:09 +00:00
John Colvin
50eefc65d4
cleanup: Remove unnecessary py_module.cpp files
...
We used to have separate modules for md and execution. I forgot
to remove these after unifying them to a single module.
2025-06-16 15:52:09 +00:00
John Colvin
8770de4a87
diag: Reduce book log noise in md plugins
...
They're too noisy for Info level.
2025-06-16 15:52:09 +00:00
John Colvin
e799b6e24b
diag: Optimize logging in bybit exe gw plugin
...
* Format params as json (not python pseudo json)
* Format params lazily
2025-06-16 15:52:09 +00:00
John Colvin
69e338c1ca
fix: Use lock_guard instead of lock/unlock calls
...
I just noticed it was technically possible for the "work thread" (in py
plugin manager) to be started twice, due to improper lock/unlock calls.
2025-06-16 11:08:59 -04:00
John Colvin
e8bb64a80f
Increase sleep time in bybit_md_provider keep-alive loop
...
This thread's only job is to stay alive until "stop" is called. It
doesn't need to be particularly fast/responsive. Longer sleep intervals
reduce contention with the "hot" thread that receives market data.
2025-06-16 11:08:59 -04:00
John Colvin
8e2ede596f
diag: Add security to assert msg when qty tick deduction fails
2025-06-16 11:08:59 -04:00
John Colvin
9772d0eb77
deploy: Add alphaworx_zen_hk_live-preview configuration
2025-06-16 11:08:59 -04:00
John Colvin
687e2477c0
fix: Assert that acc name length < max_size (not size)
...
Since we changed the account field from std::array -> bts::core::SmallString
2025-06-16 11:08:59 -04:00
John Colvin
1bd0ba9950
deploy: Install python requirements in docker
...
No point in using a virtual environment. These containers have one
purpose: run sparkd with a constant, predetermined set of py plugins.
2025-06-16 11:08:59 -04:00
John Colvin
ddabc744f2
chore: Update alphaworx_zen_hk_live init.py to query new secret
...
I decided to put all alphaworx api keys in one secret. It's easier this way.
2025-06-16 11:08:58 -04:00
John Colvin
74b88b003e
fix: Fix config dir env var in bybit_dev profile
2025-06-16 11:08:58 -04:00
John Colvin
aaf1be09c2
fix: Fix SmallString numeric parsing, make more robust
...
* Fix by parsing numbers from left to right instead of right to left
(previously, would parse "17" to 71)
* Support leading +/- signs
* Throw if unexpected char encountered
* Unit tests
2025-06-16 11:08:58 -04:00
John Colvin
e3bd9a457c
fix: Change thread_id type to size_t (not int64_t)
2025-06-16 11:08:58 -04:00
John Colvin
59f62b6ec9
cleanup: Remove unnecessary signal handler in bybit_md_provider.py
...
We handle them properly in sparkd now
2025-06-16 11:08:58 -04:00
John Colvin
b46e75f7d7
cleanup: Sort gateio symbols in symbols.conf
2025-06-16 11:08:58 -04:00
John Colvin
3f100feaca
chore: Add config json for py plugins
...
Support overrides per venue in a separate file, so symbols can be
changed after deployment using arham's widget.
2025-06-16 11:08:58 -04:00
John Colvin
093da2a938
fix: Init shared_ptr w/ default obj (not null)
...
Prob a typo
2025-06-16 11:08:58 -04:00
John Colvin
2f17c2b8c5
chore: Fix path in .env file (server/sparkd -> app_sparkd)
2025-06-16 11:08:58 -04:00
John Colvin
33bfdc517a
fix build: Remove include of non-existent header
...
I created the file locally, but ended up not using it and forgot to remove an
include before I pushed.
2025-06-16 11:08:58 -04:00
John Colvin
d17be48e6d
fix build: Always return value in non-void fn
2025-06-16 11:08:58 -04:00
John Colvin
cbaa1df641
fix: Don't compare size_t to -1 in SmallString num parsers
2025-06-16 11:08:58 -04:00
John Colvin
8c23665d65
refactor: Manage all py plugins (md and exe) in one class
...
All calls to/from python are performed on one thread via a simple
message queue (necessary because of the global interpreter lock).
2025-06-16 11:08:58 -04:00
John Colvin
c7db105533
chore: Add pybit to py venv
2025-06-16 11:08:58 -04:00
John Colvin
3f9923239e
diag: Log incoming books at Info level in bybit_md_provider
2025-06-16 11:08:58 -04:00
John Colvin
9ae9451359
chore: Add bybit execution config to bybit_dev profile
2025-06-16 11:08:58 -04:00
John Colvin
c33e5ddb02
chore: Add numpy to py venv
...
This is needed for md plugins
2025-06-16 11:08:58 -04:00
John Colvin
54388d3b92
fix: Include fill id in format str for ExecutionReport
2025-06-16 11:08:58 -04:00
John Colvin
17ada3c57c
dev qol: Bind PySecurity __format__ to fmt::formatter impl
2025-06-16 11:08:58 -04:00
John Colvin
046f412ec4
refactor: Change floats to doubles in py bridge types
...
Getting rounding errors with floats
2025-06-16 11:08:58 -04:00
John Colvin
c94d11f525
refactor: Use SmallString instead of std::array in ExchangeFillID
2025-06-16 11:08:57 -04:00
John Colvin
2b69846381
Add py bybit exe config to bybit_dev profile
2025-06-16 11:08:57 -04:00
John Colvin
bdd5e08b60
refactor: Consolidate all py interop into single lib
...
It was just too hard trying to make it work with separate libs. The
main issue was getting the python md and execution modules to
recognize PySecurityList and other types defined in the core module.
2025-06-16 11:08:57 -04:00
John Colvin
7c9330650d
refactor: Move tick fns into gen-purpose tick_utils.h
2025-06-16 11:08:57 -04:00
John Colvin
98fca5ad7f
Change bybit_dev symbols.conf to list bybit futs (not spots)
2025-06-16 11:08:57 -04:00
John Colvin
8a0fcce90d
fix: Actually use configured logger in bybit_md_provider.py
2025-06-16 11:08:57 -04:00
John Colvin
112527f9ed
dev qol: Reduce noisy logs in PositionServicePNLHelper
2025-06-16 11:08:57 -04:00
John Colvin
fc1e20538d
build: Add cmake script to sym link py module and plugins
...
We have several of these (python_core, python_md, python_execution),
so the repetative boilerplate code was starting to pile up.
2025-06-16 11:08:57 -04:00
John Colvin
83acbecf55
deploy: Install/activate py venv in sparkd container
2025-06-16 11:08:57 -04:00
John Colvin
06c494291c
dev qol: Add pyrightconfig.json for type hints in py/c++ bridge
2025-06-16 11:08:57 -04:00
John Colvin
fe74aed048
Tweak py to get rid of false positive type hint warns
2025-06-16 11:08:57 -04:00
John Colvin
b94cdb561e
feat: Support python execution plugins
2025-06-16 11:08:57 -04:00
John Colvin
06bd8791c0
refactor: Move py security (and related types) to python_core lib
...
So the execution gw plugins can use it (as well as the md plugins).
2025-06-16 11:08:57 -04:00
John Colvin
b5850cdb02
fix: Add missing switch cases for bybit & gateio
2025-06-16 11:08:57 -04:00
John Colvin
545d76142f
fix: Initialize bybit secs as perp futs (not spots)
2025-06-16 11:08:57 -04:00
John Colvin
edc2cea60e
dev qol: Add wait/notify functionality to ConcurrentQueue
2025-06-16 11:08:56 -04:00
John Colvin
e6466f8309
chore: Add CANCEL_ORDER op to binance.env
2025-06-16 11:08:56 -04:00
John Colvin
501be8d6a5
dev qol: Add ConcurrentValueStore, with notify/wait functionality
...
Uses std::condition_variable
2025-06-16 11:08:56 -04:00
John Colvin
7dea9b3792
fix: Don't raise ex if var isn't defined in req path
2025-06-16 11:08:56 -04:00
John Colvin
a3f49b1ce8
dev qol: Add gen-purpose validation fns for execution gws
2025-06-16 11:08:56 -04:00
John Colvin
765237d701
build: Use new gen-purpose python cmake fns in py md proj
...
Significantly simplifies CMakeLists.txt
2025-06-16 11:08:56 -04:00
John Colvin
97c52410a2
build: Add gen-purpose InitPythonModule, InitPythonPlugin cmake scripts
2025-06-16 11:08:56 -04:00
John Colvin
8b43d93e26
dev qol: Add fn to make Stopwatch and start it at once
2025-06-16 11:08:56 -04:00
John Colvin
14baa7d62e
chore: Use same log format as sparkd in py md plugins
2025-06-16 11:08:56 -04:00
John Colvin
a054f4cc63
improvement: Set PyBook data in single call to reduce interop overhead
2025-06-16 11:08:56 -04:00
John Colvin
5311128607
Reduce log noise in py md providers
2025-06-16 11:08:56 -04:00
John Colvin
075acdc8eb
doc: Improve py md readme
...
* Put examples in a table
* Show command to create symlinks for intellisense
2025-06-16 11:08:56 -04:00
John Colvin
e1fdf6306b
refactor: Redesign py md so it doesn't lock the global interpreter
...
We can only embed one interpreter in the sparkd process, so all py
plugins need to share it.
* Move core py interop code to new lib_python_core. We're about to add a
new lib for py execution, so it needs to be accesible from both
execution and md libs
* Fix typo for type hint in py_md_utils.py
* Run py md providers on background thread
* Rename MdSink -> MdBridge
2025-06-16 11:08:56 -04:00
John Colvin
3b9fb2759b
build: Add lib_spark subdir first (all others depend on it)
2025-06-16 11:08:56 -04:00
John Colvin
3f89d3b7f7
dev qol: Add to_chrono fns to TimeSpan
2025-06-16 11:08:56 -04:00
John Colvin
a6dd0d842d
dev qol: Add -> operators to ValueWrapper for convenience
...
So we can type "foo->" instead of "foo.value()" (much shorter!)
2025-06-16 11:08:56 -04:00
John Colvin
d050d2d19a
build: Link against system installed ssl to support py interop
...
Unless we want to build python packages ourselves, the underlying clibs
they use link to the system installed ssl. Notably, the requests module.
2025-06-16 11:08:56 -04:00
John Colvin
942d00a8b1
chore: Add pybind11, pybind11-stubgen to py venv
2025-06-16 11:08:56 -04:00
John Colvin
31cb25ac2e
improvement: Generate py stubs for md providers
...
Provides intellisense for the python_md_module
2025-06-16 11:08:56 -04:00
John Colvin
cbb43a22de
cleanup: Get rid of unecessary namespace prefixes
2025-06-16 11:08:55 -04:00
John Colvin
9e7b4849f0
cleanup: Get rid of "PyList" classes, bind to stl vector instead
...
I wasn't aware this was possible until recently.
2025-06-16 11:08:55 -04:00
John Colvin
6e72890153
refactor: Move SimpleOrderKeyMap from binance_execution to lib_spark
...
It provides basic functionality that will be useful in other execution gateways.
2025-06-16 11:08:55 -04:00
John Colvin
c238fce057
chore: Add smart parse and pretty name fns for proto enums
...
Mainly to ease the pain of representing enums as strings in python md
and execution plugins
2025-06-16 11:08:55 -04:00
John Colvin
b8f5db4ee2
refactor: Move ErrorList from binance_execution to lib_spark
...
It provides basic functionality that will be useful elsewhere
2025-06-16 11:08:55 -04:00
John Colvin
87c8b9862a
refactor: Use SmallString std::array in AccountName
2025-06-16 11:08:55 -04:00
John Colvin
fbc2d8633d
refactor: Use SmallString instead of std::array in ExchangeOrderID
2025-06-16 11:08:55 -04:00
John Colvin
d12d798fa5
Add our own "SmallString" class for fixed cap strings
...
This will replace the std::array<char, N> we use in ExecutionReport, etc.
among other things
2025-06-16 11:08:55 -04:00
John Colvin
e75be2da2f
refactor: Move ExecutionReportStore to lib_spark
...
From lib_binance_execution
2025-06-16 11:08:55 -04:00
Adeel Khan
3ae3a7094e
CLEANUP: BYBIT Symbols.conf.
2025-06-16 11:08:55 -04:00
Adeel Khan
bafa2f71ba
ADD: BYBIT MD Working, NaN's also Added.
2025-06-16 11:08:55 -04:00
Adeel Khan
63bd29a49e
ADD: BYBIT Securities showing up on frontend. Default Contract Spec
2025-06-16 11:08:55 -04:00
Adeel Khan
5fdc9ca48b
ADD: GATEIO md_provider with dynamic contract specs using Batch REST call
2025-06-16 11:08:55 -04:00
Adeel Khan
a19e7bc7b4
ADD: GATEIO md_provider with dynamic contract specs 1 REST call per Contract
2025-06-16 11:08:55 -04:00
Adeel Khan
04b0a89644
ADD: GATEIO md_provider with default contract specs
2025-06-16 11:08:55 -04:00
John Colvin
363a43cb8b
Add gateio_dev config profile for Adeel
2025-06-16 11:08:55 -04:00
John Colvin
c9f9c5f0f6
cleanup: Remove unused spark.conf file
...
Originally, this spark.conf was hardcoded into compose.yaml, and copied
into the sparkd container on each deploy. It hasn't been used since
config profiles were introduced.
2025-06-16 11:08:54 -04:00
John Colvin
ab84a05644
Add py_dummy_md config profile to test py md plugin
2025-06-16 11:08:54 -04:00
John Colvin
4681f22e71
deploy: Move configurations to new stutter dir "app_sparkd"
2025-06-16 11:08:54 -04:00
John Colvin
a25e055e35
Add protos for gateio
2025-06-16 11:08:54 -04:00
John Colvin
2386612b51
Add protos for bybit
2025-06-16 11:08:54 -04:00
John Colvin
3606dac145
build: Move onix fix adapter to its own lib
...
We should keep order execution dependencies out of lib_spark.
2025-06-16 11:08:54 -04:00
John Colvin
bf936c9d13
fix build: Move OnixsUtils to from lib_spark to app_sparkd
...
They're only needed MDP3Main.cpp and ICEMain.cpp. We're one step closer
to removing lib_spark's dependency on onixs.
2025-06-16 11:08:54 -04:00
John Colvin
1aeeb7170e
cleanup: Remove unnecessary onixs include from TrafixOrderStateHandler.h
2025-06-16 11:08:54 -04:00
John Colvin
78ad8a3aed
feat: Support python md plugins
2025-06-16 11:08:54 -04:00
John Colvin
5ca8dbafaf
Add "clear" fn to Book & BookSide
...
Prelude to python market data bindings
2025-06-16 11:08:54 -04:00
John Colvin
b464b9466e
Add "smart" parse fns for a couple proto enums
...
Prelude to python market data bindings. Unlike the normal parse fns, the
"smart" variants aren't case sensitive, and can match strings with or
without TYPE_NAME_ prefixes.
2025-06-16 11:08:54 -04:00
John Colvin
7a5c676e99
build: Move okx execution to its own lib
2025-06-16 11:08:54 -04:00
John Colvin
1e8d699dd1
cleanup: Remove unnecessary onixs include from IDGenerator.h
2025-06-16 11:08:53 -04:00
John Colvin
aadd2dd594
cleanup: Remove unnecessary includes from MDP3Listener.h
2025-06-16 11:08:53 -04:00
John Colvin
5163ca4cae
refactor: Organize libspark proj w/ stuttering include
...
This new structure provides several benefits:
* Allows us to install multiple CMake projects in the same destination
dir (without include path conflicts).
- This makes shipping the trading algo sdk a trivial excercise. Simply
copy the lib and include dirs from the install dest. That's it!
* Puts us in a position to break up the monolithic libspark into smaller
modules, which are easier to manage.
Windows specific notes:
* Get rid of unnecessary script vs_filters.cmake
* Define WebsocketConnectionGateway directly in cs (instead of proto)
- The proto would no longer be in the include path passed to protoc.
Moving it to c# because there wasn't a compelling reason for it to
be a proto in the first place.
* Set spark output prefix to "lib" on windows
- So we get "libspark.dll" instead of "spark.dll", which conflicts
with the csharp lib, "Spark.dll".
* Copy libspark.dll to net8.0 & net8.0-windows in a single cmake build
target
fix build: Copy libspark to both dirs net8.0, net8.0-windows
2025-06-16 11:08:53 -04:00
John Colvin
b5d520d568
cleanup: Move TradeSummarySignalDispatcher to libspark
...
It is needed by TradeSummarySignal, which is in libspark. This prevents a
circular dependency from libspark -> sparkd.
2025-06-16 11:08:51 -04:00
John Colvin
83e4465a3b
build: Clean up protobuf cmake scripts
...
Make them more flexible, reusable. This is a precursor to porting over
python md provider code from another branch.
2025-06-16 11:08:51 -04:00
John Colvin
54cfb343a8
build: Rename external path vars w/ "EXTERNAL_" prefix in cmake
...
The old "SPARK_" prefix felt like a misnomer.
2025-06-16 11:08:51 -04:00
John Colvin
4e9b360e23
Add a few arithmetic ops to TimeSpan
2025-06-16 11:08:51 -04:00
John Colvin
16bc93b1a0
diag: Log time it takes to start md sources
...
So we can detect bottlenecks
2025-06-16 11:08:50 -04:00
John Colvin
f56d4d9062
refactor: Split MarketDataGateway up into providers/sources
...
MarketDataGateway still exists, but is greatly simplified. It creates
several `IMarketDataProvider`s, each of which generates a list of
`IMarketDataSource`s. The market data sources provide market data to an
`IMarketDataListener`.
* EmumbaMarketDataProvider
* CCApiMarketDataProvider
* PyMarketDataProvider
* OnixsMarketDataProvider
* ReplayMarketDataProvider
As a side effect, individual py market data sources are now explicitly
limited to a single venue (it probably should have been this way all
along, since the shared memory writers do not expect updates to involve
multiple venues).
2025-06-16 11:08:50 -04:00
John Colvin
36cc186626
cleanup: Remove dependency on quickfix for string to_lower
...
We shouldn't depend on external libs for trivial things like converting
strings to lower case.
2025-06-16 11:08:50 -04:00
John Colvin
2e78af1756
fix build: Upgrade IronPython to 3.4.2
...
All csprojs need to be on same version (Spark.csproj was on 3.4.1, while
DataStream.csproj was on 3.4.2)
2025-06-16 11:08:50 -04:00
Taha
70fae06a30
BlueOrb streams and MLP
2025-06-08 21:52:38 -04:00
John Colvin
07b59559a2
dev qol: Reduce md log level in config profile
2025-06-03 02:23:59 +00:00
John Colvin
cd1709563b
fix: Generate reject exe reports from ack at binance
...
This only applies to "new" order acks. In all other cases, exe reports
are generated from the order update stream. New order rejects are the
exception because they're not visible in the stream. Presumably, they're
never actually entered into binance's order system (they're "rejected"
before that happens).
2025-06-03 02:21:18 +00:00
arham
94f22ddf40
Update: changed url for okx ws exe in config
2025-05-30 12:59:26 +00:00
arham
7f6c08f956
Fix: positions now go through dispatch incoming
2025-05-29 16:26:05 +00:00
arham
1d737cdf82
Fix: change time to 5s for pos update okx
2025-05-23 16:12:12 +00:00
arham
b645192355
Add: OKX position turned on
2025-05-23 15:33:11 +00:00
John Colvin
5ad7755b28
tool: Make open orders symbol param optional in binance.env
2025-05-20 20:08:34 +00:00
John Colvin
df4ca124c3
cleanup: Remove redundant script get_binance_md.sh
...
I should have removed this when I added binance_rest_client.sh
2025-05-20 20:08:34 +00:00
John Colvin
2c8b9ee288
tool: Add envsource.fish to load .env files in fish
2025-05-20 20:08:34 +00:00
John Colvin
f02f28e347
tool: Add a few vars to binance.env
2025-05-20 20:08:34 +00:00
John Colvin
c8a89c1e8d
cleanup: Rename get_binance_md.py -> binance_client.py
...
This is a more appropriate name (it's not just md anymore).
2025-05-20 20:08:34 +00:00
John Colvin
7ae9e07a30
tool: Use binance.env file in python client
...
Like the bash impl (binance_rest_client.sh), it gets urls, params
(templates), and api credentials from env vars.
2025-05-20 20:08:34 +00:00
Taha
a130e47218
Arb Scoring stream
2025-05-20 00:24:17 -04:00
John Colvin
a377f6de7f
improvement (ui): Use sec qty display settings in rec report
2025-05-19 12:35:25 -04:00
John Colvin
855373c9e6
cleanup: Remove unnecessary code
2025-05-19 15:57:35 +00:00
John Colvin
e1b535b633
feat: Sync exch positions in binance usds futs gw
2025-05-19 15:57:35 +00:00
John Colvin
3b9ac71460
refactor: Abstract out start/stop state machine for gen use
...
* From binance usds futures gateway
* Thread-safe
* Handles re-entrancy gracefully
2025-05-19 15:57:35 +00:00
John Colvin
9a5075daaf
improvement: Use recursive_mutex in ws client to prevent deadlocks
2025-05-19 15:57:35 +00:00
John Colvin
4e7fe811a8
Add ConcurrentUnorderedMap (c++)
2025-05-19 15:57:35 +00:00
Taha
0a6733180d
Added SpreadStatsStream
2025-05-18 01:10:33 -04:00
Taha
f2169c6bd4
Adding more data to SpreadPerformanceStream
2025-05-16 01:42:32 -04:00
Taha
23ef478391
Spread analytics streams
2025-05-15 15:01:27 -04:00
John Colvin
236a5a9362
fix: Format binance order price up to 5 decimal places
...
Bugs (fixed):
* Binance JELLYUSDT order prices get rounded to 4 decimal places, even
though the price tick is 0.00001
2025-05-13 15:02:02 +00:00
John Colvin
cb560bbe33
fix: Sum realized & unrealized pnl correctly in header rows
2025-05-08 14:13:02 -04:00
John Colvin
248f2644ca
deploy: Automatically restart "sparkd-symbols" service
...
This is what we deploy to the alphaworx-zen-hk-live server
2025-05-07 14:49:53 +00:00
arham
b87d86f4d6
FIx: okx exe user cancel should be cxl not rjct
2025-05-07 08:38:28 +00:00
arham
8515196dcb
Add: okx exe fok orders working
2025-05-07 08:08:40 +00:00
Taha Afzal
e5e042f016
Spreader in RH mode now fires FOK, and hedges only whne the FOK is completely filled (ie not as we we might get partial fills)
2025-05-07 06:12:48 +00:00
John Colvin
da3593326d
Enable FOK orders at binance
2025-05-06 22:20:46 +00:00
John Colvin
313d3a2377
Enable FOK in EMNativeOrder.cpp
...
This class was originally designed for Emumba execution at deribit
(hence the "EM" prefix), but now serves all crypto exchanges.
2025-05-06 22:19:11 +00:00
Taha Afzal
22f0e126d0
Adding FillOrKill (FOK) to TimeInForce
2025-05-06 19:39:40 +00:00
arham
c76b061e20
fmt: okx exe
2025-05-02 09:00:00 +00:00
arham
0107b65281
add code for okx exe position updates
2025-05-02 08:59:46 +00:00
Taha Afzal
6b5496b799
OrderStore does not eleted all orders at sparkd boot-time now
2025-05-02 00:10:48 +00:00
arham
42f9daf9cb
Add: okx cancel all after code, not turned on for now
2025-05-01 09:48:06 +00:00
arham
bc5ddade7f
Add: okx exe small changes to maybe make ping better
2025-05-01 09:42:54 +00:00
arham
d8d198f7f4
Add: OKX only handle orders from this session
2025-05-01 09:41:20 +00:00
John Colvin
af9eb670c1
build: Update build scripts to target dotnet 8
2025-04-30 12:06:28 -04:00
John Colvin
d91837c377
improvement (pnl ui): Get qty display params from sec proto
...
Instead of config
2025-04-30 03:06:04 -04:00
John Colvin
7725ae33ef
fix: Fix total realized/unrealized pnl calc
2025-04-30 01:35:22 -04:00
John Colvin
9f56abaa38
vscode: Replace net7 w/ net8 in launch.json
2025-04-30 01:15:34 -04:00
John Colvin
95444d4a4c
fix: Exclude nans from pnl sum
2025-04-30 00:47:49 -04:00
John Colvin
a7e1c18fe2
diag: Improve trace logs in binance usds futures gw
2025-04-29 19:49:33 +00:00
John Colvin
d11fd23cb0
refactor: Drop "_" suffix in private vars (cpp)
...
It just looks ugly, and unnecessary with modern tooling. Plus it's ugly.
2025-04-29 19:35:15 +00:00
John Colvin
8499ac0dfb
diag: Clean up structured logging in binance order store
2025-04-29 19:35:15 +00:00
John Colvin
f4afe348e6
fix: Update timestamps in binance order store when orders change
2025-04-29 19:35:15 +00:00
John Colvin
096424b60b
refactor: Use WebsocketClient fn run_in_background in binance gws
2025-04-29 19:35:15 +00:00
John Colvin
b4f5e66466
fix: Set okx perp exp to year 2100
...
Because the year 3000 is too big for signed int64
nanosecond timestamp
2025-04-29 19:35:15 +00:00
John Colvin
69a0bcc9cd
fix: Request binance fut md on ccapi dispatcher thread
2025-04-29 19:32:21 +00:00
John Colvin
d72ebdf421
perf: Send Binance Usds Futs md rest reqs on background thread
2025-04-29 19:32:21 +00:00
John Colvin
8e93856767
fix: Send exchangeInfo req via our HttpClient instead of ccapi
...
For binance usds futs (we already did this for spots)
Bugs (fixed):
* We get a boost beast exception about the read limit being exceeded
when requesting securities from Binance prod url (testnet works).
2025-04-29 19:32:21 +00:00
John Colvin
19dae6cd34
fix build (cpp release): Don't return reference to local var
2025-04-29 19:32:21 +00:00
John Colvin
24f42550dd
fix build (cpp release): Explicitly cast int64 -> uint64
2025-04-29 19:32:21 +00:00
John Colvin
c2150ae450
refactor: Move BinanceUsdsFuturesFilterTuple fns to cpp file
2025-04-29 19:32:21 +00:00
John Colvin
40dbfaa068
improvement: Support both key types in binance spots gw
...
Namely, ED25519 and HMAC-SHA256. Only the former can be used
to login over websocket, which eliminates the need to sign requests
after that.
2025-04-29 19:32:21 +00:00
John Colvin
3756a8a8b7
Add api key type enum to binance exe gateway config
...
ED25519 keys offer performance benefits over the HMAC-SHA256
keys when using the websocket api, as you can log in on the websocket
connection to avoid signing each request.
2025-04-29 19:32:21 +00:00
John Colvin
46c8dcb18f
fix: Add binance spot order newOrderResp type to json/query params
2025-04-29 19:32:21 +00:00
John Colvin
024480f32e
improvement: Send binance usds fut orders via websocket api
...
Unlike the previous implementation, which sent REST requests, this won't
block the dispatch thread waiting for a response.
2025-04-29 19:32:21 +00:00
John Colvin
ba525372bb
cleanup: Move a few types from orderman_utils to their own headers
...
So they can be included without depending on OrderService.pb.h
2025-04-29 19:24:41 +00:00
John Colvin
8aa0f1b674
refactor: Move binance state machine out of "spots" dir
...
So it can be used in the implementation for all binance apis (usds futs,
cross margin, etc.)
2025-04-29 05:24:04 +00:00
John Colvin
fc14215d9b
fix: Don't assert-crash if ord key isn't found for outgoing req
...
The i/o is asynchronous, so it's possible for the gateway to receive
a terminal ack from the exchange, remove the order from its index,
then receive a cancel/modify req from an algo that submitted the
req before it knew the order reached a terminal state.
2025-04-29 05:24:04 +00:00
John Colvin
091ed5a327
fix: Don't fire exe report for internal rejections
...
Internal rejections don't mean the order isn't "working". Only
rejections from the exchange mean that.
2025-04-29 05:24:04 +00:00
John Colvin
30bb9d0837
fix: Make SpotsOrderStore threadsafe
2025-04-29 05:24:04 +00:00
John Colvin
9cb2c580d6
diag: Use structured logging in binance spots gw
2025-04-29 05:24:04 +00:00
John Colvin
2e2150ac1a
refactor: Send binance spot orders through websocket api
...
This offers performance benefits over the REST api, since we don't have
to sign each request.
Note: I consolidated the UserDataSubscription code into SpotsGateway
because it was cleaner than trying to share a single websocket
connection between the two classes (UserDataSubscription and
SpotsGateway).
2025-04-29 05:24:04 +00:00
John Colvin
21d9435a67
Add run_in_background fn to WebsocketClient (cpp)
2025-04-29 05:24:04 +00:00
John Colvin
e7e334fb5a
Add continous ping function to WebsocketClient (cpp)
2025-04-28 17:12:59 +00:00
John Colvin
61f04c4605
fix: Implement state machine for binance cxl/replace
2025-04-28 17:12:59 +00:00
John Colvin
24fb2e1e39
refactor: Remove 'get_internal_key' delegate from exe report store
...
It made constructing the exe report store awkward, and smelled like poor
design.
2025-04-28 17:12:59 +00:00
John Colvin
ece141c448
Add dedicated types for structured logging
2025-04-28 17:12:59 +00:00
John Colvin
617bac8e74
cleanup: Move CancelOrderMsg impl to .cpp
2025-04-28 17:12:59 +00:00
John Colvin
ab217401eb
cleanup: Move CreateOrderMsg impl to .cpp, get rid of unused code
2025-04-28 17:12:58 +00:00
John Colvin
77e5c1481b
Add security_id/name fns to ExecutionReport for convenience
...
So callers don't need to check if security is a nullptr
2025-04-28 17:12:58 +00:00
John Colvin
a0f77f92a3
cleanup: Move ExecutionReport impl to .cpp
...
Also add using aliases to get rid of repetitive namespace prefixes
2025-04-28 17:12:58 +00:00
John Colvin
0acdcb150d
fix: Format price & qty w/ 6 decimals in binance modify order json
2025-04-28 17:12:58 +00:00
John Colvin
ac2f3b9bc6
Add ConcurrentQueue (c++)
2025-04-28 17:12:58 +00:00
John Colvin
0e522f90e5
refactor: Add line num suffix to var name in LOCK_GUARD macro
...
Rename to "BTS_LOCK_GUARD" while we're at it to avoid potential naming conflicts
2025-04-28 17:12:58 +00:00
John Colvin
40ad1f1b48
Update binance websocket endpoints
...
The api just changed, and old urls will be retired in May 2025
2025-04-28 17:12:58 +00:00
John Colvin
1cb75d399f
devcontainer: Update dotnet7 -> dotnet8
2025-04-28 17:12:58 +00:00
John Colvin
cddecc0543
cleanup: Fix benign typo in websocket_client.h
...
The open_handler fn return type should be "OpenHandler", not
"CloseHandler" (obviously).
2025-04-28 17:12:58 +00:00
John Colvin
484e36b330
refactor: Make timestamp internal value to signed (int64)
...
I am sick of casting uint64 -> int64. The latter is a much more
common argument type than the former.
2025-04-28 17:12:58 +00:00
John Colvin
8a9c22fa2a
vscode: Add Python Debugger entry to launch.json
2025-04-28 17:12:58 +00:00
John Colvin
a6e8853cb9
fix build (warns): Account for nullable ref types
2025-04-28 17:12:58 +00:00
John Colvin
dafa193283
fix build (windows): Update externals to fix catch include path
...
I couldn't get the build to work with the new catch2 on windows, though
it does work on linux. Rather than revert the catch -> catch2 include
path changes (again, which do build on linux), I decided to rename the
old windows catch include dir 'catch2'.
2025-04-28 17:12:58 +00:00
John Colvin
23651970c9
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.
2025-04-28 17:12:58 +00:00
John Colvin
043efab5a2
build: Upgrade c# to net8.0
2025-04-28 17:12:58 +00:00
John Colvin
5476466d55
Fetch secrets for config profiles with new aws sso config
2025-04-28 17:12:58 +00:00
John Colvin
54cb5a2ab2
tool: Add script to configure aws sso
2025-04-28 17:12:58 +00:00
John Colvin
29bf7d8d7e
deploy (fix): Update okx urls
...
Their aws domain has been retired.
2025-04-28 17:12:58 +00:00
John Colvin
855d2fd790
build: Update vcpkg
2025-04-28 17:12:58 +00:00
John Colvin
8a6a652882
fix build: Get rid of databento's internal nlohmann-json
...
** Migrate nlohmann-json over to vcpkg in the process **
Make it so databento is built with the same nlohmann-json lib that our
code is built with. Recently, I started getting undefined symbol errors
in databento code from nlohmann headers - presumably a conflict between
their nlohmann dep and ours.
2025-04-28 17:12:58 +00:00
John Colvin
3f288704bf
build (linux): Migrate openssl to vcpkg, update to 3.5.0
...
Databento, as of version 0.32.0, requires openssl >= 3.0
https://github.com/databento/databento-cpp/releases/tag/v0.32.0
2025-04-28 17:12:58 +00:00
John Colvin
98bc78463d
build (linux): Migrate catch2 dep to vcpkg (from externals)
2025-04-28 17:12:58 +00:00
John Colvin
6d271ad7cd
build (linux): Manage fmt dep with vcpkg
2025-04-28 17:12:58 +00:00
John Colvin
2a17d656a5
fix: Dump json to str in LOG statements
...
The nlohmann::json obj isn't formattable (i.e., doesn't have a
fmt::formatter<T> specialization)
2025-04-28 17:12:58 +00:00
John Colvin
10436f0f3b
tool: Rename binance_orders_client.sh -> binance_rest_client.sh
...
It supports md and order/trade requests
2025-04-28 17:12:58 +00:00
arham
86b19f0ef0
Add: okx exe treats all cancelations except ioc as rejections
2025-04-26 05:35:46 +00:00
Taha Afzal
502024dd10
Removing an overzealous assert in the spreader, which was being false if the spread_book was not received once
2025-04-23 04:40:16 +00:00
John Colvin
623012b0b0
deploy: Add "sparkd_symbols" image to Dockerfile
...
Normally, we bake spark config into the image, which is simpler and less
error prone than managing separate configurations per host machine
and/or container. The sparkd_symbols deployment breaks the mold. Config
is mounted to a dir on the host machine so symbols can be added/removed
via config (i.,e., spark.conf) when we bounce sparkd.
2025-04-17 05:53:05 +00:00
John Colvin
5859f0f2d1
deploy (fix): chown bts for whole sparkdata dir in sparkd-symbols
...
Unlike normal deploys, the config dir isn't copied directly into the image
2025-04-16 13:48:24 +00:00
John Colvin
eeffb735ae
deploy (fix): Override existing values when loading env files
2025-04-16 13:48:24 +00:00
John Colvin
b602997f3a
deploy: Build sparkd if any service starts with "sparkd"
...
Previously, we only built sparkd for the "sparkd" service (i.e., exact match)
2025-04-16 13:48:24 +00:00
Taha Afzal
3530a77b38
Fixing the situation where an IOC cancels, cancels the spreader
2025-04-16 04:26:50 +00:00
arham
afdf635b31
fix: changes spread_book_tick_sz from int to double to fix low tick being zero for reverse hedge orders
2025-04-11 07:31:03 +00:00
John Colvin
4d4aefc0a7
fix: Bind SpreaderType dropdown to all algo types in synth ladder
...
Bugs (fixed):
* The SpreaderType dropdown only works for plain spreader orders. It
doesn't work for icebergs, leans, etc.
2025-04-10 16:16:43 -04:00
arham
960a8af77a
Fix: OKX futures working now
2025-04-10 05:06:17 +00:00
Taha Afzal
89828659a4
Reducing loggging on reverse hedge evaluation
2025-04-09 20:05:48 +00:00
John Colvin
76f83fd7f5
Revert "Set irrelevant spreader params to null in ladder"
...
This reverts commit 924386084b .
2025-04-09 15:52:00 -04:00
Taha Afzal
d4e40948d2
Changing the logic to determine if a leg is a quoting leg or not
2025-04-09 19:29:50 +00:00
arham
912ab512d2
Add: ioc orders to okx exe
2025-04-09 19:00:24 +00:00
Taha Afzal
5d3eb92175
Spreader gets the spread ticks from the right source now (it was hard coded at 0.1 earlier)
2025-04-09 18:42:06 +00:00
John Colvin
924386084b
Set irrelevant spreader params to null in ladder
...
Depending on the SpreaderType enum value (treat it like a oneof case)
2025-04-09 10:29:15 -04:00
Taha Afzal
acab3ac392
Reversehedging fixed
2025-04-09 09:42:47 -04:00
arham
d06a62f6ee
Format: ran clang format on file
2025-04-09 09:42:47 -04:00
arham
14e3eee0bc
Add: config changes to make server controller work and set up hk zen server
2025-04-09 09:42:47 -04:00
Taha Afzal
7277bf52f5
Fixing build:
2025-04-09 09:42:47 -04:00
Taha Afzal
b81dc7f5cf
Fixing a bug, where the spreader was isidentifying the quoting leg
2025-04-09 09:42:47 -04:00
John Colvin
b1a4635345
ui: Enable IOC for Iceberg orders
...
Previously, it was only enabled for Limit orders.
2025-04-08 13:22:09 -04:00
John Colvin
7c7c689170
fix build: Don't cast to unsigned int when checking bytesRead < 0
2025-04-04 15:36:55 -04:00
John Colvin
116506c8da
fix build: Lock databento version to v0.31.0
...
Previously, we were simply fetching HEAD. This was fine until they
released v0.32.0 (on 04/02/2025), which introduced a new dependency
requirement that broke our build: OpenSSL >= 3.0.
2025-04-04 15:36:55 -04:00
Adeel Khan
3feda49ef1
Fix: Taifex Time Conversion
2025-04-04 15:36:54 -04:00
Adeel Khan
10318be7bc
FIX: Taifex Crash Fixed, Added Diag Logs
2025-04-04 15:36:54 -04:00
Adeel Khan
f7d525a527
ADD: TBBO & Symbol wise Naming in Recorder
2025-04-04 15:36:54 -04:00
Adeel Khan
d2fe9f167a
ADD: TWSE Code Complete
2025-04-04 15:36:54 -04:00
Adeel Khan
696d91a5af
ADD: TWSE to WebApp
2025-04-04 15:36:54 -04:00
Adeel Khan
d575ba0ea8
ADD: TWSE throughout Sparkd
2025-04-04 15:36:54 -04:00
Taha
058b131760
Cleaning up some streams,new prompt etc
2025-04-04 15:36:52 -04:00
John Colvin
57f8f3ff58
ui: Add Sniper and Reverse Hedge controls
2025-04-04 00:19:38 -04:00
John Colvin
775df2850d
Add Sniper and Reverse Hedge params to spreader proto
2025-04-04 00:19:38 -04:00
Taha Afzal
cb2b15f10b
Adding IOC to SimExecution
2025-04-03 23:24:30 +00:00
Taha Afzal
60362a4c95
Adding reverse-hedge to spreader
2025-04-03 23:24:30 +00:00
John Colvin
c6d7a8f38c
ui (pnl): Use dark theme fg in "Selected" and "Total" labels
...
Previously, it was black and hard to read since the background is dark.
2025-03-26 14:46:44 -04:00
John Colvin
7931c62b46
ui (pnl): Hide "Override Cpp" menu item
...
The overrides aren't respected in (new) pnl calcs.
2025-03-26 14:35:23 -04:00
John Colvin
58518451c8
ui (pnl): Show realized/unrealized pnl in row group totals
2025-03-26 14:31:04 -04:00
John Colvin
e3bad78aef
fix (pnl ui): Get cash per point from security
...
Previously, it was hardcoded to 1.
2025-03-24 16:54:37 -04:00
John Colvin
8e9ab8f2eb
fix: Don't apply cme cpp overrides to non-cme securities
...
Bugs (fixed):
* The cash per point for many securities is wrong. For example, it is
5 for all BTC securities (which is wrong).
Cause: cpp override config that should be specific to cme is applied
to ALL securities.
2025-03-24 20:20:53 +00:00
John Colvin
8512f414d6
fix: Don't duplicate animations when migrating pnl window settings
2025-03-24 14:53:09 -04:00
John Colvin
513fc353cf
ui (pnl): Increase default width for a few columns
...
I noticed some data was truncated when connected to Alphaworx prod
server.
2025-03-24 14:39:40 -04:00
John Colvin
4a04beafd2
cleanup: Consoildate order extension methods
2025-03-24 11:19:51 -04:00
John Colvin
79a3251f26
fix: Make security comparison deterministic again
2025-03-24 11:19:51 -04:00
John Colvin
8785e0fecd
fix: Bootstrap all observers w/ snapshot on first update
...
Previously, the Subscribe impl only bootstrapped the first observer
(i.e., only in first call to Subscribe).
Bugs (fixed):
* The ladder crashes if there are working orders when the
ticks-per-row setting is changed.
Cause: The ladder viewmodel resubscribes to order updates each time
the ticks per row setting changes (as this determines the size of
the price buckets into which orders are grouped). The IObservable
"Bootstrap" extension fn doesn't properly clean up state leftover
from the previous subcsription when this happens.
2025-03-24 11:17:04 -04:00
John Colvin
04251c96b6
ui (pnl): Compute pnl as sum of realized + unrealized
...
This addresses a subtle inconsistency in the pnl window.
The old "start_pnl" and "day_pnl" values (from IPNLUnit) are computed
with respect to the mid market for both long and short positions, while
the new "unrealized" pnl values are computed with respect to the side of
the market needed to close the position (i.e., bid market for long pos,
ask for short). Consequently, the combined pnl columns weren't equal to
the sum of realized and unrealized pnl.
2025-03-24 10:13:24 -04:00
John Colvin
c2d400af1a
fix (pnl ui): Don't overwrite menu display settings w/ defaults
2025-03-24 10:13:24 -04:00
John Colvin
133cc16628
ui: Add menu item to open mview from pnl
...
Populated with the same securities as the pnl window
2025-03-24 10:13:24 -04:00
John Colvin
16f7aede93
fix: Add case for Synthetic sec type in proto conversions
2025-03-24 10:13:24 -04:00
John Colvin
2b9488faff
ui: Make pnl default settings pretty
...
* Make profit (green) and loss (red) easier to read against dark bg
* Hide 'SOD' and 'Day' columns (just show totals)
2025-03-24 10:13:24 -04:00
John Colvin
51b6d592d3
fix (pnl ui): Negate short avg cost when translating to avg price
2025-03-23 15:17:41 -04:00
John Colvin
1eb4ceba0a
ui: Add columns for long/short avg pnl
...
When looking at avg cost, you often really want to know the difference
between it and the current market. These columns provide that information
so you don't need to do the arithmetic in your head.
2025-03-23 15:17:41 -04:00
John Colvin
dbf5cadb44
ui: Add columns for realized/unrealized pnl
2025-03-23 15:17:41 -04:00
John Colvin
90f1bb0851
refactor: Move PNL data types to spark_api csproj
2025-03-23 13:08:46 -04:00
John Colvin
547d83e1b8
cleanup: Remove unused pnl enum WaterfallPriceFlags
2025-03-23 13:08:41 -04:00
John Colvin
e888149c41
Add order msg throttle to sparkd config profiles
2025-03-20 17:29:43 +00:00
John Colvin
b944c3980f
Show 6 decimals in spreader order log
...
So we can better track those rascally iceberg orders w/ small fractional
quantities
2025-03-20 14:30:35 +00:00
Taha Afzal
c2a8266106
merging
2025-03-20 01:23:05 +00:00
Mohammad Arham
4277ba61b9
Fix: Okx execution only sends
2025-03-19 13:26:57 -04:00
Mohammad Arham
35cfe9533b
Add filter for okx er we that were caused by orders from outside the system
2025-03-19 13:26:39 -04:00
John Colvin
d49efef93d
Increase ram to 8gb in alphaworx_prod config
...
The previous value of 4gb wasn't enough, as the container would
occasionally crash with a SIGKILL interrupt.
2025-03-19 15:26:14 +00:00
John Colvin
502ed13456
fix: Round IcebergAlgo remaining quantity
...
Bugs (fixed, 2nd attempt):
* Iceberg orders w/ fractional quantities can get into a state where
they send an infinite stream of orders w/ 0 qty
2025-03-19 14:43:24 +00:00
John Colvin
716c4dd674
tool: Add script to dump sparkd logs to sqlite db
2025-03-19 14:41:23 +00:00
John Colvin
4a2b189a07
diag: Format Price and Quantity w/ up to 6 decimal places
2025-03-17 13:00:15 +00:00
John Colvin
a42edaf9fa
diag: Trivial fix for log msgs in SpreaderOrder
...
* Format qty with fractional part
* Remove redundant log
2025-03-17 13:00:15 +00:00
John Colvin
cbc142ab15
fix: Account for rounding error in IcebergAlgo fills
...
Bugs (fixed):
* Iceberg orders w/ fractional quantities can get into a state where
they send an infinite stream of orders w/ 0 qty
Note: I also changed the number of decimal places used when rounding
order quantities from 6 to 7 (the level of precision guarenteed by
IEEE 754).
2025-03-17 13:00:15 +00:00
John Colvin
3980f2d030
Add order msg throttle to alphaworx_prod config
2025-03-17 13:00:15 +00:00
John Colvin
00f6d269c9
fix: Set binance routing record "operator_id" to username (not account)
...
Must have been a typo
2025-03-17 00:51:54 +00:00
John Colvin
10b2d38de8
tool: Add cmd to tail sparkd log file using docker compose
2025-03-17 00:51:54 +00:00
John Colvin
6d4d8f6ac1
fix: Disable ccapi order book cross check for Binance md
...
When enabled, the checks fail regularly (usually more than once per
hour). Sometimes many of them happen in rapid succession before sparkd
crashes. I'm disabling them in the hopes that the crosses are benign,
and this will stop the crashes.
2025-03-17 00:51:54 +00:00
John Colvin
5db89e1e8d
diag: Tone down noisy order management logs
...
* EMNativeOrder
* OrderRouter - only log routing record result if there are errors
* OrderServiceServer
* OrderStore - also avoid calling pb::to_string twice per change (it's
expensive)
* ServiceBridge
2025-03-17 00:51:47 +00:00
John Colvin
379a46afa2
Add order msg throttle to sim_dev config
2025-03-15 20:07:14 +00:00
John Colvin
d9eff37184
fix: Don't let rounding error accumulate in mview order summarizer
...
Bugs (fixed):
* Sometimes mview shows that a security has working orders when it
doesn't. It appears to be rounding-related as the price and qty of
the phony working orders is NaN and 0, respectively.
Cause: Rounding error accumulates in the order summarizer. If it gets
bad enough, the working quantity (which is computed incrementally as
orders transition to/from a working state) may still be non-zero after
all orders become non-working.
2025-03-15 15:21:56 -04:00
John Colvin
3d055de139
cleanup: Rename _tick_factors -> _qty_tick in mview order summarizer
...
It is specifically for quantity (not price).
2025-03-15 15:21:56 -04:00
John Colvin
648be7dd97
improvement: Don't resort orderbook on every order update
...
This causes performace issues when the orderbook is sufficiently large
(noticeable when around 20k orders).
2025-03-15 15:21:56 -04:00
John Colvin
2cac9affe4
fix: Use consistent price comp in ladder order stream
...
Bugs (fixed):
* The ladder occasionally crashes when orders are changing.
Cause: Subtle differences between the ordinal and equality comparers
made it possible for 2 prices to be considered equal by the former,
and not equal by the latter. Since the ladder indexes orders by
price, a "Key not found" exception could be thrown if the equality
comparer detected a price change that the ordinal comparer did not.
2025-03-15 15:21:55 -04:00
John Colvin
30ff3ba707
Add some null checks in LadderGridHost
2025-03-15 15:21:55 -04:00
John Colvin
9d3afd68aa
ui: Format Perp and Spot exps as "Perp" and "None"
2025-03-15 15:21:55 -04:00
John Colvin
8c3de1789b
fix: Apply leg price mults when computing synth book
...
This is necessary to support synths with BTC-USDC-SWAP legs at Okx
(because 1 "contract" == 0.01 BTC).
Bugs (fixed):
* Price multiplier has no effect in synthetic book
2025-03-14 19:32:04 +00:00
John Colvin
b251e1d47e
build: Generate semantic version header from git
...
Dump it to console and log file when sparkd runs
2025-03-14 16:00:06 +00:00
arham
6ccd48a8ba
Fix, 1e-5 orders working okx
2025-03-13 17:49:14 +00:00
John Colvin
41d84f7f73
Change externals submodule url from ssh to https
2025-03-13 17:08:04 +00:00
John Colvin
795062864d
fix: Fix typo in permission filter comparison (change == to !=)
...
Bugs (fixed):
* The orderbook and ladder blink/flicker when orders change if logged
in as non-bts user.
Cause: The permission filter acted as if the predicate itself
changed everytime an order changed. As a result, it would fire one
update to cleared all values, then fire another to add items that
pass the "new" predicate.
2025-03-13 10:39:33 -04:00
John Colvin
1ff72e9444
fix (ui): Show fractional order qty in activity log
...
Also fix formatting - change "price @ qty" to "qty @ price"
2025-03-13 10:39:33 -04:00
John Colvin
e13b5066a3
fix: Preserve fractional qty when modifying existing order in ticket
2025-03-13 10:39:33 -04:00
Mohammad Arham
5ba7901258
Fix: undo special case for btc swap and add ccp for swaps
2025-03-12 20:47:44 +00:00
Mohammad Arham
bc6eb59110
Fix: Change cttype from optional to string
2025-03-12 20:45:27 +00:00
John Colvin
5ae5a5dcbf
fix: Add switch case for PositionSide::BOTH in binance futs gw
...
In this case, the position is signed (unlike LONG and SHORT).
2025-03-12 14:55:56 +00:00
John Colvin
7966bcce77
fix: Change trade id from uint32 to int64
2025-03-12 04:27:54 +00:00
Mohammad Arham
ff86b10895
Fix: temp fix to move okx btc swap to config for min tick
2025-03-11 20:35:24 +00:00
John Colvin
ea3c0717d8
fix: Remove erroneous assert from binance usds futs gateway
2025-03-11 19:48:11 +00:00
John Colvin
d0abca3fd9
Fix symbols and account alphaworx_prod config
2025-03-11 19:47:34 +00:00
John Colvin
7895fe7357
Remove taifex and glbx from NotSimExecution in conf profiles
2025-03-11 15:24:08 +00:00
Mohammad Arham
6f5f4f5cc2
Fix: okx excution working now
2025-03-11 14:25:42 +00:00
John Colvin
066a0ba693
ui: Use dark theme foreground in mini orderbook, fills popups
...
It was black in a couple places before, making it hard to read.
2025-03-10 14:47:58 -04:00
John Colvin
c2b67b4813
fix: Check for null in orderbook root algo type filter
2025-03-10 14:47:58 -04:00
John Colvin
ecad456a2d
fix: Apply exp filter to popup grids in pnl window
2025-03-10 14:47:58 -04:00
Taha Afzal
2cb3cfdcdd
Spreader's orders were hardcoded to be DAY, now it gets it from the parent
2025-03-10 17:22:08 +00:00
Taha Afzal
0ebc8e5b4b
Orders in DB are deleted on server bounce
2025-03-10 15:42:12 +00:00
John Colvin
2072105c0f
cleanup: Add using aliases to make code more concise
2025-03-10 14:53:07 +00:00
John Colvin
d663c86aa0
improvement: Only load synth metadata from disk once in md dumper
...
Instead of every time a synth is dumped (i.e., do it lazily, outside the
loop body)
2025-03-10 14:53:07 +00:00
John Colvin
4a2dfa46a1
improvement: Print delimiter line when dumping secs to console
2025-03-10 14:53:07 +00:00
John Colvin
6e35db6a24
improvement: Apply filter to shared mem secs in md dumper
...
Previously, filter only applied to db securities (i.e., when --db flag
was used)
2025-03-10 14:52:39 +00:00
John Colvin
b45dc3bc2d
fix: Preserve create time when order is updated
...
Bugs (fixed):
* Order create time mirrors last update time (it should never change).
2025-03-10 05:24:49 +00:00
John Colvin
a1912907b8
Add brief readmes for sparkd config profiles
2025-03-10 05:24:49 +00:00
John Colvin
b1b3dcdeb8
Add sim_dev config profile for sparkd
2025-03-10 05:24:49 +00:00
John Colvin
03dc8ef767
Add boto3 to py venv, so we can retrieve secrets from aws
2025-03-10 05:24:49 +00:00
John Colvin
975bf56c2a
fix: Don't spam binance w/ listen key requests
...
Sleep for a few seconds before trying again on failure.
2025-03-10 05:24:49 +00:00
John Colvin
3f58c2ce84
Add script to install aws cli
...
The aws cli can be used to configure credentials in the shell in order
to retrieve secrets (e.g., production api keys for alphaworx, etc.).
2025-03-10 05:24:49 +00:00
John Colvin
96f28acf91
Add dev config profile for sparkd
2025-03-10 05:24:49 +00:00
John Colvin
c2c2658e21
Add alphaworx_prod config profile for sparkd
2025-03-10 05:24:49 +00:00
John Colvin
d6b8e359cd
Expand environment vars in binance gw config
2025-03-10 03:05:59 +00:00
John Colvin
84a0850d95
Tweak binance_dev config profile
...
* Factor out repeated symbol list into SymbolLists entry
* Change "binance_dev" account to "BINANCE_DEV" in exe gw json
* Adjust log level
* Remove unused config:
- ExchangeSubAccounts
- JetFIX_Connection.max_order_msgs_per_window
2025-03-10 03:05:59 +00:00
John Colvin
4effdc4160
diag: Log when http buffers are resized in binance exe gws
2025-03-10 03:05:59 +00:00
John Colvin
b9fe39f6e3
refactor: Make MDRecorder join the run thread in destructor
...
This wasn't broken, but detached threads bother me.
2025-03-10 03:05:59 +00:00
John Colvin
b555850015
build: Package & deploy sparkd with docker compose
2025-03-10 03:05:59 +00:00
John Colvin
23794fa30d
devcontainer: Add docker in docker
...
Also remove default port bindings in devcontainer (so the "docker in
docker" sparkd can use them). It's easy enough to manually bind ports
in vs code.
2025-03-08 05:20:08 +00:00
John Colvin
90b5a309a3
cleanup: Make a couple fns const
...
Probably a typo, since these fns don't mutate anything.
2025-03-08 05:20:08 +00:00
John Colvin
07beda3fc6
fix: Support fractional show qty in iceberg orders
2025-03-07 20:42:24 +00:00
Taha Afzal
e3c1ea70f2
Spreader orders can now be entered in fractional qty
2025-03-07 05:24:39 +00:00
Mohammad Arham
93b93969f5
Add: config to control databento md better
2025-03-06 02:44:40 +00:00
Mohammad Arham
0a10111846
Small changes to make cboe md work
2025-03-06 02:44:07 +00:00
John Colvin
eee00cc407
diag: Integrate websocketpp with our logging system
...
* Unifies log message structure for improved readability
* Grants us runtime control over log levels via config
2025-03-05 20:48:14 +00:00
John Colvin
0eb58eaba8
fix (preemptive): Pass websocket io_context to PImpl ctr
...
The 'io_context' member var is accessed in the constructor (it must be
initialized before that happens).
2025-03-05 20:42:50 +00:00
John Colvin
12f6733d1e
cleanup: Remove unnecessary account mapping in binance_dev conf
2025-03-05 18:04:04 +00:00
John Colvin
93a0984ed1
Filter out non usdc/usdt spots in binance_dev conf
2025-03-05 18:04:04 +00:00
John Colvin
b7e9c393a0
fix: Don't sign binance listen key requests
...
The spots and usds futures apis ignore the unnecessary signature params,
but the cross margin api responds with an error.
2025-03-05 18:04:04 +00:00
John Colvin
aa602b3fd6
tool: Add cross margin reqs to binance.env
2025-03-05 18:04:04 +00:00
John Colvin
b4b8cabdae
tool: Add listen key reqs to binance.env
2025-03-05 18:04:04 +00:00
John Colvin
cfe06869b3
tool: Support empty query params in binance_orders_client.sh
2025-03-05 18:04:04 +00:00
John Colvin
b177ed1cc0
fix: Include listenKey param in listen key refresh req (binance)
...
The cross margin api requires this. Spots and futures apis don't, but
including it for them is harmless. I also changed the response json impl
to treat the 'listenKey' field as optional (it's omitted in the cross
margin api).
2025-03-05 18:04:04 +00:00
John Colvin
ff17a64933
cleanup: Remove unnecessary includes
2025-03-05 18:04:04 +00:00
John Colvin
81a1fe11f6
feat: Add binance gw for cross margin orders
...
Spots only
2025-03-05 18:04:04 +00:00
John Colvin
ad5bf88fcf
refactor: Rename user_data_streams dir, ns without plural 's'
...
There is one user data stream for Binance Spots, and another for Usds
Futures. We model both of these user data streams in separate folders,
so each "user_data_stream" dir represents a single stream.
2025-03-05 18:04:04 +00:00
John Colvin
e15f155ac9
refactor: Abstract out common binance gw code
...
For all sub-venues to use
2025-03-05 18:04:04 +00:00
John Colvin
6d6822cd65
refactor: Rename binance exe gw filenames so they are unique
...
The debugger gets confused when a particular lib contains multiple
source files with the same name (in different dirs).
2025-03-05 18:04:04 +00:00
John Colvin
ace0c70516
fix: Trim account name string when converting to Fill proto
2025-03-05 18:04:04 +00:00
John Colvin
e9e5059bc2
fix: Disable CURLOPT_FAILONERROR to always get response body
...
Even when the http error code indicates failure. The payload may contain useful
information about the error.
2025-03-05 18:04:04 +00:00
John Colvin
cde72f51a0
Improve logging/error reporting in binance execution gw
...
In the process, consolidate binance exe report stores into single class.
2025-03-05 18:04:04 +00:00
John Colvin
e1fd49ae32
cleanup: Specify bts account directly in binance gw config
...
This eliminates the need for an ExchangeSubAccountResolver.
2025-03-05 16:00:43 +00:00
John Colvin
274f3f98e4
cleanup: Replace includes w/ fwd declares in header
2025-03-05 16:00:43 +00:00
John Colvin
a4b7d84318
fix: Reject orders w/ invalid TimeInForce at binance
...
Do this internally (before sending them to the exchange)
2025-03-05 16:00:43 +00:00
John Colvin
be17205094
fix: Report internal reject msgs to ExecutionReport
...
For Binance execution gateways (spots and usds futures)
2025-03-05 16:00:43 +00:00
John Colvin
6ef9bee8e4
Add reconnect behavior to WebsocketClient
2025-03-05 16:00:43 +00:00
John Colvin
2c8b3563f1
cleanup: Perform basic init in WebsocketClient ctr
2025-03-05 16:00:43 +00:00
John Colvin
71f7e64ccb
Move config profiles dir to server/sparkd
2025-03-05 16:00:43 +00:00
John Colvin
c31b44ecfb
diag: Log when config server starts and show url
2025-03-03 19:32:16 +00:00
John Colvin
19efb77e07
tool: Add some usds futures requests to binance.env
2025-02-24 15:12:45 +00:00
John Colvin
76de640421
diag: Show Binance sub-venue in log message prefix
...
Otherwise it's hard to tell which Binance venue the log is about (e.g.,
spots, usds futures, etc.).
2025-02-24 06:16:22 +00:00
John Colvin
fb030742d3
Clean up binance_orders_client.sh a bit, add docs
2025-02-24 06:06:15 +00:00
John Colvin
73608f1b45
perf: Run each ccapi md session on its own thread
2025-02-24 06:04:52 +00:00
John Colvin
58aebe7002
diag: Reduce log noise in CCApiMarketDepthAdaptor
2025-02-24 06:04:52 +00:00
John Colvin
299cb0b29e
diag: Log when curl_global_init/cleanup is called
...
It should only happen once for the whole app (so it shouldn't be noisy).
2025-02-23 20:08:52 +00:00
John Colvin
06663f711e
improvement: Only call curl_global_init/cleanup once
...
Avoids unnecessary overhead (plus their docs say it only needs to be
done once for the whole app). These fns have "global" in their name for
a reason.
https://curl.se/libcurl/c/curl_global_init.html
2025-02-23 20:08:52 +00:00
John Colvin
51479f4885
fix: Disable signal handling in curl
...
This avoids a strange stack corruption bug related to set/longjmp.
https://stackoverflow.com/questions/9191668/error-longjmp-causes-uninitialized-stack-frame
2025-02-23 20:08:50 +00:00
John Colvin
5b520ba241
cleanup: Get rid of custom fmt::formatter for security proto
...
Security proto objects are large, so we shouldn't pass them by value to
the log system. The custom formatter's presence makes this easy to do by
accident.
2025-02-23 19:05:42 +00:00
John Colvin
f0651a5341
tool: Add flag to roll logs without running sparkd
2025-02-23 15:36:10 +00:00
John Colvin
897e0990a2
diag: Improve logging in SecurityCache
2025-02-23 15:36:10 +00:00
John Colvin
30e1ae5c3c
Add Binance execution to config profile
2025-02-23 15:36:10 +00:00
John Colvin
efe83f81ec
fix: Index live securities (as well as db ones) in SecurityCache
2025-02-23 15:36:10 +00:00
John Colvin
5fb21ada97
diag: Add sec id to PositionMap log
2025-02-23 15:36:10 +00:00
John Colvin
58edd07f6b
fix: Check for empty string in strn fns
2025-02-23 15:36:10 +00:00
John Colvin
9d81354c3a
Add binance_orders_client.sh for quick/easy troubleshooting
2025-02-23 15:36:10 +00:00
John Colvin
0f37be89a4
Fix typos in binance.env
2025-02-23 15:36:10 +00:00
John Colvin
f6586fe636
Activate ccapi exchanges according to md config at runtime
...
Previously, the list of exchanges ccapi would activate was determined at
build time.
2025-02-23 15:36:08 +00:00
John Colvin
7827ccc0e7
Update externals to get ccapi v6.12.0
2025-02-23 15:35:35 +00:00
John Colvin
af6a2acc0a
perf: Send Binance md rest reqs on background thread
2025-02-23 06:10:36 +00:00
John Colvin
84abf59a55
feat: Add binance spots execution
2025-02-23 06:10:36 +00:00
John Colvin
2fc1d30bf1
Add binance_usds_futures_testnet config profile
...
To activate this config profile, run:
tools/sparkd_profile.sh binance_usds_futures_testnet
2025-02-23 06:10:36 +00:00
John Colvin
4dcd5d63a1
tool: Add script to easily switch between spark.conf profiles
2025-02-23 06:10:36 +00:00
John Colvin
63e5697b20
Unify conf and conf_json dirs
...
Put all files (.conf and .json) in sparkdata/conf. This allows us to
implement config profiles via symlink.
2025-02-23 06:10:36 +00:00
John Colvin
8e5cb100a7
fix: Assign BTS account to ExecutionReport
...
Not external exch account
2025-02-23 06:10:36 +00:00
John Colvin
938bee1817
Validate ExecutionReport before invoking callback
2025-02-23 06:10:36 +00:00
John Colvin
d48af15480
diag: Log warning if ExecutionReport acct not same as order def
2025-02-23 06:10:36 +00:00
John Colvin
e3b2e98cd9
fix build: Add JsonReader.cpp to client & api server builds
2025-02-20 00:55:48 -05:00
John Colvin
ee53fb854c
ui: Make buy/sell button bg darker in order ticket
...
The buttons looked washed out; too bright, yet pale.
2025-02-20 00:49:59 -05:00
Taha
d36e2d61f6
Fixing PNL for both crypto and non crypto
2025-02-19 19:06:12 -05:00
John Colvin
bfff3ea5fe
fix (preemptive): Check for null sec in ExecutionReport::to_string
...
I don't think it's ever a nullptr in practice, but if that changes, this
fn shouldn't seg fault.
2025-02-19 23:14:18 +00:00
John Colvin
059c03d289
cleanup: Removing docker submodules again
...
...they're back. It's like Night of the Living Dead submodules!
2025-02-19 22:50:29 +00:00
John Colvin
8c561f7886
improvement: Pass account/order updates by move (not value)
2025-02-19 22:50:29 +00:00
John Colvin
288567d1eb
cleanup: Pass JetFIX cfg directly to binance usds futs exe gw
2025-02-19 22:50:29 +00:00
John Colvin
ecfc5405fe
refactor: Move macro defined json fns to cpp file
...
Some fns are big (shouldn't be inlined); plus its best to avoid exposing
macros in headers.
2025-02-19 22:50:29 +00:00
John Colvin
8db34a2a11
Add json & fmt formatters for order & sec protos
2025-02-19 22:50:29 +00:00
John Colvin
91094c4d84
refactor: Make parse_uint support generic char iterator
2025-02-19 22:50:29 +00:00
John Colvin
dae8c85d73
fix: Check strlen when making order/fill keys
...
Although the string data is stored in a fixed size array, it isn't
necessarily the full length.
2025-02-19 22:50:29 +00:00
John Colvin
abdd98082f
Move BrokerProxy do_work fn to cpp
...
Doesn't make sense to inline; it's too big.
2025-02-19 22:50:29 +00:00
John Colvin
2f6aa785ab
Use object_pool wrapper to count allocations and assert if too many
2025-02-19 22:50:29 +00:00
John Colvin
7acf1f7043
diag: Improve logging in PositionMap
2025-02-19 22:49:30 +00:00
John Colvin
1c3c7a078a
diag: Improve logging in binance usds futures exe gateway
...
Also propagate error msgs through the execution report (so we can see
them in the front end).
2025-02-19 22:49:30 +00:00
John Colvin
93ace52bfa
diag: Periodically log ActorThread work cycle speed
...
So we can better detect slowness, blockage, etc.
2025-02-19 22:49:30 +00:00
John Colvin
b5d97c0b1b
refactor: Consolidate ExecutionGatewayProvider/Factory code
...
It's easier to read and manage code when you're not constantly jumping
to and fro across a bunch of files.
2025-02-19 22:49:30 +00:00
John Colvin
284aa53ad4
Add script to run sparkd and roll over log w/ timestamp suffix
...
So each run gets its own log file
2025-02-19 22:49:30 +00:00
John Colvin
8a9952f52d
diag: Improve logging in ServiceBridge
2025-02-19 22:49:30 +00:00
John Colvin
748aafaab3
cleanup: Remove unnecessary includes
2025-02-19 22:49:30 +00:00
John Colvin
3ba30c70de
cleanup: Normalize indentation in orderman_cfg.conf
...
It was all over the place before; unreadable
2025-02-19 22:49:30 +00:00
John Colvin
e72f465999
diag: Improve logging in OrderManager
2025-02-19 22:49:30 +00:00
John Colvin
f3d93f7749
fix leak: Replace object pool raw ptrs w/ shared ptrs
2025-02-19 22:49:30 +00:00
Mohammad Arham
8d142b8a74
Fix: forgot to push a file
2025-02-19 03:36:14 +00:00
Mohammad Arham
8210b9f35f
Fix: change onix exe so it uses dispatch fix msgs
2025-02-19 03:33:00 +00:00
Mohammad Arham
12b20b05ce
Fix: OKX executions sends er only when dispatch called
2025-02-18 16:02:10 +00:00
Mohammad Arham
72efbccdbd
Fix: USDC swaps md working for okx
2025-02-14 23:02:49 +00:00
Mohammad Arham
33643e9eab
Fix: make log resize work again
2025-02-14 22:59:35 +00:00
Mohammad Arham
0f6dc6f40b
Fix: Typo in Okx execution
2025-02-13 23:38:27 +00:00
Mohammad Arham
8c778f5e41
Fix: Added tdmode to config for okx execution
2025-02-13 23:32:53 +00:00
Mohammad Arham
f308654200
Fix: okx execution fix large spreader orderd
2025-02-13 23:27:32 +00:00
Mohammad Arham
bdf5b980fc
Add: config for sim trading
2025-02-13 22:06:23 +00:00
Mohammad Arham
914ac597cd
Vesrsion: Update to v2.2.5 deploying to jame prod
2025-02-13 14:40:27 +00:00
Mohammad Arham
4aa6a77680
Fix: OKX execution works as long as spreader not to big
2025-02-13 06:09:43 +00:00
Mohammad Arham
6b59dd84ee
Fix: Ordermanager will not try to remake orders from er after restart
2025-02-13 06:09:01 +00:00
Mohammad Arham
4e2c5f2d17
Fix: Okx USDT perps fix re added
2025-02-13 06:08:27 +00:00
Mohammad Arham
9a1b94a1b0
Add: fill id to okx execution report
2025-02-13 01:13:50 +00:00
Mohammad Arham
13b3c55771
Change: lst msg only entered if error
2025-02-12 23:13:59 +00:00
Mohammad Arham
d0a6fcdb9c
Add: Stricter Assert if websocket goes down okx execution
2025-02-12 22:23:53 +00:00
John Colvin
1eb13028c1
ui: Get qty display settings from md instead of config
2025-02-12 15:59:51 -05:00
John Colvin
424e5ff16b
Get Spark version at runtime via reflection
...
So it doesn't need to be hardcoded per release
2025-02-12 15:59:51 -05:00
John Colvin
bed389885b
Support qty tick size 10e-9
...
Some spots at OKX need this (e.g., BTC-AED)
2025-02-12 20:42:28 +00:00
John Colvin
85cf25a57a
fix: Get min qty and min increment from correct fields in okx json
...
"lotSz" represents min qty, and "minSz" represents min qty increment. We
had them backwards before.
2025-02-12 20:36:40 +00:00
John Colvin
61471d4675
diag: Show qty info fields in FixedSecurity json
2025-02-12 20:34:48 +00:00
John Colvin
d83435d49d
Move FixedSecurity to_json fn to cpp
...
Doesn't make sense to inline; it's too big.
2025-02-12 20:34:47 +00:00
John Colvin
582fc10dce
Add get_binance_md.sh for quick/easy troubleshooting
2025-02-12 20:34:47 +00:00
John Colvin
5969985d24
cleanup: Remove unnecessary includes
2025-02-12 20:34:47 +00:00
John Colvin
fabe7d665c
devcontainer: Install clang-format extension
2025-02-12 20:34:47 +00:00
John Colvin
7ce75bb8e7
devcontainer: Increase ram and shared mem
...
In order to support large symbol sets for Alphaworx
2025-02-12 20:34:47 +00:00
Mohammad Arham
b8e1c3cd60
Add: Fix build Issue
2025-02-12 19:48:52 +00:00
Taha
4909944694
Fixing PNL for perps (its base don mid market now)
2025-02-12 11:20:55 -05:00
Mohammad Arham
7258af09b4
Add: Basic Okx execution working
2025-02-12 11:55:50 +00:00
Mohammad Arham
7f2ce6c1a9
Add: Okx execution cfg
2025-02-12 11:06:45 +00:00
Mohammad Arham
4835725e1c
Add: diag logging to gttp client
2025-02-12 11:06:09 +00:00
Mohammad Arham
6a9e8de475
Deployment: Updating version numbers
2025-02-11 05:06:21 +00:00
Taha Afzal
4639951acc
Fixing Sprader's reportin of its filled qty
2025-02-11 03:04:30 +00:00
Taha
d8de211aac
Front end does NOT filter nay CBOE or CME expirations
2025-02-10 17:49:14 -05:00
John Colvin
87394bc60b
ui: Increase Currency col width so filter icon isn't clipped
2025-02-10 15:31:31 -05:00
John Colvin
beba30f65c
fix (ui): Remove temp hack that assumed synth qty always notional
2025-02-10 15:31:31 -05:00
John Colvin
2d58424d8f
ui (mview): Hook up currency filter in vm
...
Make it a discrete values filter (listbox) while we're at it. This seems
more practical than regex.
2025-02-10 15:31:31 -05:00
John Colvin
d1bbfa3791
Revert batch subscribe change in Binance
2025-02-10 19:59:42 +00:00
John Colvin
aab17f460f
cleanup: Remove docker submodules again
...
They just keep coming back.
2025-02-10 19:59:32 +00:00
John Colvin
461ef53322
devcontainer: Clean up and simplify
...
* Remove mounted dirs (the repo is automatically persisted in a volume)
* Remove user specific shell env initialization scripts (they're more
trouble than they're worth, often break the devcontainer build)
* Remove redundant settings already defined in settings.json
2025-02-10 16:55:53 +00:00
Taha Afzal
2486bc90b2
Spreader is hooked to the priceCal dropdown while creating the spreader
2025-02-10 03:10:11 +00:00
John Colvin
1c5cbaf60b
Change: Update version to 2.2.4-1
2025-02-08 13:19:41 -05:00
John Colvin
b8de447cfb
fix (pnl ui): Assume rows w/ exp DateTime.MinValue are Spots
...
Not the most elegant fix, but it'll do for now.
Bugs (fixed):
* The Pnl window groups perpetual futures with spots
2025-02-08 13:18:27 -05:00
Mohammad Arham
8bfc2d40f9
Update: V2.2.4 pnl working now
2025-02-08 12:43:13 -05:00
Taha
c09fd71c94
Fixing PNL for spots
2025-02-08 06:55:07 -05:00
Mohammad Arham
f3b037553e
Add: Batch subs in binance sub
2025-02-08 06:44:10 +00:00
Taha Afzal
d386d93166
SpreaderChildOrder::on_order_udpate, changing an asserrt to an error lgo to monitor condition
2025-02-07 15:06:16 +00:00
Mohammad Arham
5217742c71
Add: SendingTime tag to cboe execution
2025-02-07 12:26:11 +00:00
Taha
c59ec95460
Sheets and spreadbox theos can now optionally be set to market mid
2025-02-06 17:42:12 -05:00
Mohammad Arham
70f01583ec
ADD: CBOE TIME and SALES working
2025-02-06 20:42:58 +00:00
Mohammad Arham
66d2f9eb63
Add: Quote algo updates, theos removed
2025-02-06 03:08:46 +00:00
John Colvin
4625bed8b8
Change: Update version to v2.2.3-1
2025-02-05 17:01:11 -05:00
John Colvin
f18fb332b5
fix (orderbook): Make ColumnKeys enum 64bit
...
We rely on bit flags to indicate "dirty" columns in the vm. Need to do
this now that we have > 31 columns.
2025-02-05 17:01:11 -05:00
John Colvin
8746a6f5ca
fix (orderbook): Refresh Notional Value view when it changes in vm
2025-02-05 16:30:13 -05:00
John Colvin
702d47abb5
fix (orderbook): Fix typos in default settings for Notional Value
2025-02-05 16:29:29 -05:00
John Colvin
bf2a54717c
ui (orderbook): Add Filled Notional Value column
2025-02-05 16:13:34 -05:00
John Colvin
9db779fb25
fix (hack): Assume synth quantities are always notional values
2025-02-05 16:07:07 -05:00
Mohammad Arham
f55ddec708
Add: Vesrion logs to bothserver and client
2025-02-05 09:50:33 -05:00
Mohammad Arham
6e942dd2d4
Change: Updated version to v2.2.3
2025-02-05 08:38:31 -05:00
Mohammad Arham
142310a17a
Add: SPXW to default for cboe
2025-02-05 12:16:47 +00:00
John Colvin
7f99a89a95
ui (fills): Add notional value column
2025-02-05 00:00:41 -05:00
John Colvin
bfce663b4b
fix (orderbook): Hook up notional val filter in vm, persist settings
2025-02-04 23:42:58 -05:00
John Colvin
33c743643d
fix (orderbook): Include fractional qty in notional val
2025-02-04 23:34:47 -05:00
Taha Afzal
858e0a389b
Fixed the issue where a notioanal quoter would send a 0 qty order
2025-02-05 04:16:53 +00:00
Taha Afzal
9c3bb85674
Notional qty handling in spreader
2025-02-05 04:16:53 +00:00
Taha Afzal
f4930e8cd4
Added notional to PriceCalc type for the sprader, added code to compute notional books in SpreaderUtils
2025-02-05 04:16:53 +00:00
John Colvin
f21e7f3602
ui (orderbook): Show synth notional value in terms of first leg
2025-02-04 16:54:37 -05:00
John Colvin
b56c35aca4
ui (ladder): Show synth notional value in terms of first leg
2025-02-04 16:54:37 -05:00
John Colvin
e6ac83196e
fix (benign): Actually dispose _vm_sub in LadderGridHost
2025-02-04 16:54:37 -05:00
John Colvin
7b6f74fc4a
cleanup: Get rid of 'mimic tt' ladder config
...
This config was leftover from custom DJ work. We no longer need it.
2025-02-04 16:54:37 -05:00
John Colvin
f754953fac
cleanup: Remove duplicate equality check
2025-02-04 16:54:37 -05:00
Taha
2dd1143d9f
Fixed spx spreadbox theos
2025-02-04 16:31:17 -05:00
Mohammad Arham
e1ee3275d8
Add: Filter secs upto n months databento
2025-01-31 21:46:11 +00:00
John Colvin
2549e406f3
fix: Compute notional value correctly when ticks per row > 1
...
It's the sum of price * qty for each level in the row. Previously, we
were multiplying the total qty by the same price (smallest in the row).
2025-01-29 16:28:28 -05:00
John Colvin
d5024f1858
fix build: Don't check if unsigned int < 0
2025-01-28 20:20:06 +00:00
John Colvin
3623ac96db
fix: Multiply array size by sizeof(T)
2025-01-28 20:19:51 +00:00
John Colvin
19834625f9
fix: Don't fall through switch case
2025-01-28 19:59:32 +00:00
John Colvin
c8fc649b6b
fix build: Pass config arg to cmake --build
...
For Ninja Multi-Config builds (i.e., api server and data streams)
2025-01-28 19:59:09 +00:00
John Colvin
6b1fc1c413
cleanup: Remove unused code
2025-01-28 19:59:09 +00:00
John Colvin
6f086532ac
cleanup: Convert co2::TradeMessage in DomainSecurityUtils
...
Instead of domain::TradeRecord constructor. The domain types should have
minimal dependency on protos.
2025-01-28 19:59:09 +00:00
John Colvin
dc66282225
cleanup: Rename UINT32 -> VALUE in qty macro names
...
Should have done this when we changed qty primitive from uint32 to float
2025-01-28 19:59:09 +00:00
John Colvin
e2c74c0bb3
cleanup: Don't redefine CONTAINS macro
2025-01-28 19:59:09 +00:00
John Colvin
e89d50eec1
cleanup: Move large fns from header to cpp
2025-01-28 19:59:08 +00:00
John Colvin
8bebbc278d
cleanup: Get rid of 'using namespaces'
...
In headers, this is an objectively bad practice, since the type aliases
leak into dependent code and can cause unexpected naming conflicts. In
source files, it is debatable, but I prefer explicit aliases of the form
'using Foo = Bar'. The intentions are clear, and the resulting code is
naturally resistent to naming conflicts.
2025-01-28 19:59:08 +00:00
John Colvin
2e6d12c9c1
cleanup: Remove unnecessary includes
2025-01-28 19:59:08 +00:00
John Colvin
102a5e23ea
vscode: Add Tests Sparkd entries to tasks.json
2025-01-28 19:59:08 +00:00
John Colvin
582dc791db
vscode: Add Run Sparkd (Skip Build) entry to tasks.json
2025-01-28 19:59:08 +00:00
John Colvin
afb35d8c25
Compute synth book qty in terms of first leg
2025-01-28 19:59:08 +00:00
John Colvin
3a32ed5fe6
Fix BookSide equality operators
2025-01-27 16:35:22 +00:00
John Colvin
4e01697327
Add equality and output operators to BookLevel
2025-01-27 16:25:32 +00:00
John Colvin
22032c1742
Add fmt::formatter for domain::Side
...
So we can pass it to LOG macros, etc.
2025-01-27 16:25:15 +00:00
John Colvin
0a9bce317c
Add contract qty info to security proto (and FixedSecurity)
...
We should get this kind of security metadata from the exchange rather
than config.
2025-01-25 20:41:47 +00:00
Mohammad Arham
40e44db597
Fix: Added GCHandle in attempt to fix ui crash
2025-01-22 02:15:55 -05:00
Mohammad Arham
4a447e44e1
Add: Version to first log
2025-01-22 02:14:19 -05:00
John Colvin
b1f4654b3c
Fix benign typo in publish_spark.py
2025-01-21 17:28:50 -05:00
John Colvin
9d350334c0
fix build (installer): Fix install path typo in publish_spark.py
2025-01-21 17:28:05 -05:00
John Colvin
ac597f505f
fix build (installer): Set CMAKE_INSTALL_PATH for spark preset
2025-01-21 17:19:15 -05:00
John Colvin
147d9ceb1f
ui: Enable net change price display for synths in ladder
2025-01-21 13:11:16 -05:00
John Colvin
377804dfb9
fix (ui): Don't crash on bad regex in grid filters
...
Wrap Regex construction in try/catch. This is from user input, so of
course we can't assume it will be valid.
2025-01-21 09:26:37 -05:00
John Colvin
0d26401961
fix: Preserve tick_factors in TickDisplaySettings "with" ext
...
Not sure this was a bug in practice, but it was definitely wrong.
2025-01-21 01:24:23 -05:00
John Colvin
889e226151
feat: Add setting to show notional values in ladder
2025-01-21 01:24:23 -05:00
John Colvin
986d53f4e0
ui: Make ladder size format text editable
...
This is the best of both worlds: the user can choose from one of the
canned presets in the dropdown, or specify a custom string format.
2025-01-21 01:24:23 -05:00
Taha
d13ba2968a
DateTimeExpanstionStream col name changes
2025-01-20 15:34:11 -05:00
John Colvin
1a192c8117
feat: Add setting to show ladder prices in basis pts from mid
2025-01-20 14:15:49 -05:00
John Colvin
5e36d4801c
cleanup: Remove redundant if/else code
2025-01-20 13:31:41 -05:00
John Colvin
2cf6411ca7
fix: Send exchangeInfo req via our HttpClient instead of ccapi
...
Bugs (fixed):
* We get a boost beast exception about the read limit being exceeded
when requesting securities from Binance prod url (testnet works).
2025-01-19 14:21:11 +00:00
John Colvin
e99df129d5
cleanup: Remove erroneous include
2025-01-18 22:54:06 +00:00
John Colvin
d07c01bd17
ui: Support ladder ticks-per-row setting for synths
...
The ticks-per-row control was likely hidden by accident in the first
place. I'm guessing the original intent was to only hide the Price Terms
control for synthetics. At the time, there were no other controls in the
group box, so it made since to hide the whole thing. Some time later, we
added the ticks-per-row setting to the same group box, and forgot to
make the groupbox visible again.
2025-01-17 13:11:09 -05:00
Taha Afzal
d69673c524
Previous change was not setting the create time for orders, fixing that + changign one log level to Dag
2025-01-17 07:00:57 +00:00
Taha Afzal
4ee595cdaf
Fixing the issue were fractional fills on a working order could result in overfills being reported (it was only a reporting issue)
2025-01-17 06:38:38 +00:00
Mohammad Arham
6fcaf07df0
Fix: binance execution working on sim
2025-01-17 00:59:22 +00:00
Taha Afzal
492d48d886
Added qty_multiplier to spreader.proto
2025-01-16 20:18:26 +00:00
Taha Afzal
b6a56e768b
Adding config boolan config publish_boostrap_books_only to MarketDataReplayConfig which allows MDReplayer to only publish the bootstrap of all the books
2025-01-16 20:18:26 +00:00
Taha Afzal
3e2b5976a8
Minor changes and ocmments, to allow for fractional qtys
2025-01-16 20:18:26 +00:00
Mohammad Arham
edd3f6cbd6
FIX: Orderbook quantity display fixed
2025-01-15 14:47:09 -05:00
John Colvin
2e9347341b
fix: Don't throw ex just because leg qty is 0
...
ContractLegEnumerable shouldn't be responsible for security validation.
2025-01-14 12:58:58 -05:00
John Colvin
2061e38349
fix: Hook up mview venue filter in vm
2025-01-13 00:11:43 -05:00
Mohammad Arham
650dd57b6d
FIX: increase max symbo count from 32 to 1024
2025-01-13 04:42:13 +00:00
Mohammad Arham
82747f7dc0
Fix: OKX perp swaps are same as futures now
2025-01-13 04:41:29 +00:00
John Colvin
04b26904a3
ui: Sort exchanges in grid filter dropdown
2025-01-12 15:10:20 -05:00
John Colvin
f123e4c72c
ui: Add Exchange col to mview
2025-01-12 15:10:20 -05:00
John Colvin
b887cbebab
fix: Actually capture emumba deribit cfg obj by value
...
The previous "fix" didn't actually work because, although the lambda
captured the obj by value, the thread captured the lambda by reference!
2025-01-09 16:53:22 +00:00
John Colvin
14e975bc7e
vscode: Add Spark (Skip Build) entry to tasks.json
2025-01-09 11:23:30 -05:00
John Colvin
064f557057
ui: Sort accounts in ladder/ticket dropdown
2025-01-09 11:23:30 -05:00
John Colvin
4d106b5e6c
ui: Fix alignment issues in order ticket
2025-01-09 11:23:30 -05:00
John Colvin
9fbeaf0d68
ui: Make TickUpDown style match default (dark) Button
...
* Set BorderThickness to 0
* Use same mouse-hover background as Button
2025-01-09 11:23:30 -05:00
John Colvin
4018ac8b78
ui: Add tooltips to order ticket
2025-01-09 11:23:30 -05:00
John Colvin
81c9503300
ui: Apply dark theme to order ticket buttons
2025-01-09 11:23:30 -05:00
John Colvin
477210926d
ui: Fix text color in algo popup
2025-01-09 11:23:29 -05:00
John Colvin
0aa48a79a9
ui: Remove single quotes from tooltip
...
It looked busy
2025-01-09 01:38:26 -05:00
John Colvin
9e71c7af02
ui: Add tooltips to ladder
2025-01-09 01:38:26 -05:00
John Colvin
4647751409
vscode: Add Spark Test entry to launch.json, tasks.json
2025-01-09 01:03:33 -05:00
John Colvin
a3087b874b
cleanup: Remove unused code
2025-01-09 01:03:32 -05:00
John Colvin
5b2f5c5c8f
Don't throw/catch type exception needlessly
2025-01-09 01:03:32 -05:00
John Colvin
479227090e
ui: Remove overly rigid validation for "ticks per row" setting
2025-01-09 01:03:32 -05:00
John Colvin
2dfcf320f5
fix: Refresh ladder levels when "ticks per row" changes
2025-01-09 01:03:32 -05:00
John Colvin
b4c7213cb2
fix: Refresh ladder prices in view when they change
...
Bugs (fixed):
* Sometimes the prices in the left panel of the ladder get stale
2025-01-09 01:03:32 -05:00
John Colvin
c7dfd69b90
Consolidate tick rounding functions
...
Too many functions were performing essentially the same service:
rounding ticks. It was confusing.
2025-01-09 01:03:32 -05:00
John Colvin
4fdc866485
build: Propagate py script exit codes back to the shell
...
I noticed the build cmds were broken on Windows because the debugger
would still start even when the preLaunchTask (build) failed!
2025-01-09 01:03:32 -05:00
John Colvin
f5d5ca9a1c
ui: Use appropriate colors in font picker control
...
We must have missed this when we switched to dark theme.
2025-01-09 01:03:32 -05:00
John Colvin
cfafcf77b9
ui: Use appropriate text color in ladder settings dialog
...
We must have missed this black text when we switched to dark theme.
While we're at it, freeze the brushes it uses, since they are stored in
a StaticResource which could potentially be shared by multiple controls.
2025-01-09 01:03:32 -05:00
John Colvin
8ebe783139
fix: Clear low/high lines in ladder when scrolled out of view
2025-01-09 01:03:32 -05:00
John Colvin
1851a96a58
vscode: Add Spark (Skip Build) entry to launch.json
2025-01-09 01:03:32 -05:00
John Colvin
0b334ef870
fix: Remove erroneous early exit condition in Ladder render
...
Bugs (fixed):
* The ladder doesn't always render ask prices
2025-01-09 01:03:32 -05:00
John Colvin
ee811a729a
ui: Make ladder price line colors match button text
2025-01-09 01:03:32 -05:00
John Colvin
cb15be276d
ui: Show bid, ask, mid lines in ladder by default
2025-01-09 01:03:32 -05:00
John Colvin
7d5af6729b
ui: Show bid, ask, mid prices in ladder left panel
2025-01-09 01:03:31 -05:00
John Colvin
e5679cf082
ui: Make ladder price links prettier
...
* Change them from hyperlinks to buttons
* Add mouse hover animation
* Align text to the right (so decimal places line up)
2025-01-09 01:03:31 -05:00
John Colvin
98f89b9ad4
fix: Capture emumba deribit cfg by value in thread body
...
Bugs (fixed):
* Sparkd occasionally assert crashes on startup because it fails to
read emumba deribit config.
Cause: This is a simple race bug. The config obj isn't captured by
value, so it can be destructed before the thread references it.
2025-01-08 19:03:01 +00:00
John Colvin
ba4f8f67e3
fix: Disable binance usds futs symbol filter config
...
This was a premature optimization, and has become a burden now that we
need to subscribe to large symbol sets for Alphaworx.
2025-01-06 05:00:04 +00:00
John Colvin
9c78380490
fix build (gcc rel): Don't fallthrough switch cases
2025-01-06 03:52:25 +00:00
John Colvin
f6166f0674
fix: Show iceberg show qty in algo params grid
...
Bugs (fixed):
* In the ladder, you can't view/edit the iceberg show quantity.
Cause: No view template was defined for nullable double params. Most
likely, we changed the show qty in the vm from double to nullable
double at some point, and forgot to reflect this change in the view.
An easy mistake to make as it would not have broken the build.
2025-01-05 15:58:29 -05:00
John Colvin
6334a902e7
fix: Reclaim keyboard focus when mview popup is clicked
2025-01-05 15:29:11 -05:00
John Colvin
082ca62fff
fix: Focus price textbox when mview order ticket popup opens
2025-01-05 15:18:46 -05:00
John Colvin
9dbd8dd7c6
fix: Set focus through FocusScope element if one exists
2025-01-05 15:18:46 -05:00
John Colvin
8f7a4d0df6
Fix typo in AutoFocusTargetProvider dependency prop
2025-01-05 15:18:46 -05:00
John Colvin
f372dd56b3
fix: Return synthetic name in get_security_desc
...
If the security is a synthetic (of course).
Bugs (fixed):
* Changing limits in the risk ui causes sparkd to assert crash
2025-01-05 20:15:10 +00:00
John Colvin
86eba20d61
build: Make compiler/build type case insensitive
2025-01-05 06:25:11 +00:00
John Colvin
35a985280d
fix: Run heartbeat timer in MarketDataGateway
...
This is why we were getting those heartbeat asserts. Previously, only
ExchangeSimApplication would start this timer. Since MarketDataGateway
doesn't share its MDProducer with ExchangeSimApplication, it must start
one itself.
2025-01-03 16:59:07 +00:00
John Colvin
f5e1b3319c
cleanup: Don't write to cout in SparkDataDirectory
...
Don't need that noise.
2025-01-03 16:59:07 +00:00
John Colvin
65c3948e4f
cleanup: Remove unused code
2025-01-03 16:59:07 +00:00
John Colvin
002bdff9a3
fix: Don't parse non-existent json files in SparkDataDirectory
...
Bugs (fixed):
* Sparkd assert crashes if binance_usds_futures_execution.json file
doesn't exist
2025-01-03 16:59:07 +00:00
John Colvin
bb6e5dd548
diag: Fix sparkd log path in show_last_run.sh
2025-01-03 16:59:07 +00:00
John Colvin
7c1aed3339
fix build (api server): Remove old cpps from source file list
2025-01-03 16:59:07 +00:00
John Colvin
22ae51fb99
build: Clean up build py scripts
2025-01-03 16:59:07 +00:00
John Colvin
a53d347f81
fix build (warns): Update cmake min version to 3.10
...
Versions < 3.10 will soon be deprecated (we just started getting
warnings about it).
2025-01-03 16:59:07 +00:00
John Colvin
838dbcd886
build: In py build scripts, exit with code 1 on failure
...
Previously, they would exit with 0 no matter what happened.
2025-01-03 16:59:07 +00:00
John Colvin
5ed2309d22
fix: Add switch case for VENUE_BTS in VenueIndex
2025-01-03 16:59:07 +00:00
John Colvin
4d41704dd2
build: Configure admin webapp build entirely in CMakeLists
...
Get rid of build_admin_web_app.py
2025-01-03 16:59:07 +00:00
John Colvin
bd1000e518
build: Get rid of explicit "targets" in CMakePresets for sparkd
...
So we don't have to worry about keeping it synchronized with the actual
targets in the build (just one more thing that can break). You can build
specific targets via the cmake cli anyways.
2025-01-03 16:59:07 +00:00
John Colvin
dd4aa3c2ed
build: Update fable in dotnet-tools.json
2025-01-03 16:59:07 +00:00
John Colvin
fee9d3f597
build: Update webpack-cli in admin webapp
2025-01-03 16:59:07 +00:00
John Colvin
416f9aef31
vscode: Add Sparkd Test to launch.json
2025-01-03 16:59:07 +00:00
John Colvin
48f5e4c201
vscode: Fix sparkd launch.json
2025-01-03 16:59:07 +00:00
John Colvin
4438b4ca8d
feat: Support fractional quantities in synthetic book
2025-01-03 16:59:07 +00:00
John Colvin
73356e0d61
cli: Add cmd to print security info from the db to console
...
Usage: sparkd md dump --db
2025-01-03 16:59:07 +00:00
John Colvin
4a285fa581
cleanup: Make fn const
2025-01-03 16:59:07 +00:00
John Colvin
cfa82c2177
cleanup: Remove erroneous fwd declared class
2025-01-03 16:59:07 +00:00
John Colvin
0410a0431a
fix: Encode exp in valid date int when storing in sqlite
...
The strange bit shifting we were doing before doesn't support large
dates.
Bugs (fixed):
* Synthetics with Binance perpetual future legs don't appear on the
front end after sparkd restarts.
* Cause: Exp dates for Binance perpetual futures aren't properly
encoded in the database. As a result, when loaded from disk, they
are mistakenly identified as expired, along with any synthetics that
have them as legs.
2025-01-03 16:59:07 +00:00
John Colvin
02843f14ff
cleanup: Get rid of trivial fn that's only used in one place
...
Move the logic into the function that used to call it.
2025-01-03 16:59:07 +00:00
John Colvin
f1f1d4259c
diag: Add logs around security discovery in MDConsumer
...
This is multi-threaded event driven code. Without descriptive logs in
the right places, diagnosing problems is difficult and tedious.
2025-01-03 16:59:07 +00:00
John Colvin
71fc43af68
cleanup: Flatten nested if blocks with continue statements
...
Easier to read
2025-01-03 16:59:07 +00:00
John Colvin
350144ffd5
fix: Use security desc to get unique id (along with venue, type)
...
I'm guessing this typo went unnoticed because it didn't break the build
(another arg of the same was being used instead).
2025-01-03 16:59:07 +00:00
John Colvin
da227a5550
Support synths at Binance, Binance USDS Futures, Deribit, and Okx
2025-01-03 16:59:07 +00:00
John Colvin
0c92cf3a87
Add double ops to IntPrice
2025-01-03 16:59:07 +00:00
John Colvin
1188af391e
Add trivial fns to TimeStamp for convenience
...
* += and -= operators
* 'date' fn
* 'to_date_int' fn
2025-01-03 16:59:07 +00:00
John Colvin
0bb85cf915
refactor: Change month and day params from uint32 to uint8
...
They only need to hold values 1-12 and 1-31, respectively. A single byte
is more than sufficient. Also add ymdhms TimeStamp constructor.
2025-01-03 16:59:07 +00:00
John Colvin
d77f5996fe
cleanup: Make a couple TimeStamp fns const
2025-01-03 16:59:07 +00:00
John Colvin
940c41a274
Add int32 arithmetic operators to domain::Price
2025-01-03 16:59:07 +00:00
John Colvin
e671960dc3
Add double arithmetic operators to domain::Price
2025-01-03 16:59:07 +00:00
John Colvin
8fa34b6b39
fix: Multiply additive factors by exponent in domain::Price
...
We must not have been using these operators because the implementation
was very broken (yet it doesn't seemed to have caused any bugs).
2025-01-03 16:59:07 +00:00
John Colvin
f9d5429b5b
cleanup: Remove unused code
2025-01-03 16:53:05 +00:00
Mohammad Arham
2c342482eb
Merge branch 'development.crypto' of bitbucket.org:bluetradesys/spark into development.crypto
2025-01-02 15:30:13 -05:00
Mohammad Arham
3aefac26c2
fix: Timer condition was incorrect
2025-01-02 20:15:38 +00:00
John Colvin
1554594cdd
diag: Throttle noisy log in Ladder
2025-01-02 12:15:22 -05:00
John Colvin
727a0f38b5
fix: Prevent arithmetic overflow when converting long to int in Ladder
2025-01-02 12:13:58 -05:00
John Colvin
7a0e8cdb26
fix: Properly format spread/synth leg qty in generated desc
2025-01-01 13:12:17 -05:00
John Colvin
a4e97b04d7
fix: Don't propagate security criteria changes to other windows
...
Bugs (fixed):
* Security criteria changes in mview and time/sales propagate to other
windows of the same type.
2024-12-31 11:06:24 -05:00
John Colvin
463980a6ef
Fix typo in get_binance_md.py
2024-12-29 18:37:54 +00:00
John Colvin
9b25857042
fix: Ensure "earliest_expiration" fn actually returns min exp
...
Previously, it assumed the first leg would have the earliest exp. While
this may be true for most securities, it isn't guarenteed by our data
model.
2024-12-29 13:26:44 -05:00
John Colvin
ef19e7d76b
fix: Don't assume all securities have expirations in pnl vm
...
Bugs (fixed):
* PNL window crashes if data has Spots (i.e., securities without exps)
2024-12-29 13:17:17 -05:00
Taha Afzal
471faec2cb
Added more etsts for fractional qtys
2024-12-28 08:31:16 +00:00
Taha Afzal
ce96d42db8
Merging
2024-12-26 07:01:30 +00:00
Mohammad Arham
187894ca84
FIX: makes gateway factory work
2024-12-24 17:56:49 +00:00
John Colvin
63492c4575
fix: Remove erroneous assert in LadderRender
2024-12-21 23:24:52 -05:00
John Colvin
e150c611f6
fix: Round fractional order qty to 6 decimal places
...
It was previously rounding to 2 decimal places, which isn't enough for
many crypto currencies (e.g., BTCUSDT at Binance)
2024-12-21 23:17:52 -05:00
John Colvin
bb837d6c26
fix build: Trivial changes in DatabentoDataHandler
2024-12-22 04:00:23 +00:00
John Colvin
965e541ac8
Fix json structures and endpoints for Binance USDS Futures md
2024-12-22 04:00:23 +00:00
John Colvin
1b232aa610
feat: Add Binance USDS Futures execution
2024-12-22 04:00:23 +00:00
John Colvin
25439b094a
improvement: Perform sec lookup in const time
2024-12-21 20:08:19 +00:00
John Colvin
f927ef2c5e
Add conf_json dir to spark data file tree
...
So we don't have to add proto files to the build for trivial config.
2024-12-21 20:08:19 +00:00
John Colvin
d42389b75a
Don't needlessly download cme config xml
...
When we aren't subscribing to cme md (i.e., no glbx symbols in spark
conf).
2024-12-21 20:08:19 +00:00
John Colvin
671cbcf03a
Fix bts::Quantity string fmt so it includes fractional qty
2024-12-21 20:01:55 +00:00
John Colvin
e589e23f41
Add py script to get md at binance
...
For quick/easy troubleshooting (much easier than doing stuff in c++)
2024-12-21 20:01:55 +00:00
John Colvin
11fadc0a3e
Expose "run" fn in WebsocketClient
...
So it doesn't have to be hidden in a background thread
2024-12-21 20:01:55 +00:00
John Colvin
b8c2d93866
Add ping/pong facilities to WebsocketClient
2024-12-21 20:01:55 +00:00
John Colvin
67a23dd196
Add open/close callbacks to WebsocketClient
2024-12-21 20:01:55 +00:00
John Colvin
ff22c4eb5f
diag: Change WebsocketClient log category to "Http"
...
A better fit than "Gen"
2024-12-21 20:01:55 +00:00
John Colvin
5addff4c50
cleanup: Remove redundant fn HttpRequest::perform
...
This was doing the same thing as HttpClient::send. I likely refactored
this function during development, then forgot to remove it.
2024-12-21 20:01:55 +00:00
John Colvin
142e1bd2da
Add HttpMethod "DELETE"
...
In Binance's REST api, orders are canceled via DELETE requests.
2024-12-21 20:01:55 +00:00
John Colvin
d05d91bbe7
diag: Log Http requests
2024-12-21 20:01:55 +00:00
Mohammad Arham
3a90ca9cb5
Add: Johns changes to sec oracle
2024-12-17 14:47:37 +00:00
John Colvin
85a46727be
Improve c++ http client facilities
2024-12-11 19:28:36 +00:00
Mohammad Arham
624fd2c976
FIX: BUILD Error
2024-12-09 01:34:29 +00:00
Mohammad Arham
16d599d2d6
Add: OKX execution gateway connected
2024-12-08 20:14:16 -05:00
John Colvin
c00e4fcb6b
feat: Add Binance Coin Futures market data
2024-12-06 00:39:41 +00:00
John Colvin
03e19afe1d
Fix qty display conf for BTC/ETH futs at Binance
...
Need to show 3 decimal places (qty tick size is 0.001)
2024-12-05 21:05:53 +00:00
John Colvin
058e11eadc
fix build: Fix install path for sparkd
2024-12-05 18:31:36 +00:00
John Colvin
6ff52e7107
fix build: Add onixs libs again
...
Taha accidentally reverted externals
2024-12-04 16:56:46 +00:00
John Colvin
ee4c28ed41
Port ws client over from cme-websocket-connector
...
Need this to implement execution at crypto exchanges (beginning with
Binance and OKX)
2024-12-04 16:56:46 +00:00
Mohammad Arham
50d26f0060
Merge branch 'development' of bitbucket.org:bluetradesys/spark into development
2024-12-03 09:52:09 -05:00
Mohammad Arham
36378e6074
Add:: Recording md to sql
2024-12-03 14:51:32 +00:00
John Colvin
8cde8ee6e1
build: Add script to publish the api server
...
This will build the app as a self-contained executable here:
build/Release/bin/net7.0/linux-x64/publish
2024-11-28 16:35:21 +00:00
John Colvin
4f8fad444e
fix build: Add missing csproj deps to Spark.Api.Server.sln
2024-11-28 16:35:20 +00:00
John Colvin
832c645a30
build: Map cmake install dir to associated preset
...
Cpp bins are now installed to "install/<cmake_preset>/bin". For example,
"install/sparkd-release-gcc/bin", "install/spark-api-server-linux/bin", etc.
2024-11-28 16:35:20 +00:00
John Colvin
691343d9b6
feat: Add datastreams to spark api server
2024-11-28 06:14:00 +00:00
Taha
461cbad338
Adding FakeBBO stream
2024-11-27 13:36:14 -05:00
Taha
fecbcbb6b6
Merge branch 'development' of bitbucket.org:bluetradesys/spark into development
2024-11-26 22:33:31 -05:00
Taha
aab8e83543
Some rewrite of streams that fetch bars, and making the other business streams thin wrapper over stream primitives
2024-11-26 22:33:26 -05:00
Mohammad Arham
420b46741e
ADD: Config for sql writer in mdrecorder
2024-11-24 19:14:45 +00:00
Mohammad Arham
e8f65f95bd
Wrapped proto write in function in mdrecorder
2024-11-24 19:13:36 +00:00
Mohammad Arham
0e893b9b5d
Fix: Multiple Exchange data sources work without timee
2024-11-20 23:48:50 +00:00
Mohammad Arham
0593ae0320
Fix: Logging path was incorrect
2024-11-20 23:48:24 +00:00
Mohammad Arham
960149b9c5
Fix: Stupid bug on sleep time
2024-11-20 22:49:22 +00:00
Mohammad Arham
b5f5f2f3d5
Merge branch 'development' of bitbucket.org:bluetradesys/spark into development
2024-11-20 17:21:45 -05:00
John Colvin
bd8c97244a
refactor: Return row id in IStore::retrieve_one
...
This is a prerequisite to synchronizing security ids stored via IDGenerator
(the "new" way to store ids, added when we implemented Deribit), and
SecurityDB (the original way from spark days). The problem was that these
2 implementations were using separate databases. We need to unify the
interfaces between these storage services to avoid breaking existing code.
2024-11-20 22:17:08 +00:00
John Colvin
cb187e6997
Interpret db strng param as name or path in SqliteStore ctr
2024-11-20 22:17:08 +00:00
John Colvin
4004ed2267
refactor: Normalize sec key indexing for old md sources
...
Now both old and new (domain) md sources index securities by
the same string format.
2024-11-20 22:17:08 +00:00
John Colvin
a00347ac3f
Add ostream operator for Venue
2024-11-20 22:17:08 +00:00
John Colvin
c4d08840bd
Add ostream operator for SecurityType
2024-11-20 22:17:08 +00:00
John Colvin
84c0684b63
refactor: Normalize sec key indexing for new (domain) md sources
...
This is part of a larger effort to unify the way we index securities in order
to generate unique ids. Older md sources (e.g., MDP3Listener) use
SecurityIDRecorder to generate ids, which uses a different database and
different key-string formatting than the IDGenerator used by the newer md
sources (e.g., GeneralMarketDataListener and various ccapi-based sources).
2024-11-20 22:17:08 +00:00
Mohammad Arham
bca8df6d99
Fix: Release Crash fixed still has timer
2024-11-20 22:14:48 +00:00
Mohammad Arham
98f8e58f3f
Add optional tags to config
2024-11-20 22:12:06 +00:00
Mohammad Arham
76f18f3443
Fix: typo in fixed securities
2024-11-20 20:17:29 +00:00
Mohammad Arham
b67d748ba1
removed: moved onix glbx to main controler thread
2024-11-20 06:58:14 +00:00
Mohammad Arham
0113721355
Add: Config for marex reconnect attemps
2024-11-20 06:29:41 +00:00
Mohammad Arham
715f7f7c70
Fix: Race condition causes crash not sure if fixed
2024-11-20 06:17:28 +00:00
Mohammad Arham
89955597c1
Add: Onix/Marex fix adapter, listener, and state handler
2024-11-20 06:16:58 +00:00
Mohammad Arham
96d9aae048
Add: IFIXGenericAdapter
2024-11-20 04:45:36 +00:00
Mohammad Arham
f28d32946f
Add: General Execution Gateway (between system and IFIXAdapter )
2024-11-20 04:39:43 +00:00
Mohammad Arham
924efb2c3f
Add: Added proto for marex fix config
2024-11-20 04:26:39 +00:00
Mohammad Arham
50abb1d784
Fix: Refactored to Switch Statement instead of if and aadded cboe
2024-11-20 04:24:51 +00:00
Mohammad Arham
b5ef39ee4b
Fix: Change default tick_config for taifed
2024-11-20 04:18:58 +00:00
Mohammad Arham
5b61b4fe69
Add: Accounts for CBOE Execution, subaccounts dont work
2024-11-20 03:22:18 +00:00
Mohammad Arham
2d8523ae67
FIX: Order cancel now working in emnative order
2024-11-20 03:18:31 +00:00
Mohammad Arham
f0eef447d3
Add: Exchange parameter added to EMNAtive Order
2024-11-20 03:18:04 +00:00
Mohammad Arham
8604d5672c
ADD: Comments for CME execution for later
2024-11-20 03:11:54 +00:00
Mohammad Arham
30822fb1f1
Fix: move start glbx onix to seperate thread
2024-11-20 03:09:07 +00:00
Mohammad Arham
826bbf76a9
Add: load_reference_data config for databento
2024-11-20 02:53:19 +00:00
John Colvin
eb8c97a1b7
fix: Detect integer ticks of all sizes (not just 1)
...
Also don't divide by zero!
Bugs (fixed):
* Spark crashes when opening a ladder with integer tick size of 5.
This was first observed with TAIFEX futures.
Cause: The ladder throws a DivideByZero exception when calculating
the number of ticks per dollar. It isn't caught until it bubbles up
to the scope in which 'Dispatcher.Run' was called. The catch handler
then deliberately assert crashes.
2024-11-12 16:15:47 -05:00
John Colvin
5517c58724
fix (ui): Display trade time w/ microsecond precision
...
Was only showing milliseconds before
2024-11-12 11:42:23 -05:00
John Colvin
e9bcdd0c65
fix build: Update Newtonsoft.Json to 13.0.3 in Spark.csproj
2024-11-12 10:35:51 -05:00
Taha
83b37c6661
Merge branch 'development' of bitbucket.org:bluetradesys/spark into development
2024-10-30 13:36:33 -04:00
Taha
6163887cd3
Bunch of CME queries are now working
2024-10-30 13:36:23 -04:00
Mohammad Arham
214641aa1e
Add: cpp tp sec_common
2024-10-25 07:02:46 +00:00
Mohammad Arham
06bc7af232
FIx: Taifex md working
2024-10-25 06:59:52 +00:00
Mohammad Arham
36b6168dec
Taifex State working
2024-10-18 21:13:56 +00:00
Taha
f9aa9dd982
Merge branch 'development' of bitbucket.org:bluetradesys/spark into development
2024-10-15 23:48:34 -04:00
Taha
22f1ab44f9
Basic set of streams that can talks ot the LLM and get DSL back from few-shot prompt
2024-10-15 23:38:49 -04:00
John Colvin
e4c87c267d
Fix DateTimeConstant token regex for DataStreams
...
The previous regex was overly ambitious (and needlessly complex as a
result). The new regex is simpler, and doesn't impose bounds on month
and day ints, aside from requiring 1-2 digits.
Bugs (fixed):
* The DataStreamExpressionInterpretter fails to parse certain date
constants, such as "8/30/2024"
2024-10-15 11:46:58 -04:00
Mohammad Arham
86899a6ff0
FIX: TAifex state working
2024-10-14 17:19:03 +00:00
Adeel Khan
2324fd3ad2
CHANGE: Taifex State Mgmt
2024-10-14 20:59:34 +05:00
Taha
288b7712db
Added and modified more streams to address teh CME NL queries
2024-10-09 13:59:01 -04:00
Mohammad Arham
8850bf4903
Remove: Assert in taifex code
2024-10-09 14:53:20 +00:00
Mohammad Arham
11112b41d1
Add: Missing config entry databento
2024-10-09 02:36:35 +00:00
Adeel Khan
2a98889b67
UPDATE: TaifexDataGateway
2024-10-09 02:18:28 +00:00
Adeel Khan
8060518a28
FIX: Removed Taifex Bugs
2024-10-08 21:29:44 +00:00
Mohammad Arham
68440d3df3
ADD: Config for one year security filter
2024-10-08 13:50:38 +00:00
Mohammad Arham
7d775afc4c
Add: Taifex after hours ip change config
2024-10-08 13:49:36 +00:00
Mohammad Arham
50c7764ef7
Add: Databento security filter
2024-10-07 20:33:38 +00:00
Mohammad Arham
fb8b2d28f3
Fix: DATABENTO live working
2024-10-07 20:05:38 +00:00
Mohammad Arham
bcc2c4a514
CHANGE: Taifex Refactored
2024-10-07 16:26:12 +00:00
Mohammad Arham
9352298be0
Add: Taifex statehandler
2024-10-07 08:51:55 +00:00
Mohammad Arham
180bd11740
FIX: Taifex replay types of files handled
2024-10-06 21:31:34 +00:00
Mohammad Arham
57ea841381
ADD: i084 taifex
2024-10-06 20:31:07 +00:00
Mohammad Arham
7d9d176fa2
Change: Rename taifex files
2024-10-06 18:38:36 +00:00
Mohammad Arham
a8f4ec07c8
Change: moved file paths to config for taifex file replay
2024-10-06 08:29:27 +00:00
Mohammad Arham
58c5be268f
Add: Refactored taifex code to break it down
2024-10-06 08:01:22 +00:00
Mohammad Arham
bf4859a2a9
Change: Refactored read binary file taifex
2024-10-06 07:28:12 +00:00
Adeel Khan
db1cf93994
Add: Incremental Books
2024-10-04 23:23:54 +05:00
Adeel Khan
ecb1c4fea0
Add: Taifex Trades
2024-10-04 23:23:41 +05:00
Mohammad Arham
a513933044
Add: Exceptions handling for databento
2024-10-04 13:06:56 +00:00
Mohammad Arham
764d65b595
Remove: code to remove secuties
2024-10-03 12:06:55 +00:00
Mohammad Arham
bc0d606252
Add: code to connect to Live databento
2024-10-03 12:03:48 +00:00
Mohammad Arham
ceb8a68902
Add: databento repllay filename to cofig
2024-09-27 03:20:20 +00:00
Mohammad Arham
0b3183fd30
Add: added onix fix to lib to build dir
2024-09-26 16:23:19 +00:00
Mohammad Arham
b6dbe37818
Add: entry for onix fix
2024-09-24 13:41:45 +00:00
Mohammad Arham
c78b8bc8e1
Add databento to external
2024-09-24 13:37:57 +00:00
Taha Afzal
314f3e3715
Adding comments
2024-09-23 18:40:06 +00:00
Taha Afzal
26a1d5fc03
Creating scaffolding for incremental book updates in GeneralMarketDataListener
2024-09-23 18:39:12 +00:00
John Colvin
37e5003cf9
Merge remote-tracking branch 'origin/development.ps_linux' into development
2024-09-19 05:40:59 +00:00
John Colvin
07f3868ffc
Add CBOE to spark admin webapp
2024-09-18 19:03:43 +00:00
John Colvin
46f0b17138
Add TAIFEX to spark admin webapp
2024-09-18 19:03:43 +00:00
Taha
33a8e06a3a
Fixing implied vols for SPX (market data was getting divide dby the fwd)
2024-09-17 22:17:31 -04:00
John Colvin
74afdde8de
fix build: Add ".list" to SymbolLists config
...
For new exchanges, TAIFEX and CBOE
2024-09-17 13:01:05 +00:00
John Colvin
0a92ad2eb1
fix (build): Add break statement to new venue switch cases
...
Namely, TAIFEX and CBOE
2024-09-17 13:00:14 +00:00
John Colvin
56d207c3f1
fix: Preserve vs exp sec type (Option) when computing implied vol
...
Because the exp keys in the data map have sec type Option.
2024-09-16 13:46:53 -04:00
John Colvin
9172e752e3
ui: Highlight launcher buttons when selected
...
Namely, the expandable menu buttons in Analytics shell module
2024-09-16 13:46:53 -04:00
John Colvin
adc9f2acfc
Replace trivial refs to ThreadedBlackboard w/ IBus
2024-09-15 23:45:15 -04:00
John Colvin
41d17e67d2
fix: Move accounts subscription to dispatcher thread
...
We update a collection that is bound to the view in the callback (mutation
ops throw if performed on a different thread).
2024-09-15 23:45:15 -04:00
John Colvin
5cacff073b
fix: Check 'HasTimestamp' before accessing prop in man fill row
...
Pending adds (i.e., unpersisted new rows) don't have timestamps.
In such cases, the 'Timestamp' getter throws an exception.
2024-09-15 23:45:15 -04:00
John Colvin
c8da92c250
Cache/index options for faster lookups in SystemContractData
2024-09-15 23:45:15 -04:00
John Colvin
c4e76076e3
fix: Include venue w/ symbol when publishing interp greeks
2024-09-15 23:45:14 -04:00
John Colvin
6a715b9a68
Fix typo in comment
2024-09-15 23:45:11 -04:00
John Colvin
1f28940c95
fix: SelectorList.RemoveAt doesn't need 'convert_back' delegate
...
So don't throw an exception if it is null.
2024-09-15 23:45:11 -04:00
John Colvin
ebff40b88f
fix: Don't assume venue is in spread def string
...
Pass it as an argument to the parse fn. This should be fine for now, but
obviously a singular venue param won't work for cross exchange spreads.
2024-09-15 23:45:11 -04:00
John Colvin
a6d14a3ac3
improvement: Move system contracts sub off of dispatcher thread
...
Also add 200ms throttle. Contracts shouldn't change that often, so we don't need
lightening speed here. Furthermore, such changes may trigger expensive cpu ops.
Note: this change also replaces refs to ThreadedBlackboard w/ IBus (the
former is somewhat tethered to the dispatcher thread, particularly by
its timer_callback).
2024-09-15 23:45:11 -04:00
John Colvin
af96bcb9e3
fix: Pass symbol/venue from vs usage cfg to AnalyticsService proto
2024-09-15 23:28:59 -04:00
John Colvin
619702cb04
cleanup: Remove unused code
2024-09-15 23:28:59 -04:00
John Colvin
5baec19aff
refactor: Index vol and theos data by symbol/venue tuple
...
Rather than just symbol, to avoid conflicts when the same symbol exists
at multiple exchanges
2024-09-13 10:50:23 -04:00
John Colvin
39ef30c1e3
cleanup: Remove redundant type VolSurfaceSymbolStructure
...
There is an identical type (in terms of prop types and corresponding proto indices)
called VolSurfaceSymbolRelationship that is used in more places.
2024-09-13 10:50:23 -04:00
John Colvin
c2f2d28914
Move nested vm classes into own files
...
VolSurfaceSettingsEditor has too much code (still). It is hard to
navigate.
2024-09-13 10:50:23 -04:00
John Colvin
e06bc3bdf5
Simplify driver symbol structure in vs settings vm
...
The code was confusing and difficult to follow.
2024-09-13 10:50:23 -04:00
John Colvin
e19c19c013
fix: Raise prop changed event when is_selected changes
2024-09-13 10:50:23 -04:00
John Colvin
8f324bc507
Add venue to vs calc fns
2024-09-13 10:50:23 -04:00
John Colvin
12107c42ce
fix: Provide venue param w/ symbol when computing fut slide
2024-09-13 10:50:23 -04:00
John Colvin
91c6fb4e52
diag: Log added/removed exps when syncing vs input w/ system exps
...
This shouldn't happen often, but if it does, we should know about it.
PS: We recently fixed a bug caused by inequalities between
VolSurfaceExpirations in vs input, and in SystemContractData. User
inputs to the vs grid would be immediately reverted, as the exps
associated with the inputs were not found in the SystemContractData.
This bug would have been easier to track down with this logging in
place.
2024-09-13 10:50:23 -04:00
John Colvin
7044355547
Add venue to VolSurface(DisplayGrid)Expiration
...
So we can handle symbol/exp date conflicts for securities that differ
only by venue (exchange)
2024-09-13 10:50:23 -04:00
John Colvin
583ae65fb2
Clean up VolSurfaceExpiration
...
* Enable nullable lang feat
* Use file-scoped namespace
* Sort members
* Include sec type in Compare impl
2024-09-13 10:50:22 -04:00
John Colvin
552fec0edc
Add null check in SelectorList ctr
2024-09-13 10:50:22 -04:00
John Colvin
fcf6927fbf
cleanup: Remove unused code
2024-09-13 10:50:22 -04:00
John Colvin
23f6d827d5
refactor: Replace ThreadedBlackboard w/ IBus
...
In SingleVolSurfaceCommittedOutputRetriever
2024-09-13 10:50:22 -04:00
John Colvin
f083d0abab
Clean up VolSurfaceTimeParameters
...
* Enable nullable lang feat
* Use file-scoped namespace
* Implement ICloneable
2024-09-13 10:50:22 -04:00
John Colvin
a895e36922
cleanup: Remove unnecessary ternary op
2024-09-13 10:50:22 -04:00
John Colvin
59d7a72288
fix: Actually use (sec) type arg in to_security_expiration
2024-09-13 10:50:22 -04:00
John Colvin
7731f2f4d1
fix: Check security_type in vs exp Equals impl
2024-09-13 10:50:22 -04:00
John Colvin
41ae5897c0
fix: Maintain sec type when converting SecurityExpiration to vs exp
...
Avoids data loss
2024-09-13 10:50:22 -04:00
John Colvin
c7949ccfba
refactor: Get rid of sec type 'Option' default (magic const)
...
Better to be explict
2024-09-13 10:50:22 -04:00
John Colvin
567af79c7f
Fix selection binding issues in vs settings editor
...
This specifically addresses issues in the driver symbol grids.
Unfortunately, we can't bind directly to ComboCheckBox.SelectedItems
because the view is contained in TabControl. When the selected tab
changes, the previously selected tab clears its ItemsSource (and
consequently the SelectedItems) as a side effect of being unloaded.
2024-09-13 10:50:22 -04:00
John Colvin
6bb4a7b25c
refactor: Enable nullable (ref types) in ImmutableListExtensions
2024-09-13 10:50:22 -04:00
John Colvin
bc7cef4c34
Fix typo in namespace bts.collection -> bts.collections
2024-09-13 10:50:22 -04:00
John Colvin
ab9dc361d6
fix: Use ComboCheckBoxItem.IsSelectedProperty
...
Instead of Selector.IsSelectedProperty. Unlike ComboBoxItem, ComboCheckItem's
IsSelectedProperty isn't linked to Selector.IsSelectedProperty.
2024-09-13 10:50:21 -04:00
John Colvin
39da0a4dde
Add currency column to mview
2024-09-13 10:50:21 -04:00
John Colvin
44e864d697
fix: Use SetCurrentValue instead of SetValue
...
So we propagate values to/from the binding data source,
rather than overwrite the data source itself.
2024-09-13 10:50:21 -04:00
John Colvin
0a02da3aba
Add venue, sec type dropdown filters to exp params ui
2024-09-13 10:50:21 -04:00
John Colvin
836771a7f0
fix: Add null check in ComboCheckBox.SelectedItemsCollectionChanged
2024-09-13 10:50:21 -04:00
John Colvin
f386badcfb
fix: Disconnect old INotifyCollectionChanged source when dp changes
2024-09-13 10:50:21 -04:00
John Colvin
1d43a484db
fix: Index opt/fut exps by venue in vs analytics
2024-09-13 10:50:21 -04:00
John Colvin
91042cb41e
fix: Support multiple exchanges in exp params view/vm
2024-09-13 10:50:21 -04:00
John Colvin
10c0e4247d
cleanup: Remove unused 'option_symbol' param from compute_atm_data
2024-09-13 10:50:21 -04:00
John Colvin
8e34264e6d
fix: Filter by exch when getting atm data for sheets
...
This is necessary now that we support exchanges with overlapping securities
2024-09-13 10:50:21 -04:00
John Colvin
0a840d256b
fix: Remove sec id prop from SecurityExpiration
...
This class isn't designed to represent a particular contract; it's
basically a key to get option theos.
2024-09-13 10:50:21 -04:00
John Colvin
8a69c51cac
refactor: Add 'onDispatcher' param to 'ThreadedBlackboard.subscribe'
...
This will allow us to gradually move subscriptions off of the dispatcher
(render) thread. When the render thread is pegged, the ui is laggy and
unresponsive. The new param defaults to true, so it won't change
anything until we explicitly set it to false in 'subscribe' calls.
2024-09-13 10:50:21 -04:00
John Colvin
0262fd40bc
fix: Remove redundant SparkTimer threads
...
This addresses some slowness on the front end. Prior to this commit,
each ThreadedBlackboard would start its own timer thread. Since multiple
ThreadedBlackboard run concurrently, this multiplied the frequency of
the SparkTimer callbacks by the number of active ThreadedBlackboards.
The fix is to start this thread in an IShellDaemon rather than the
ThreadedBlackboard. This avoids duplicate threads because the former is
guarenteed to be instantiated only once, via dependency injection.
2024-09-13 10:50:21 -04:00
John Colvin
859dfe3544
refactor: Simplify FakeMDDaemon code that delays post
...
Use Task.Delay/ContinueWith instead of subscribing to the SparkTimer tag.
2024-09-13 10:50:21 -04:00
John Colvin
9c624a2f79
refactor: Use IBus instead of ThreadedBlackboard
...
This should address some slowness/mouse lag in the front end (recently
reported by Brandon at Immutable Cap)
2024-09-13 10:50:20 -04:00
John Colvin
dec1061b40
fix: Detect and log ccapi depth msg parse errors
...
This fixes a crash that would happen if a depth item's price or quantity
were an empty string (now we log an error and keep going).
2024-09-13 10:50:20 -04:00
John Colvin
be4895faa6
fix: Actually store currency in shared mem
...
This field has always been in the Security proto, though it until now it
had been omitted from the shared memory representation (FixedSecurity).
2024-09-13 10:50:20 -04:00
Mohammad Arham
3c9755f0dd
ADD: Added delay to databento file reader
2024-09-12 15:10:34 +00:00
Mohammad Arham
61ed847d7d
Add: Replay speed added to mdreplayer
2024-09-11 06:50:37 +00:00
Mohammad Arham
fc9094fea8
Added: CBOE working on databento
2024-09-11 06:17:26 +00:00
Mohammad Arham
e36c0efc4b
Added: GLBX working on databento
2024-09-11 06:16:42 +00:00
Mohammad Arham
4158a14cff
Added: option to send timestamp in onbook IMDListener
2024-09-11 06:15:40 +00:00
Mohammad Arham
201a45cba0
taifex deo
2024-09-05 00:59:00 +00:00
Mohammad Arham
ab31b9b253
Add: Multiple files working taifex
2024-09-03 15:15:55 +00:00
Adeel Khan
780ddc79a7
Add: Taifex I083 Message
2024-09-03 20:06:48 +05:00
Mohammad Arham
d5a2adaed6
fix: removed errernous code
2024-09-03 13:09:54 +00:00
Mohammad Arham
008ab3f068
Merge branch 'development.new_exchanges' of bitbucket.org:bluetradesys/spark into development.new_exchanges
2024-09-02 16:31:14 -04:00
Mohammad Arham
7d926f588d
FIX: typo, changed date to day
2024-09-02 16:31:10 -04:00
Mohammad Arham
707cd07876
Add: CBOE L1 books and contracts working
2024-08-28 16:22:51 +00:00
Mohammad Arham
f7ecb9090c
add: code to start working on cboe
2024-08-27 12:33:23 +00:00
Mohammad Arham
a19e8a7315
change: changes to make taifex work
2024-08-27 07:45:59 -04:00
John Colvin
cf189ecf81
refactor: Start cboe and taifex md 'start_databento'
...
Similar to how we start all ccapi implemented exchanges in "_start_cc"
(in MarketDataGateway)
2024-08-26 19:13:59 +00:00
John Colvin
4405b7adcb
refactor: Rename cc_md_listeners -> venue_listeners
...
They are general purpose, not specific to ccapi.
2024-08-26 19:09:57 +00:00
John Colvin
e51ee7b7b9
refactor: Wrap IDGenerator and IMarketDataListeners in shared_ptrs
...
Our various market data providers (ccapi, emumba, replay, onixs)
dereference pointers to common instances of these types concurrently on
different threads. Although we've correctly managed memory ownership
thus far, we really should be using smart pointers (this is why they
were made).
2024-08-26 19:03:29 +00:00
John Colvin
dfaa74f426
build: Add databento dep via FetchContent
...
Now we actually build libdatabento in the devcontainer along with our
code (as we do with the vcpkg deps, though this is not part of vcpkg)
2024-08-26 17:13:51 +00:00
Mohammad Arham
1d2ce59009
add: added taifex entries
2024-08-22 23:13:05 +00:00
Adeel Khan
3602cc05bb
added: TaifexDataHandler, temp
2024-08-23 02:06:47 +05:00
Adeel Khan
ac88a81ac6
Security Extensions
2024-08-23 01:42:24 +05:00
Adeel Khan
01fa8e0c63
added: files for Taifex, Cboe
2024-08-23 00:57:40 +05:00
Taha
322c06bfbe
Fixing build relted to BCG vs bts namespace
2024-08-21 16:24:22 -04:00
Taha
b68fceb362
Cleaning up FileStreams
2024-08-21 16:11:57 -04:00
John Colvin
59547e0f37
fix build: Lock fmt version to 10.2.1 in vcpkg
...
This fixes the front-end (Windows) libspark build
2024-08-21 13:45:43 -04:00
John Colvin
3ce100a9cf
build: Add databento to sparkd
...
* Install databento deps in docker
- libzstd-dev
* Add databento cmake module to externals
2024-08-21 13:49:53 +00:00
John Colvin
6513fb0cd5
cleanup: Remove unused include 'date.h' from MDSource
...
This was an external header, and may interfere with a dependency in the
databento lib (which we are about to add).
2024-08-21 13:49:24 +00:00
Taha Afzal
fd0fb1f760
Adding incremental book updates to IMarketDataListener
2024-08-12 22:49:27 -04:00
Taha Afzal
5db586c4d3
spaces, newlines?
2024-08-12 21:27:43 -04:00
Taha
31df1a3827
Added benzinga streamd to MDPub's test config
2024-07-17 14:32:57 -04:00
Taha
7e219aec7c
Merging
2024-07-17 02:06:17 -04:00
Taha
37f8b98df9
Icomplete SharedStreamsConfig was breaking build, fixing
2024-07-17 02:03:43 -04:00
Taha
f06beff22f
Added new benzinga streams
2024-07-17 02:02:01 -04:00
Taha Afzal
6aa39a716a
PubSubSingleTagState is not needed any more
2024-07-16 01:15:51 +00:00
Taha Afzal
5088b5ebe0
Fixing problems where PSS's client socket's IP was different than what the client was sending in PubSubClientSubscription
2024-07-08 23:09:53 +00:00
Taha Afzal
010dd3a26f
Fixing PubsubEchoTestStream
2024-07-07 06:13:22 +00:00
Taha Afzal
1a18755176
Added pss_echo()
2024-07-06 06:53:35 +00:00
Taha Afzal
233e2576af
Merging
2024-07-05 21:21:27 +00:00
Taha Afzal
543c655bca
src/DataStreamSuite/PubSub/ManagedTCP/AsyncTCPConnection_AsyncWrapper.cs
2024-07-05 21:13:36 +00:00
Taha
050e21e22b
Adding TableMetaDataStream
2024-07-04 23:39:04 -04:00
Taha Afzal
672ad6d237
Cleaning Config 1.0 (not completely done)
2024-06-30 23:17:20 -04:00
Taha
0a8f6e866f
Added pubsub routes to the Title of DSQA
2024-06-27 14:04:07 -04:00
Taha
b177ffef04
Fixing the bug where messages were being sent by the pubsubserver out of order
2024-06-27 00:17:22 -04:00
Taha
393f304be4
some buf gixes + cleanup
2024-06-26 00:23:19 -04:00
Taha
151816bf5e
PubSuMessageReactor empties the message queue (instead oif one elem ata a time) in the main loop
2024-06-24 02:29:28 -04:00
Taha
5cf7eacd82
Fixing the extra .0 in the default pubsub server routeplusfixing acorner cae issue of gettign a fast streaming data cakback after an unsubscribe
2024-06-24 00:28:07 -04:00
Taha
87b6a2044c
PubSubServer's linux issues fixed
2024-06-23 21:13:37 -04:00
John Colvin
087d8ab8c9
Set text=auto in gitattributes
...
Otherwise git can cause files to show as "permanently modified" when you
apply changes from the index (e.g., by running 'git rebase', or 'git
stash pop')
2024-06-11 17:39:12 +00:00
John Colvin
b69b7b3350
vscode: Use '\' dir separator in show_last_run.cmd
...
This script only runs on Windows
2024-06-08 15:08:25 -05:00
John Colvin
5620f33524
vscode: Add task to view logs for last PubSubServer run
2024-06-08 14:42:13 +00:00
John Colvin
f3e33fa390
vscode: Add task to run PubSubServer without building
2024-06-07 16:41:42 +00:00
John Colvin
3b631e0d5f
Fix a couple more typos in logs
2024-06-07 16:35:06 +00:00
John Colvin
f93d28ee76
vscode: Add task to view logs for last DSQA run
2024-06-07 11:34:36 -05:00
John Colvin
23d7d3775d
cleanup: Delete unused files
2024-06-07 10:40:34 -05:00
John Colvin
4940771166
fix: Don't login to sparkd from DSQA
2024-06-07 10:02:42 -05:00
John Colvin
c1967a8f6a
vscode: Add tasks to edit Spark, DataStream config
2024-06-06 11:12:56 -05:00
John Colvin
8c797ee76b
Fix typo in log msg
2024-06-06 09:21:01 -05:00
John Colvin
ce80957d07
DSQA shouldn't connect to sparkd by default
2024-06-06 09:21:01 -05:00
John Colvin
c60018b59e
DataStreamPublisher shouldn't connect to sparkd by default
...
It only needs to connect to sparkd if it's publishing market data
2024-06-06 09:21:01 -05:00
John Colvin
3a27af87d1
PubSubServer shouldn't download config from sparkd by default
...
As far as I know, it only needs spark/protobuf config to initialize the
c++ logging system. Eventually, we should get rid of that dependency and
use builtin Microsoft Logging facilities for c# instead. In the
meantime, PubSubServer will load config from local files by default
(i.e., spark.conf).
2024-06-06 09:21:01 -05:00
John Colvin
068c1c6973
cleanup: Remove erroneous comment
2024-06-06 09:21:01 -05:00
John Colvin
645a58c97d
vscode: Add launch.json
2024-06-06 09:21:01 -05:00
John Colvin
b7f455b29a
vscode: Remove launch/tasks.json from gitignore
2024-06-06 09:21:00 -05:00
John Colvin
4a2735839e
Change line endings to crlf in a few cs files
2024-06-06 09:21:00 -05:00
John Colvin
d2e9fe8237
Change line endings to crlf in a few cs files
2024-06-06 09:21:00 -05:00
John Colvin
cfc60766d8
Change line endings to crlf in a few cs files
2024-06-06 09:21:00 -05:00
John Colvin
b03fec7f79
Change line endings to crlf in a few cs files
2024-06-06 09:20:59 -05:00
John Colvin
fb8e7c5b81
Ensure crlf line endings for cs files
2024-06-06 09:20:05 -05:00
John Colvin
e44601d1b1
fix merge: Bring back few fns that SchemaGuesserStream needs
...
* BlueDataUtility.get_typed_schema
* BlueDataUtility.get_typed_table
2024-06-06 09:20:05 -05:00
Taha
07bade53c0
Fixing AsyncTCPCOnnection_APM's double partial messages for messages > 100 MB
2024-06-06 09:20:05 -05:00
Taha
fac0a9c25b
RemoteQueryStream
2024-06-06 09:20:05 -05:00
John Colvin
1d1de3dd18
Ensure proper line endings for sh, cmd scripts
...
Via new gitattributes file
2024-06-06 09:20:05 -05:00
John Colvin
cfcbf004ba
vscode: Use consistent naming conventions in tasks.json
2024-06-06 09:20:05 -05:00
John Colvin
78c7dadbbe
vscode: Add parameterless task variants
...
This allows us to build as a 'preLaunchTask' when debugging (without
requiring users to redundantly specify 'Debug' as the build type).
2024-06-06 09:20:01 -05:00
John Colvin
7b5a6031af
build: Use consistent naming conventions in CMake presets
...
We'll use similar naming conventions for our (vscode) tasks
2024-06-06 09:15:17 -05:00
John Colvin
c13a7782c8
build: Name sparkd binary dirs after cmake preset
...
All other builds follow this pattern. Given the fact that we have so
many different builds now (spark, sparkd, data-streams, api-server,
etc.), it behooves us to adopt consistent naming conventions.
2024-06-06 09:15:17 -05:00
John Colvin
45f02391d1
cleanup: Remove sparkd login creds from PubSubServerConfig
...
It only needs a Sparkd url to download logging config. TBH, we can probably
get rid of that too, and simply read the local spark.conf.
2024-06-06 09:15:17 -05:00
John Colvin
a3ca06addc
Reduce 'internal_publish' log level to Diag
...
It was a bit noisy for the Info level
2024-06-06 09:15:17 -05:00
John Colvin
32869e54ec
fix: Fix typos in c# Logs
...
Prefix a few msgs with '$' so vars in curly braces are expanded via
interpolation
2024-06-06 09:15:17 -05:00
John Colvin
ca73220a2e
Add new PubSub cfg to DSQA
...
At least the server address (port) needs to be exposed
2024-06-06 09:15:17 -05:00
John Colvin
9fc3c2618e
cleanup: Remove unnecessary reference to SharedStreams
...
From DataStreamPublisher
2024-06-06 09:15:17 -05:00
John Colvin
e72e0c0a30
fix: Make PubSubServer actually use sparkd url in config
2024-06-06 09:15:17 -05:00
John Colvin
a5bfc75278
cleanup: Fix a few nullability warnings in DSQA
2024-06-06 09:15:17 -05:00
John Colvin
261a184d25
refactor: Replace legacy Crono type w/ dotnet Stopwatch
2024-06-06 09:15:16 -05:00
John Colvin
54e96a06cb
build: Build DSQA on Windows in build_data_stream.py
...
It was only building DataStreamSuite.sln before, which is crossplatform
now so it no longer includes DSQA.
2024-06-06 09:15:16 -05:00
John Colvin
17e60df32b
cleanup: Remove unused file PubSub3Config.cs
2024-06-06 09:15:16 -05:00
John Colvin
c99d5fe24c
Add support for core PubSub config via json
2024-06-06 09:15:16 -05:00
John Colvin
6049826e90
build: Make build_data_stream.py cross platform
...
Previously it only worked on Windows
2024-06-06 09:15:16 -05:00
John Colvin
672149dd89
Add more descriptive logs (via stdout) during initialization
...
The C++ configure/initialize routines were particularly opaque
2024-06-06 09:15:16 -05:00
John Colvin
8c99147f04
build: Build cmake presets in distinct binary dirs
...
It may use more disk space, but we really don't have a choice. CMake
projects with different parameters, preprocessors, source files, etc.
are not designed to share binary dirs. For example, the libspark.so file
that the Spark front-end is supposed to use is not necessarily the same
as the libspark.so file the Api Server is supposed use.
2024-06-06 09:15:16 -05:00
John Colvin
4d4b0b7ae3
build: Give api server distinct shm prefix
2024-06-06 09:15:16 -05:00
John Colvin
1a7955c1b1
build: Remove unnecessary cache var/macro for api server
...
* BUILD_API_SERVER (cmake cache var)
* SPARK_ENABLE_API_SERVER (preprocessor defined conditionally w/ BUILD_API_SERVER)
They were originally added to control whether or not MD Consumer extern
fns were built. They have been made redundant by the more appropriately
named EXPORT_MD_CONSUMER cache var/macro (both have same name now).
2024-06-06 09:15:16 -05:00
John Colvin
f8fc2a1d96
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-06-06 09:15:16 -05:00
John Colvin
9a7b3cb77c
refactor: Reduce code (simplify) in BTS.init
...
Remove the 'args' parameter, since the cmd line can be obtained from
Environment.GetCommandLine anyways
2024-06-06 09:15:16 -05:00
John Colvin
8a3e4edb4d
Dispose connections in SimpleTCPServer.Dispose
2024-06-06 09:15:15 -05:00
John Colvin
e59183bb1e
improvement: Allow app data dir to be overriden w/ env var
...
Historically, this has been hardcoded to ~/sparkdata on Linux, and
%APPDATA%/bts on Windows.
2024-06-06 09:15:15 -05:00
John Colvin
dd4d4e8dc6
fix: Expand path vars in cmake presets at runtime
...
The binaries should be portable to other machines (paths shouldn't
be fixed to the user's home dir at compile time).
2024-06-06 09:15:15 -05:00
John Colvin
f1744450ca
build: Add script to build api server
2024-06-06 09:15:15 -05:00
John Colvin
3a7827a75b
build: Automatically load vs dev prompt for win builds
2024-06-06 09:15:15 -05:00
John Colvin
8d22e91c0d
fix build: Remove references to HighPerformanceTimer
...
An old custom timer class from Edge that we no longer need. We're
replacing it w/ a dotnet builtin timer class called 'Stopwatch'.
2024-06-06 09:15:15 -05:00
John Colvin
c425145fc9
Remove mongo stream from MarketDataPublisher.json
...
It doesn't work unless you have mongodb running (a bit of a burden when you
just want to publish market data)
2024-06-06 09:15:15 -05:00
John Colvin
4855935ae0
improvement: Get PubSubRoutes from config (json)
...
Previously, we were using hardcoded default routes.
2024-06-06 09:15:15 -05:00
John Colvin
65f412ec9f
fix: Fix myLoadAllTypes impl
...
* Fix lowercase typo in hardcoded assemblies (case matters now that we
run on Linux)
* Fix resolution to full path (previous impl used deprecated functions,
and incorrectly appended relative paths)
2024-06-06 09:15:15 -05:00
John Colvin
40681c6093
Add MaybeNullWhen(false) attribute to TryGetFirst result
...
So callers can assume non-null when it returns true (for IEnumerables of
non-null ref types)
2024-06-06 09:15:15 -05:00
John Colvin
ab2d36e523
vscode: Add tasks.json
...
This provides a good base of operations to build/launch our now numerous
projects
2024-06-06 09:15:09 -05:00
John Colvin
b1ab3a66d2
build: Fix old build_sparkd.py script
...
Things have become a lot simpler since it was originally written.
2024-06-05 15:44:36 +00:00
John Colvin
5e7e7e8ef4
test: Add FilterStreamTests
2024-06-05 15:44:35 +00:00
John Colvin
9291d30ae9
build: Add cmake opt to export MDConsumerInterop fns
...
Now that we have all these different builds (sparkd, spark, api server,
data streams) - many of which are cross platform - we need a proper
toggle for this (relying on 'IF WIN32' preprocessors doesn't cut it)
2024-06-05 15:44:35 +00:00
John Colvin
549708fcc2
fix: Use ".dll" file ext when loading assemblies by path
2024-06-05 15:44:35 +00:00
John Colvin
1d5551f301
build: Add cmake preset to build data streams on linux
2024-06-05 15:44:35 +00:00
John Colvin
283db0f9ea
build: Define shm prefix and app data dir in CMakePresets
...
It's more organized this way, with the input variables for each
configuration defined in one place.
2024-06-05 15:44:35 +00:00
John Colvin
9fb04b2db9
cleanup: Remove unused cmake preset 'spark-api-server-base'
...
This was a hidden preset designed for common Linux/Windows config.
Neither Linux nor Windows configs were inheriting it.
2024-06-05 15:44:35 +00:00
John Colvin
ceca96e10a
Add build_data_stream.sh script for Linux
2024-06-05 15:44:35 +00:00
John Colvin
fc48cc64af
fix build (webapp): Add --include=dev arg to npm install
...
The apt repo finally updated npm from 8.X.X to 10.8.0. This broke the
Spark.Admin.WebApp build because the new version doesn't install dev
dependencies by default.
2024-06-05 15:44:35 +00:00
John Colvin
015d846941
feat: Add Pandas(Script)Stream
2024-06-05 15:44:35 +00:00
John Colvin
e39108bbda
fix build (sparkd): Fix typo
...
'git' was appended to a type name. I suspect a keyboard focus conflict
between vs code editor/terminal panes.
2024-06-03 13:46:51 +00:00
John Colvin
6240d89a08
Map PubSubServerConfig json to historic PubSub3Config
2024-06-03 13:46:51 +00:00
John Colvin
c76700e5e5
cleanup: Remove unused PubSubRoute array from DSQA
2024-06-03 13:46:51 +00:00
John Colvin
a8a0e8dea0
cleanup: Remove unused PubSubConfigureForm
2024-06-03 13:46:51 +00:00
John Colvin
d65a2d6ed6
test: Add DataPacketBuilderTests
...
This tests somes facilities used in the new MongoCollectionStream
2024-06-03 13:46:51 +00:00
John Colvin
1824d5f9a4
feat: Add [incremental] MongoCollectionStream
2024-06-03 13:46:51 +00:00
John Colvin
d3eb29087b
refactor: Impl IDictionary<int, IBlueRow> in BlueTable
2024-06-03 13:46:51 +00:00
John Colvin
d6fae238f9
Add IObservable ViewStream wrapper
2024-06-03 13:46:51 +00:00
John Colvin
44b46033e3
cleanup: Remove HighPerformanceTimer
2024-06-03 13:46:51 +00:00
John Colvin
5741ec9ab2
cleanup: Remove unnecessary usings (namespaces)
2024-06-03 13:46:51 +00:00
John Colvin
596975b309
style: Apply modern formatting to Crono
2024-06-03 13:46:51 +00:00
John Colvin
9050318ceb
refactor: Replace HighPerformanceTimer w/ Stopwatch
...
This is needed to build DataStreamSuite on Linux.
'Stopwatch' is a platform independent timer class included with the
System.Runtime library in modern dotnet. 'HighPerformanceTimer' is a BTS
class that predates Stopwatch, and is NOT platform independent as it
relies on Windows kernel32.dll QueryPerformanceCounter/Frequency fns.
2024-06-03 13:46:51 +00:00
John Colvin
7ee6933789
refactor: Add formal config classes for prepublish streams
...
They can be passed to command line via --config <json_file>
2024-06-03 13:46:51 +00:00
John Colvin
306c572b53
improvement: Polish clis in DataStreamSuite
...
Specifically PubSubServer, DataStreamPublisher and DSQA
* Use CommandLineParser (nuget pkg)
* Clean up csproj files a bit while we're at it
2024-06-03 13:46:51 +00:00
John Colvin
63306173b1
refactor: Reorganize NumericComparer, support all types
...
Get rid of redundant UniversalNumericComparer while we're at it
2024-05-25 15:37:33 +00:00
John Colvin
df1b45ca3e
cleanup: Remove leftover legacy files
2024-05-25 15:37:33 +00:00
John Colvin
c31a1f1bf3
cleanup: Switch assert statements to 'constraint model'
...
This gets rid of a few more build warnings in DataStreamSuite
2024-05-25 15:37:33 +00:00
John Colvin
e95997ea17
cleanup: Chip away a few nullability warnings in DataStreamSuite
...
This is a start, but there're still > 700 of them!
2024-05-25 15:37:33 +00:00
John Colvin
12a070fd8d
build: Remove DSQA from DataStreamSuite.sln to its own sln
...
So we can build DataStreamSuite.sln on Linux (DSQA depends on WinForms)
2024-05-25 15:37:33 +00:00
John Colvin
e0459c54fd
build: Fix 'pubsub' -> 'PubSub' typo in csproj ProjectReferences
...
Now all DataStream projects build on Linux (except DSQA, which is a winforms app)
2024-05-25 15:37:33 +00:00
John Colvin
15262a5a95
build: Move winform deps from BlueRegistry.csproj to DSQA
...
So we can build all DataStream projects (except DSQA) on Linux
2024-05-25 15:37:33 +00:00
Taha Afzal
90ec64d25c
deleting old serializers
2024-05-25 15:37:33 +00:00
Taha Afzal
061481419e
Streams can be published and subscribed now
2024-05-25 15:37:33 +00:00
Taha Afzal
8035255868
Cleaned up the cashe held by PublisherCore
2024-05-25 15:37:33 +00:00
Taha Afzal
7feaf869dc
Stream serialization revamp, all tests pass (TestsStream.s)
2024-05-25 15:37:33 +00:00
Taha Afzal
7104e90fc9
Adding tests for stream serialization
2024-05-25 15:37:33 +00:00
Taha Afzal
52c1e500e6
Re-fixing PubSubserver exception caused by null server in internal tags
2024-05-25 15:37:33 +00:00
Taha Afzal
07274f897a
Pubsub stats
2024-05-25 15:37:33 +00:00
Taha Afzal
f626e53415
CPublisherCore, SubscriberCore, PubsubMessageReactor claned
2024-05-25 15:37:33 +00:00
Taha Afzal
5a7b2965be
PubUBState cleaned up and modernized
2024-05-25 15:37:33 +00:00
Taha Afzal
0aab1628bc
removing old handlers from PubsubMessageReactor
2024-05-25 15:37:33 +00:00
Taha Afzal
b9649e1d8e
Clearing up PubSubMessageReactor
2024-05-25 15:37:33 +00:00
Taha Afzal
3bc9bf2207
Starting the server cleanup work
2024-05-25 15:37:33 +00:00
Taha Afzal
888c06262b
PublisherCore cleaned up
2024-05-25 15:37:33 +00:00
Taha Afzal
03e80dabcb
CHanging member names from old style
2024-05-25 15:37:33 +00:00
Taha Afzal
54184d0875
Cleaning up ISubscriberCore to use ne PubSubClientMssage class
2024-05-25 15:37:33 +00:00
Taha Afzal
90bcf5a455
Adding testss for PubSubMessages
2024-05-25 15:37:33 +00:00
Taha Afzal
d32d5ef40c
Cleaning up PubSubMessages, as types messages instead of PubSubMetaData untypes dictionary
2024-05-25 15:37:33 +00:00
Taha Afzal
2e0e0658c6
Fixing merging
2024-05-23 10:34:40 -04:00
Taha Afzal
bbdb50a41e
FIX bridge for Trafix
2024-05-23 10:34:40 -04:00
John Colvin
90705cac83
Integrate theos into Algo Testing Framework
...
(For Laguna)
2024-05-13 14:28:16 +00:00
John Colvin
b91cdd6d91
Expose get/set test secs fn for Algo Testing Framework
...
Laguna needs this. Historically, the test securities were extracted from
coconut md replay files. Eventually, we'll extract them from the new
replay file format, but until then, this gives Laguna a way to manually
set securities for algo tests (I hardcoded 1 ES sec for convenience by
default).
2024-05-13 14:23:31 +00:00
Mohammad Arham
64f2bd7a88
removed quoting algo so can be loaded dynamically
2024-04-04 20:38:15 -04:00
Mohammad Arham
3e32f684e3
removed redundant code
2024-04-03 16:56:31 -04:00
Mohammad Arham
ff73756a55
removed assert if delete order that is completed
2024-04-03 16:55:29 -04:00
Mohammad Arham
1e64811d93
changed error code
2024-04-03 16:54:51 -04:00
John Colvin
2488597cf2
fix build (linux api server): Remove srcs that moved to sparkd
2024-04-02 16:25:13 +00:00
John Colvin
2d8047ba80
build: Tidy up build/publish_spark scripts
...
In preparation for the first deployment of the "development" branch.
2024-04-02 01:47:47 -05:00
John Colvin
3cb602b77e
dev: Remove irrelevant comment from devcontainer.json
...
It was added by accident
2024-04-02 06:10:25 +00:00
John Colvin
51e1005e79
dev: Fix compile-commands-dir in devcontainer.json
...
It should be '${workspaceFolder}/build/clang/debug'
2024-04-02 06:01:14 +00:00
John Colvin
ef7ea64973
dev: Add -y to 'apt install libpcap' in Dockerfile
...
Fixes the docker build
2024-04-02 05:57:03 +00:00
Mohammad Arham
0267c16e5a
Merge branch 'development' of bitbucket.org:bluetradesys/spark into development
2024-04-01 19:02:32 -04:00
Mohammad Arham
ca40e278ff
quoting crash fix and comments
2024-04-01 19:01:27 -04:00
John Colvin
1c5da7ad48
cleanup: Tidy up hdrs included in cpp algo sdk
2024-04-01 10:09:35 -04:00
John Colvin
9bb3d5c569
refactor: Move ChildOrder defs to cpp file
...
So deps can be omitted in header
2024-04-01 10:09:35 -04:00
John Colvin
92ba43bfad
refactor: Move ccapi logger into its own file
2024-04-01 10:09:35 -04:00
John Colvin
ddeb5e59f0
fix: Add missing exchs to risk webapp
2024-04-01 10:09:35 -04:00
John Colvin
6b0b3e31cc
cleanup: Move nested Trade class into its own file
...
Cut down on dep clutter
2024-04-01 10:09:35 -04:00
John Colvin
3f6c904ccc
cleanup: Get rid of redundant SecurityKey def
...
Make bts::Security an alias for bts::md::Security instead
2024-04-01 10:09:35 -04:00
John Colvin
d433919f1b
refactor: Move OrderBuilder defs to cpp file
...
So impl deps don't leak into the sdk through headers
2024-04-01 10:09:35 -04:00
John Colvin
75da9af39d
improvement: Add fmt impl for SecurityKey
2024-04-01 10:09:34 -04:00
John Colvin
22eff44926
cleanup: Tidy up Book.h
2024-04-01 10:09:34 -04:00
John Colvin
cd6a052d0c
cleanup: Tidy up IAlgoOrder, add fmt impl for ChildState
...
Part of a larger effort to polish the sdk for laguna
2024-04-01 10:09:34 -04:00
John Colvin
3b6cf0b187
cleanup: Remove unnecessary includes
2024-04-01 10:09:34 -04:00
John Colvin
c170dd7a9e
refactor: Include ostream in EnumMacros.h
...
So it doesn't need to be explicitly included to support ENUM_CLASS_DEF
2024-04-01 10:09:34 -04:00
John Colvin
154775bc70
refactor: Move misplaced code from libspark to sparkd
...
This will reduce the dependency load on libspark and the c++ algo sdk.
This has been on the backburner for a while; we're doing it now so we
can deliver a clean sdk to Laguna.
Migrating the following code:
* general server-side md utils (MarketDataGateway, etc.)
* emumba dependent code, including md impl for:
- deribit
* ccapi dependent code, including md impl for
- binance
- binance_us
- binance_usds_futures
- ftx
- coinbase
- okx
- deribit
* md recording
Note: I first began this migration to eliminate the c++ algo sdk's
wependency on emumba. There seemed to be a conflict related to ssl
versions (the build in the sdk docker would fail with unresolved
external symbols for OPENSSL macros)
2024-04-01 10:09:34 -04:00
John Colvin
7f936f3ba9
fix: Inline defs in hdr file
2024-04-01 10:09:24 -04:00
John Colvin
9b30a947a8
fix build: Add a few includes, suppress some werrors
...
Not sure how this slipped through the cracks, but I'm guessing the build
broke when we upgraded the cpp compilers (to clang 17 and gcc 13).
* Include <cstdint> in a few places
* Suppress -Wstringop-overflow in sparkd-gcc-release build
* Change const char * param to explicit std::string for proper type
deduction in call to 'std::make_tuple'. For some reason, the gcc build
was failing with an array-bounds werror (changing the arg fixed it).
2024-04-01 10:09:24 -04:00
John Colvin
2ee58d8f99
dev: Add devcontainer.json (for linux)
2024-04-01 10:09:24 -04:00
John Colvin
0537b3e9c7
cleanup: Remove mongodb.js file that was added by accident
2024-04-01 10:09:24 -04:00
John Colvin
8ae940bcbc
fix: Change "init" call to "initAsync" in spark_api_server main
...
WebsocketDataSync.init was refactored to initAsync
2024-04-01 10:09:23 -04:00
Mohammad Arham
966ccb5f2c
fixed order entry
2024-04-01 07:48:36 -04:00
Mohammad Arham
fae9c3e59e
quantity connected, fills reported, limit set as default
2024-04-01 07:46:36 -04:00
Mohammad Arham
cb1dfb257d
updated defaults to have max_order_msgs_per_window
2024-03-29 16:00:36 -04:00
Mohammad Arham
76c3fe86c2
quote algo quantity hooked
2024-03-29 14:42:15 -04:00
Mohammad Arham
7e3b1de70f
bug fix
2024-03-29 00:38:33 -04:00
Mohammad Arham
2a07e3cf3c
custom orders working on api
2024-03-29 00:37:04 -04:00
Mohammad Arham
6d0249825d
quotingalgo working
2024-03-29 00:35:49 -04:00
Mohammad Arham
63810e3966
build fix
2024-03-26 18:07:48 -04:00
Mohammad Arham
4c013a8886
reorganise code
2024-03-26 18:07:01 -04:00
Mohammad Arham
9509818978
set theos
2024-03-26 18:06:07 -04:00
Mohammad Arham
4fdf3b8b60
just cleaner code
2024-03-26 02:10:06 -04:00
Mohammad Arham
ee9a58486d
cleaner code same logic
2024-03-25 02:52:51 -04:00
Mohammad Arham
75d6939c8b
added new rules for onix decode ticks
2024-03-25 01:48:22 -04:00
Mohammad Arham
fb1697b571
spelling fix
2024-03-24 23:17:02 -04:00
Mohammad Arham
4080d606d8
fixed get trades
2024-03-24 23:16:38 -04:00
Mohammad Arham
7655fd47dd
fixed spelling
2024-03-24 23:14:11 -04:00
Taha Afzal
d029b0fce7
SimExecution works with GLBX now
2024-03-18 23:54:19 -04:00
John Colvin
60df5b2a68
refactor: Move OrderDataHelper to spark_api.csproj
...
So it can be called from the websocket api server to parse
CustomOrderDefinitions
2024-03-13 12:45:17 -05:00
Taha Afzal
bada5dc961
Fixing SimExecution for CME
2024-03-06 14:11:02 -05:00
Taha Afzal
4510e120ab
enabling some streams like max, that were dependent on AddCOlumns (thta John fixed in the last commit)
2024-02-12 13:21:28 -05:00
Taha Afzal
da2af06ee6
Merging
2024-02-08 15:48:51 -05: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
Taha Afzal
8c1342230b
RowDiff added
2024-02-08 14:11:10 -05: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
Taha Afzal
8dd2775092
Added volatility to trade bars
2024-02-04 23:22:52 -05: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
Taha Afzal
8966b73ac9
Merge branch 'development' of bitbucket.org:bluetradesys/spark into development
2024-02-04 18:04:06 -05:00
Taha Afzal
ddb2a91763
Adding TradBar stream
2024-02-04 18:03:51 -05: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
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