Commit Graph

1223 Commits

Author SHA1 Message Date
c9s
a31e2743ee fix kline log space 2021-12-27 00:54:10 +08:00
c9s
f7c39290a0 call tradeCollector process to check trades 2021-12-27 00:51:57 +08:00
c9s
770c1067fc bbgo: fix order store RemoveCancelled 2021-12-26 15:47:39 +08:00
c9s
05a0745d08 fix InitExchange for publicOnly session 2021-12-26 15:29:42 +08:00
c9s
ba8ebfe3a7 refactor and add doc comment for InitExchangeSession 2021-12-25 23:42:29 +08:00
c9s
307d0b8e1f bbgo: add passphrase field to session struct 2021-12-25 23:28:00 +08:00
c9s
57bc65a729 avoid calling EmitConnect and EmitStart outside of the kline feeding goroutine
this causes 2 goroutine running in the same time hence cause the
concurrent map read / write

should fix #399, #401
2021-12-25 21:05:50 +08:00
c9s
49e516b80e backtest: allocate public exchange (with empty key secret) for backtesting 2021-12-24 00:24:19 +08:00
c9s
a3e3e1d177 bbgo: do not sync trades when running backtest 2021-12-23 23:20:35 +08:00
c9s
f5bbe29ac6 cmd: fix debug flag loading and add debug log to cache function 2021-12-23 23:02:07 +08:00
c9s
cfd68fdd1d all: change trade id to uint64 2021-12-23 17:49:18 +08:00
TonyQ
d7ac645253 exchange: update maskkey handling 2021-12-23 01:18:36 +08:00
austin362667
f9cf71cef3 indicator: add kline close volatility
indicator: add kline close volatility
2021-12-19 14:20:09 +08:00
TonyQ
c0b9cc0f0b exchange: make ftx kline event more reliable 2021-12-15 11:23:07 +08:00
Yo-An Lin
6c6eb252cc Merge pull request #363 from tony1223/feature/355-ftx-backtest 2021-12-14 16:09:16 +08:00
TonyQ
8eb3eede82 fix backtest (with review) 2021-12-14 16:02:54 +08:00
TonyQ
51e23b6a0c Merge branch 'main' of github.com:c9s/bbgo into feature/302-record-assets-review 2021-12-14 10:39:51 +08:00
TonyQ
4eb5a099ae account: add nav_history_details and account_service for #302 2021-12-14 08:09:18 +08:00
austin362667
36c6d39612 bbgo: add session Futures & types: add FuturesExchange 2021-12-13 23:16:58 +08:00
austin362667
1703fff8b2 types: refactor Position and related files 2021-12-11 19:16:16 +08:00
c9s
d52edce40b fix markets info cache 2021-12-08 17:26:43 +08:00
c9s
08a264d4eb add futures exchange check in the markets cache 2021-12-07 21:29:40 +08:00
c9s
ca3f438288 show symbol name in the error message 2021-12-07 14:35:00 +08:00
c9s
aeeecba8dc support different time format for backtesting 2021-12-06 01:50:50 +08:00
c9s
0472b7f21e avoid recording trades in backtest by default
introducing a RecordTrades option
2021-12-06 01:42:53 +08:00
c9s
f692ef2c31 realign account fields 2021-12-05 12:23:27 +08:00
c9s
df683bdf56 use position to calculate the pnl 2021-12-05 02:17:15 +08:00
TonyQ
30c14a6828 fix #261 provide default config for notification setting 2021-12-04 02:37:21 +00:00
c9s
9a589bf71c show broadcast enabled 2021-11-25 18:49:29 +08:00
c9s
513a799ced fix ewma calculation 2021-11-22 02:14:44 +08:00
c9s
20f0e8dbd5 preallocate kline window with capacity 2021-11-22 01:17:08 +08:00
c9s
540722e430 adjust ewma truncate size 2021-11-22 01:17:08 +08:00
c9s
7787edffa0 refactor grid strategy state loading/saving 2021-11-05 00:22:44 +08:00
c9s
d763a3c415 bbgo: add debug ewma and sma 2021-10-18 17:26:03 +08:00
c9s
30b82390b7 bbgo: add EMA and SMA debug var 2021-10-18 15:23:22 +08:00
c9s
c36bbd6c35 bbgo: show pnl in the slack fields 2021-10-18 08:45:27 +08:00
c9s
15cfd735a0 bbgo: add doc comment for ExchangeSessionSubscriber 2021-10-17 22:23:21 +08:00
c9s
39b7a956e0 Add market field to position 2021-10-17 22:23:09 +08:00
c9s
30c7c34826 bbgo: fix kline backward query for backtest 2021-10-16 13:49:00 +08:00
c9s
4bcea5a388 bbgo: add AllFilled method on OrderStore 2021-10-16 13:39:18 +08:00
c9s
f5f96b585a apply broadcast option from config file 2021-10-15 16:10:39 +08:00
c9s
2b0793ee49 bbgo: add telegram config 2021-10-15 16:10:09 +08:00
c9s
47e4847034 fix kline query endtime 2021-10-14 14:21:38 +08:00
c9s
b3661f5d32 bbgo: improve profit stat PlainText format 2021-10-14 10:16:11 +08:00
c9s
7d416c3467 bbgo: fix profit json tag 2021-10-14 10:14:11 +08:00
c9s
7874471828 bbgo: improve pnlEmojiMargin function 2021-10-14 10:13:21 +08:00
c9s
c8554f09a0 bbgo: refactor the pnl functions 2021-10-14 10:07:27 +08:00
c9s
2116efc42e bbgo: fix profit title 2021-10-14 08:59:45 +08:00
c9s
49a78c0c88 bbgo: fix profit stat title 2021-10-14 08:58:19 +08:00
c9s
c12ff57e57 bbgo: improve profit stats plaintext format 2021-10-14 08:55:55 +08:00
c9s
77f11f4515 bbgo: add ticker for collecting trades 2021-10-14 07:56:40 +08:00
c9s
b154e3baea bbgo: add pnl emoji with margin 2021-10-14 07:48:32 +08:00
c9s
7e8897f1d0 bbgo: fix profit field check condition 2021-10-14 07:33:34 +08:00
c9s
5c3f305060 bbgo: implement SlackAttachment interface for profitstats 2021-10-14 01:27:58 +08:00
c9s
d3fa0a964b bbgo: add slack attachment support for profit 2021-10-14 01:27:50 +08:00
c9s
b6b2e33cc0 extend profit stats fields for quote,base currency and symbol 2021-10-14 01:26:36 +08:00
c9s
5039a43413 bbgo: move pnl formating to the bbgo package 2021-10-14 01:26:11 +08:00
c9s
e1e6d1de12 bbgo: add net profit margin field to profit stats 2021-10-14 01:26:04 +08:00
c9s
44a0b10240 bbgo: load last price from 1m interval kline only 2021-10-14 00:37:40 +08:00
c9s
37ac907c0f profitstats: add accumulated volume 2021-10-12 11:24:28 +08:00
c9s
d9dc7e31df extend more fields 2021-10-12 11:24:24 +08:00
c9s
45645d0a3d use the profit struct to pass profit info 2021-10-08 19:16:40 +08:00
c9s
fac14a8c7f profitstats: add netProfit field 2021-10-08 15:09:55 +08:00
c9s
aadb1ed389 remove MakerExchange from the core profit stats field 2021-10-08 15:00:53 +08:00
c9s
d058125f78 bbgo: refactor profit stats 2021-10-08 14:57:44 +08:00
c9s
9e1d28f3b3 do not remove order if it's partially filled 2021-10-08 14:17:47 +08:00
c9s
ded740107f bbgo: refactor TradeCollector bind stream for background and foreground 2021-10-08 13:24:07 +08:00
c9s
8ada9eef02 bbgo: optimize AdjustQuantityByMaxAmount, early return 2021-10-08 12:09:05 +08:00
c9s
7fb4d2f78d return positionChanged for Process method 2021-10-05 21:44:39 +08:00
c9s
5dd2f568fe add doc comment for trade collector 2021-10-05 21:39:10 +08:00
c9s
45c875fe7c bbgo: improve trade collect process 2021-10-05 21:30:06 +08:00
c9s
8d01c97240 fix cyclic import issue 2021-08-26 11:46:02 +08:00
c9s
1f94ae1c19 bbgo: move moving average settings struct into bbgo 2021-08-26 11:32:39 +08:00
c9s
3ab4a570fb bbgo: limit max kline slice 2021-06-28 14:33:32 +08:00
c9s
06a1f018c2 bbgo: push to the buffer first 2021-06-26 20:26:47 +08:00
c9s
7d853a9c74 bbgo: add emit position update 2021-06-26 20:26:47 +08:00
c9s
ecd2d9ea68 bbgo: improve trade collector callbacks 2021-06-26 20:26:47 +08:00
c9s
db4fbbc30c bbgo: add trade collector 2021-06-26 20:26:47 +08:00
c9s
65629a77f4 bbgo: add two new position constructor 2021-06-26 20:26:47 +08:00
c9s
3d12a7df59 support: add sensitivity settings 2021-06-16 13:14:10 +08:00
c9s
e276ddd38a bbgo: add shared local time zone 2021-06-16 13:04:23 +08:00
c9s
e23c459697 bbgo: move orderbook to the session level so that we can access it eaiser 2021-06-16 13:04:23 +08:00
c9s
2614b25de3 types: move fiat currency list to types 2021-06-16 13:04:23 +08:00
c9s
e5db780be8 notify trades and update position 2021-06-01 01:39:22 +08:00
c9s
c84d59734c clear all trades before running backtests 2021-05-30 15:25:00 +08:00
c9s
3aa36b5989 refactor and fix backtest for user data stream and market data stream 2021-05-30 15:08:11 +08:00
c9s
38fd5422ab xmaker: use uncovered position 2021-05-30 14:46:48 +08:00
c9s
8d31435ded add trade store 2021-05-29 00:25:23 +08:00
c9s
5f18b89dfa if publicOnly is set, we should not connect user data stream 2021-05-28 19:01:55 +08:00
c9s
f190b1e66a fix market data stream initialization 2021-05-28 03:17:46 +08:00
c9s
7d62a7634b set market data stream to public 2021-05-27 15:11:44 +08:00
c9s
b7c87c7744 core: move market data subscription to market data stream 2021-05-27 15:09:18 +08:00
c9s
45f1a13870 rename Stream field to UserDataStream and add MarketDataStream 2021-05-27 14:45:06 +08:00
c9s
2381df5009 add okex to the exchange factory 2021-05-27 00:35:51 +08:00
zenix
3d2a27fc10 Fix: nil pointer exception in indicator creation, add stoch util func 2021-05-26 00:20:31 +00:00
c9s
9c70e36e1b save average cost with feeInQuote in the ApproximateAverageCost 2021-05-23 01:05:11 +08:00
c9s
d2e299a68a improve position comment 2021-05-23 00:42:57 +08:00
c9s
9efb45b133 reduce side book copy 2021-05-23 00:42:44 +08:00
c9s
9b9643e1f9 improve order cancellation mechanisim 2021-05-22 17:44:20 +08:00
c9s
289227e5f3 add exists method for active book 2021-05-22 17:44:07 +08:00
c9s
0a908e5dda fix position test for net profit 2021-05-22 17:43:53 +08:00
c9s
cca3284140 separate net profit and profit 2021-05-22 17:17:37 +08:00
c9s
8acada76a9 replace sliceorderbook with orderbook interface 2021-05-22 16:32:29 +08:00
c9s
fd710d533f implement tree copy method 2021-05-22 12:18:08 +08:00
c9s
56b2c8845b fix preorder, postorder and inorder 2021-05-22 11:36:58 +08:00
c9s
4fde442722 Add position Reset function 2021-05-21 00:08:04 +08:00
c9s
d737ab678f support removing filled orders from the order store 2021-05-21 00:07:43 +08:00
c9s
422e85e3a3 twap: fix stop price check 2021-05-18 13:53:51 +08:00
c9s
896518f5c2 check if restQuantity is less than 0 2021-05-18 13:44:57 +08:00
c9s
21f7fa7846 twap: fix tick spread calculation 2021-05-18 13:38:23 +08:00
c9s
f6f1226bd0 integrate bollband indicator into xmaker 2021-05-17 20:04:13 +08:00
c9s
e7c718ee15 assign fee rate to position 2021-05-16 17:58:51 +08:00
c9s
187a9c795b use exchange fee rate as a reference for profit 2021-05-16 17:50:08 +08:00
c9s
d0e4a5e65c move addTrade lock section 2021-05-16 17:05:12 +08:00
c9s
e636a5008d replace Exchange field type with ExchangeName 2021-05-16 17:02:23 +08:00
c9s
0a016cba75 split maker fee and taker fee 2021-05-16 16:50:26 +08:00
c9s
a4381a54a3 add fee rate field 2021-05-16 15:03:36 +08:00
c9s
c9cdf31df1 add pnl emoji 2021-05-16 01:16:03 +08:00
c9s
942eaac659 improve message formatting 2021-05-16 00:45:08 +08:00
c9s
1f449eca7f implement SlackAttachment interface on Position 2021-05-15 23:50:03 +08:00
c9s
c85456b8e8 lock position for fetching base quantity 2021-05-15 10:06:48 +08:00
c9s
531799bdfb use mutex composition since we may lock from out side 2021-05-15 10:05:39 +08:00
c9s
8071559f99 position: use pointer receiver 2021-05-15 10:02:04 +08:00
c9s
a636cdaec9 add mutex to Position since position could be changed from 2 goroutine 2021-05-15 10:01:41 +08:00
c9s
aa340f0db3 always check restQuantity 2021-05-15 10:00:32 +08:00
c9s
236df245a2 adjust quantity bases on the balances 2021-05-15 09:46:07 +08:00
c9s
f9cb414832 twap: add update-interval option 2021-05-15 09:29:44 +08:00
c9s
ae256ce9d3 add more quantity adjustment fix 2021-05-15 09:23:41 +08:00
c9s
356a8b77ac adjust updateLimiter to 3 seconds one time 2021-05-15 09:20:46 +08:00
c9s
445feb016a support price ticks option 2021-05-14 15:35:11 +08:00
c9s
bb34b1002a improve order execution graceful shutdown 2021-05-14 14:53:26 +08:00
c9s
dc040bb82b improving logs 2021-05-14 14:53:26 +08:00
c9s
f69cbe9c31 add basic TwapExecution 2021-05-14 14:53:26 +08:00
c9s
c8b97629e0 add NumOfOrders method on active book 2021-05-14 14:53:26 +08:00
c9s
a49cf531b5 fix cross exchange order executor for the basic risk control 2021-05-12 19:02:09 +08:00
c9s
98e0390c1d improve slack notification 2021-05-12 12:43:03 +08:00
c9s
807c049d63 refactor notifiers and add liquidity field to the trade 2021-05-12 12:37:48 +08:00
c9s
85e1b6b1c7 move field assignment 2021-05-12 12:05:54 +08:00
c9s
df11112d64 refactor exchange session initialization 2021-05-12 12:05:54 +08:00
c9s
8d63647104 assign session.Withdrawal 2021-05-12 12:05:54 +08:00
c9s
29b7326f19 add withdrawal property to the exchange session 2021-05-12 12:05:54 +08:00
zenix
ba091dccf6 Fix: binance's cancel update is sent through New status with 0 quantity 2021-05-11 06:57:09 +00:00
c9s
95d58e9385 adjust hedge quantity according to the hedge account balances 2021-05-10 20:13:23 +08:00
c9s
ddab6083d4 xmaker: support quantity scale 2021-05-10 02:52:41 +08:00
c9s
ce63641d70 print otp auth guide when session is loaded 2021-05-10 01:38:19 +08:00
c9s
3f8f5616d7 add more order info the local order book printing 2021-05-09 20:03:16 +08:00
c9s
e06310da26 print unhandled order status 2021-05-09 19:44:43 +08:00
c9s
d01abffde3 add todo for the backtest trades 2021-05-08 01:09:06 +08:00
c9s
6bbd66a4f9 split environment start and init 2021-05-08 00:45:24 +08:00
c9s
494a270c54 insert trades to db only when backtest service is nil 2021-05-07 01:50:38 +08:00
c9s
584a4c2ef8 move fiat currency definition out 2021-05-07 01:30:09 +08:00
c9s
1ad8b0b641 remove unused SourceDir func 2021-05-04 01:06:20 +08:00
c9s
50db944053 fix initSymbol stages 2021-05-02 23:58:34 +08:00
c9s
2230c56e56 fix comment warning 2021-05-02 23:48:53 +08:00
c9s
2ef13293e9 fix IDE warnings 2021-05-02 23:47:57 +08:00
c9s
5ec0566888 add more injection checks 2021-05-02 23:46:16 +08:00
c9s
822a010932 add moving average configuration to the schedule strategy 2021-05-02 20:58:32 +08:00
c9s
e29d9af9c8 fix persistence config unmarshalling 2021-05-02 18:16:34 +08:00
c9s
9f77236999 fix and improve position accessor 2021-04-28 19:32:49 +08:00
c9s
70a53ed286 make config compatible with key 'strategies' 2021-04-28 17:58:50 +08:00
c9s
2ec4617694 add SyncService check 2021-04-09 12:44:30 +08:00
c9s
34fe915a9f fix sync issue for pnl command 2021-04-09 12:43:13 +08:00
Larry850806
dbf5d27f30 Add a validator interface to validate strategy before run 2021-04-02 10:12:55 +08:00
c9s
6c8babfb27 allow public session 2021-03-22 17:40:17 +08:00
c9s
088b22f338 support bbgo-no-cache option 2021-03-22 17:32:21 +08:00
c9s
814a77ea39 xmaker: improve balance checking 2021-03-21 12:55:33 +08:00
ycdesu
c8447663db refactor: use fixedpoint to store fee 2021-03-19 08:49:24 +08:00
ycdesu
83ae943a4f ftx: calculate commission 2021-03-18 23:58:28 +08:00
c9s
a95c3b94a0 core: set default store ID 2021-03-18 17:20:07 +08:00
Yo-An Lin
40b376802e Merge pull request #168 from c9s/feature/mark-trade-strategy 2021-03-18 10:31:59 +08:00
c9s
85b6cb81a2 make local active orderbook json marshallable 2021-03-18 01:15:06 +08:00
Yo-An Lin
7ecb17dbe2 Merge pull request #163 from c9s/feature/mark-trade-strategy 2021-03-16 22:34:09 +08:00
c9s
714d61a829 add grid restore behavior 2021-03-16 20:04:06 +08:00
Yo-An Lin
f5b65e795e Merge pull request #160 from c9s/feature/grid-options 2021-03-16 12:59:14 +08:00
c9s
40fded70b2 reformat scale.go 2021-03-16 02:14:10 +08:00
c9s
2f7c7d344b move emitStart method call into the stream Connect method 2021-03-16 01:32:27 +08:00
c9s
7951c38edc skip connection if there is no subscription 2021-03-16 01:31:56 +08:00
ycdesu
c08899f7fb ftx: add ftx to supported exchange 2021-03-15 20:40:04 +08:00
c9s
c3996aee2b add Backup method to the local active order book 2021-03-15 18:25:36 +08:00
c9s
e311a182fa add onStart callbacks 2021-03-15 18:04:03 +08:00
c9s
9f7af3ce82 assign SubAccount name to the new exchange session 2021-03-15 17:51:17 +08:00
c9s
e8ccc5eabf pass SubAccount field to the factory 2021-03-15 10:23:00 +08:00
c9s
2eda012f43 add SubAccount field to the exchange session config 2021-03-15 10:13:41 +08:00
c9s
4b49fda463 refactor sync service 2021-03-14 11:18:22 +08:00
ben
40eadfeaca add yaml tag for mapping basic risk control order executor. 2021-03-01 13:44:58 +08:00
Yo-An Lin
592a8d87ae Merge pull request #137 from c9s/feature/scale
feature: add exp scale and log scale formula
2021-02-28 16:13:38 +08:00
c9s
b71ea867c5 ignore sync if sync service is nil 2021-02-28 15:05:49 +08:00
c9s
da79920ca9 rename scale struct name to PriceVolumeScale 2021-02-28 14:51:24 +08:00
c9s
83111c9eb9 test exponential scale with reverse range 2021-02-28 12:12:03 +08:00
c9s
99f236d2e0 integrate quantity scale into support strategy and grid strategy 2021-02-28 11:57:25 +08:00
c9s
bf87fbbf55 add LinearScale 2021-02-28 02:20:47 +08:00
c9s
8572df2cb3 add link to TestQuadraticScale 2021-02-28 02:07:48 +08:00
c9s
83af52c53b add QuadraticScale 2021-02-28 02:06:33 +08:00
c9s
52395fd460 add log scale graph link 2021-02-28 01:55:35 +08:00
c9s
fbb8837c5c add exp scale and log scale formula 2021-02-28 01:53:45 +08:00
c9s
5a7cf05701 integrate reward service into the sync service 2021-02-23 16:39:48 +08:00
c9s
73cb80ee96 improve logging 2021-02-22 17:06:43 +08:00
c9s
eaad414706 adjust max api call rate limiting 2021-02-22 15:01:05 +08:00
c9s
724dad70bb remove trade sync from environ init 2021-02-22 14:14:39 +08:00
c9s
84775652fe remove defer wrapper func 2021-02-22 13:49:26 +08:00
c9s
63ebbc0e73 fix frontend sync status checking 2021-02-21 19:36:03 +08:00
c9s
3629a1f5a2 pre-save syncing var for return 2021-02-21 18:54:48 +08:00
c9s
a8516edb98 add Get method to the persistence service facade 2021-02-21 16:55:45 +08:00
c9s
21b092037e refactor notification configuration 2021-02-21 16:52:47 +08:00
c9s
fa4e813729 resolve cyclic imports 2021-02-21 01:01:39 +08:00
c9s
6845db6dd3 refactor database configure method 2021-02-21 00:58:34 +08:00
c9s
12ed5a1efe move persistence service into the service package 2021-02-21 00:45:56 +08:00
c9s
be00aae81e move trade configuration to the trader struct method 2021-02-20 12:23:31 +08:00
c9s
7684099f01 add /api/environment/syncing api 2021-02-20 11:54:48 +08:00
c9s
4ce6e85624 add sync status to the environment 2021-02-20 11:29:33 +08:00
c9s
dd13b9a8bf remove start time query condition for trade sync since starting from trade id = 1 works 2021-02-19 14:18:50 +08:00
c9s
44fa74a4c9 refactor session sync 2021-02-19 10:42:24 +08:00
c9s
390c9b1a4b move Sync method into the sync service 2021-02-19 10:26:13 +08:00
c9s
eaa8c647b5 refactor session sync 2021-02-18 22:40:46 +08:00
c9s
b2bcd3528c use sqlx for testing connection 2021-02-17 17:35:54 +08:00
c9s
a1cb3859c3 fix db driver setup 2021-02-17 14:57:29 +08:00
c9s
3867fdde91 add stringer interface to Position 2021-02-16 16:40:11 +08:00
c9s
e3d3eacb78 fix trade service injection 2021-02-16 16:30:01 +08:00
c9s
8ae4cab550 inject TradeService field if we found it 2021-02-16 16:14:49 +08:00
c9s
c75eb6b5ba pull out Persistence injection to the common injection 2021-02-16 16:13:52 +08:00
c9s
5c1630f000 refactor strategy executor 2021-02-16 16:12:00 +08:00
c9s
fc4419b49b refactor injection 2021-02-16 15:58:21 +08:00
c9s
1c2646b0af add Test_injectField 2021-02-16 15:49:57 +08:00
c9s
c219dc7be0 add test code for testing migration scripts 2021-02-15 21:04:44 +08:00
c9s
f8378957ee add more checks for bollgrid
related to #93
2021-02-13 16:03:31 +08:00
c9s
ffa001fc29 fix quantity format 2021-02-11 00:21:56 +08:00
c9s
57435419b4 add marketData label 2021-02-10 22:40:36 +08:00
ycchen
6655e16889 minor tweaks 2021-02-08 22:41:44 +01:00
ycchen
61c98432f2 feat: tickers for asset calculation 2021-02-08 22:41:44 +01:00
c9s
99b56003eb clean up legacy db connection handling with the new database service 2021-02-06 11:22:04 +08:00
c9s
276b6c1e48 drop the legacy upgradeDB 2021-02-06 11:22:04 +08:00
c9s
de51eb29e4 refactor db stuff with database service 2021-02-06 11:22:04 +08:00
c9s
d8d1249293 fix env var prefix by using os.Getenv directly 2021-02-04 15:14:54 +08:00
c9s
c35cef5b09 implement config saving api 2021-02-03 17:27:18 +08:00
c9s
f7a4f7d415 add strategies endpoint and strategy review page 2021-02-03 15:00:01 +08:00
c9s
705edc38c0 implement config yaml dummper 2021-02-03 09:58:31 +08:00
c9s
098a966813 add test case for config.Map method 2021-02-03 09:34:53 +08:00
c9s
1a2c3556a8 add ID method to the TestStrategy 2021-02-03 09:09:19 +08:00
c9s
7904c6f4d0 add ID() to Strategy interface 2021-02-03 09:08:05 +08:00
c9s
8aa96c4546 integrate strateg adding api 2021-02-03 02:26:41 +08:00
c9s
578451bb51 add setup flag to run server 2021-02-02 18:17:58 +08:00
c9s
17d5e301dc refine setup steps 2021-02-02 17:26:35 +08:00
c9s
73762d9888 support exchange session test from the setup wizard 2021-02-02 11:44:07 +08:00
c9s
a60aeb4771 pull out .Subscribe from trader.Run 2021-02-01 20:44:15 +08:00
c9s
ddcc8ae4ee move ExchangeOrderExecutor into exchange session 2021-02-01 20:44:15 +08:00
c9s
de8e717a41 refactor session initialization function 2021-02-01 20:44:15 +08:00
c9s
fbbe304dfb add trades query api 2021-01-29 18:48:00 +08:00
c9s
cc8133a90e print order query sql 2021-01-29 18:34:03 +08:00
c9s
32645f228b add order query api 2021-01-29 13:15:44 +08:00
c9s
be750b94df fix layout and margin 2021-01-29 12:55:11 +08:00
c9s
8031c6066e mount static files to routes 2021-01-29 11:19:37 +08:00
c9s
78890834b5 support symbol segment 2021-01-28 18:51:35 +08:00
c9s
9ee49ea3f1 Add TradingVolumeBar 2021-01-26 18:10:08 +08:00
c9s
95129e94d7 add lastPrcieUpdatedAt timestamp for checking last price cache 2021-01-26 17:23:40 +08:00
c9s
df17c4b1b6 add trading volume query api 2021-01-26 17:21:18 +08:00
c9s
9717fddfbd add total asset pie chart 2021-01-25 16:56:02 +08:00
c9s
e47357d1ed add assets api and price loading 2021-01-25 15:32:17 +08:00
c9s
09b3046feb lower case fields are not exported to json 2021-01-25 14:32:46 +08:00
c9s
7310700540 add account and account balances 2021-01-24 20:18:04 +08:00
c9s
eab915abc7 rename loaded-symbols to just symbols 2021-01-24 20:14:43 +08:00
c9s
3a52a4bff8 add and set AddOrderUpdate flag for session order store 2021-01-24 20:13:05 +08:00
c9s
42b66d6898 add OrderStore accessor on ExchangeSession 2021-01-24 19:08:12 +08:00
c9s
447057086c add Orders method on OrderStore 2021-01-24 19:07:32 +08:00
c9s
eccc2c6e0f implement session config api and server 2021-01-24 18:42:36 +08:00
c9s
51e5deee47 add frontend files 2021-01-24 14:14:25 +08:00
c9s
1892d03326 make session trades map thread safe 2021-01-24 14:14:25 +08:00
c9s
1c80d30ce2 add TradeSlice with sync 2021-01-24 14:14:25 +08:00
c9s
84b6982033 add order store to exchange session 2021-01-24 14:14:25 +08:00
c9s
d0fc161ae7 fix define build config checking 2021-01-23 01:06:56 +08:00
c9s
2da5fa2e92 pre-define build config 2021-01-23 01:03:56 +08:00
c9s
5eaa8f0778 add IsWrapperBinary flag and fix persistence error 2021-01-21 12:27:21 +08:00
c9s
45876968d9 let build config and legacy imports co-exists 2021-01-21 12:08:06 +08:00
c9s
5329ef8f25 refactor build config 2021-01-21 12:06:03 +08:00
c9s
ad4f339b27 fix test case name 2021-01-21 00:54:59 +08:00
c9s
38bac10050 consider fee calculation 2021-01-21 00:49:01 +08:00
c9s
bfc8e511d0 simplify average cost calculation 2021-01-20 23:46:22 +08:00
c9s
16aa070120 assign base/quote currency to the position struct 2021-01-20 23:08:57 +08:00
c9s
8a08c406c3 check symbol for the position update 2021-01-20 17:37:23 +08:00
c9s
48dd697ce3 handling short-to-long and long-to-short position 2021-01-20 17:35:58 +08:00
c9s
c2a27b031e init position with loaded symbols 2021-01-20 16:30:44 +08:00
c9s
0051dbc78a add Position accessor 2021-01-20 16:29:15 +08:00
c9s
079fcf08e3 initialize position map 2021-01-20 16:28:27 +08:00
c9s
09d712416f add json struct tags 2021-01-20 16:15:34 +08:00
c9s
617f5119fd test trade profit calculation 2021-01-20 16:14:02 +08:00
c9s
169af63846 add more position tests 2021-01-20 16:10:20 +08:00
c9s
34148948ab add position and its tests 2021-01-20 16:08:14 +08:00
c9s
d3f6841a27 improve sync command for margin trades and orders 2021-01-20 01:46:17 +08:00
c9s
f8a9610222 pass isolated margin symbol 2021-01-19 23:31:04 +08:00
c9s
d4774f5f0e add IsolatedMargin option 2021-01-19 23:31:04 +08:00
c9s
310943d010 add isolated margin symbol option 2021-01-19 23:31:04 +08:00
c9s
e8fec434b5 cast exchange instance to margin exchange interface 2021-01-19 23:31:04 +08:00
c9s
3199c63d62 add margin mode 2021-01-19 23:31:04 +08:00
c9s
4002ec80d6 add public only field to the session config struct 2021-01-19 23:31:04 +08:00
c9s
d04e1e7816 refactory sync command and upgrade db automatically 2021-01-14 15:10:11 +08:00
c9s
2699c32b38 add rockhopper 2021-01-13 23:53:36 +08:00
c9s
653eba73c5 improve session error message 2021-01-09 19:47:21 +08:00
c9s
4a1af6f362 add check for PersistenceServiceFacade 2021-01-09 19:44:45 +08:00
c9s
93d71b5300 bbgo: session log error 2021-01-09 19:40:31 +08:00
c9s
92ab7e125a improve RegisterStrategy method to register strategy between cross and single 2020-12-31 17:14:47 +08:00
c9s
25eab8e95f adjust log 2020-12-29 18:32:51 +08:00
c9s
f485c1ba7f fix grid strategy order placing 2020-12-29 18:18:32 +08:00
c9s
275aa9494a support canceling orders on max 2020-12-29 16:00:03 +08:00
c9s
9223b2ba47 move FormatOrder to ExchangeSession since it depends on Market 2020-12-21 13:47:40 +08:00
c9s
3eae58322a add trade update callbacks and order update callbacks to order executor 2020-12-21 13:40:23 +08:00
c9s
728bf5fc81 bbgo: move some logs to debug level 2020-12-15 14:14:44 +08:00
c9s
0222c33330 fix kline tail method 2020-12-08 10:26:20 +08:00
c9s
9eaf69388c add fixedpoint json marshaling 2020-12-07 23:03:06 +08:00
c9s
4addf65f64 support memory persistence 2020-12-07 12:03:56 +08:00
c9s
2d98336fb6 implement Persistent API for strategy 2020-12-07 11:44:41 +08:00
c9s
341f735bc3 configure ConfigurePersistence if it's defined 2020-12-07 11:44:41 +08:00
c9s
a01f83ab15 add persistence config and tests 2020-12-07 11:44:41 +08:00
c9s
b843388483 only query subscribed kline intervals 2020-12-07 11:44:23 +08:00
c9s
62a541fb27 rename preload to loadBuildConfig 2020-12-07 11:44:23 +08:00
c9s
c5d002a0b0 fix market data kline registration 2020-12-05 13:32:41 +08:00
c9s
900f822559 improve and fix ewma calculation 2020-12-05 13:32:41 +08:00
c9s
ef03c0cf20 separate Run and CrossRun
so that we mount one strategy as cross strategy or single exchange strategy
2020-12-03 09:31:40 +08:00
c9s
4f399ebb9f fix stop price formating 2020-12-03 09:25:47 +08:00
c9s
d38b16fb3e fix cross exchange strategy subscription 2020-12-02 22:44:41 +08:00
c9s
d226ec2e01 change field names to lower case so that we can use shorter name for the accessors 2020-12-02 22:21:13 +08:00
c9s
e57b9f235b add quota 2020-11-23 16:47:36 +08:00
c9s
914d5cdc94 try to keep all orders from order store 2020-11-17 15:53:46 +08:00
c9s
ed6d6342e7 fix account currency translation 2020-11-17 14:24:26 +08:00
c9s
cc3da5b678 pass order id for order store exists 2020-11-17 08:53:22 +08:00
c9s
f4512f031c improve cross exchange strategy mounting behavior and add fixedpoint atomic ops 2020-11-17 08:19:22 +08:00
c9s
ded970f5a4 imporve CrossExchange subscription handling 2020-11-15 13:27:33 +08:00
c9s
94aaaf21b0 improve wrapper binary invocation 2020-11-15 13:23:26 +08:00
c9s
cd283f2c28 remove unused logger field 2020-11-12 17:30:21 +08:00
c9s
8cc1c589a1 fix waitgroup counting 2020-11-12 14:59:47 +08:00
c9s
fc9409673f add graceful shutdown 2020-11-12 14:50:21 +08:00
c9s
35a5b61f60 add local active orderbook callback files 2020-11-11 23:19:16 +08:00
c9s
0264baa922 refactor and improve bollgrid 2020-11-11 23:18:53 +08:00
c9s
04f6da3cb8 add traditional grid strategy 2020-11-10 19:06:20 +08:00
c9s
4ab402a188 clean up legacy code 2020-11-10 16:56:30 +08:00
c9s
23c19c5968 use fixedpoint for balances 2020-11-10 14:19:33 +08:00
c9s
6c2aef31a3 improve backtest logging 2020-11-09 16:47:29 +08:00
c9s
e7cc79f3cf replace errors.Errorf with fmt.Errorf 2020-11-09 16:34:35 +08:00
c9s
1e129e4c86 collect error object instead of logging 2020-11-09 15:29:40 +08:00
c9s
8414f406bf drop the legacy order executor 2020-11-09 15:02:12 +08:00
c9s
4a2a542222 refactor basic risk controller 2020-11-09 14:56:54 +08:00
c9s
f69c87b3a8 fix fee calculation and add account balance checking 2020-11-08 21:52:44 +08:00
c9s
4b0bab31fb Merge branch 'feature/backtest' into main 2020-11-07 20:34:55 +08:00
c9s
641784e1b1 calculate pnl after the backtest 2020-11-07 20:34:34 +08:00
c9s
a4a9067c6a integrate matching engine with backtest exchange 2020-11-07 19:57:36 +08:00
c9s
0d8fa08171 add book Update method 2020-11-07 15:07:06 +08:00
c9s
b13a2deec5 emit klines and setup account balances 2020-11-07 03:18:05 +08:00
c9s
22a214328d implement backtest command, stream and add backtest config 2020-11-07 02:57:50 +08:00
c9s
8823a39fc2 support backtesting kline verification 2020-11-07 00:49:17 +08:00
c9s
555fe57341 implement kline sync function from command 2020-11-06 21:40:48 +08:00
c9s
7fab2e24de improve order persistence and support order data sync 2020-11-05 11:14:14 +08:00
c9s
eb67fc0f8f make mysql-url optional for run command 2020-11-05 11:14:14 +08:00
c9s
8388f443a9 move active order book to the bbgo package 2020-11-05 11:14:14 +08:00
c9s
8e0b5d11a7 add max grid config and fix max price formatting 2020-10-31 20:38:20 +08:00
c9s
14abe3fb7e pull out active order book to the types package 2020-10-31 20:38:20 +08:00
c9s
2397acd45f fix type casting and assertion by passing pointer 2020-10-31 18:35:48 +08:00
c9s
0f8e9f6df7 add doc comment to Notifiability 2020-10-31 18:35:48 +08:00
c9s
eb05620f99 use Notifiability directly from environment 2020-10-31 18:35:48 +08:00
c9s
49ff9c4dd6 drop legacy trade reporter 2020-10-31 18:35:48 +08:00
c9s
c4d7476212 add submit order routing 2020-10-31 18:35:48 +08:00
c9s
ec9b5230aa refactor trade report and move trade reporter to the environment layer 2020-10-31 18:35:48 +08:00
c9s
8867ceb951 initialize Notifiability for exchange session 2020-10-31 18:35:48 +08:00
c9s
dc547aa818 fix BOLL map allocation 2020-10-31 18:29:58 +08:00
c9s
c3961024cf implement grid strategy update orders method 2020-10-31 18:29:58 +08:00
c9s
e60127090b add GetBOLL access to standard indicator sets 2020-10-31 18:29:58 +08:00
c9s
d49b2be543 add bollinger indicator 2020-10-29 17:51:20 +08:00
c9s
4afabd92ed clean up code 2020-10-29 17:05:01 +08:00
c9s
5f45d18ae2 fix struct composition 2020-10-29 13:08:33 +08:00
c9s
19b600bb35 simplify strategy registration api 2020-10-29 07:54:59 +08:00
c9s
c71f013916 let SMA indicator and EWMA indicator use IntervalWindow type 2020-10-29 07:51:23 +08:00
c9s
2f8bffeaca add strict injection check fo pointer only objects 2020-10-29 07:49:06 +08:00
c9s
33257c591e refactor swing strategy with types IntervalWindow 2020-10-29 07:44:22 +08:00
c9s
6d8ec7894e refactor standard indicator set with store 2020-10-29 07:40:02 +08:00
c9s
67446670ac finalize swing strategy and fix trade reporter issue 2020-10-28 17:48:16 +08:00
c9s
b22e0370b3 drop legacy OrderProcessor and remove slack debug 2020-10-28 17:48:16 +08:00
c9s
468864302e fix submit order quantity formatting 2020-10-28 17:48:16 +08:00
c9s
2680ad5072 refactor environment, market data store, injection and add swing strategy 2020-10-28 17:48:16 +08:00
c9s
7d7d2c2fc7 assign standard indicator set to the session 2020-10-28 11:15:50 +08:00
c9s
e2df24f31c support standard indicatorset 2020-10-28 09:43:19 +08:00
c9s
50693ae845 implement ewma and sma 2020-10-28 09:13:57 +08:00
c9s
388346b284 move injectStrategyField to a single file 2020-10-27 20:42:48 +08:00
c9s
e1c2f7cc3d improve notifier signatures and fix slack Notify method 2020-10-27 20:13:10 +08:00
c9s
7905ba09d4 pull out fillStrategyNotifiability 2020-10-27 19:37:11 +08:00
c9s
ccc381143d support pointer type filling 2020-10-27 19:33:11 +08:00
c9s
b3eaf832af Add pricealert strategy for demonstrating notification 2020-10-27 13:54:39 +08:00
c9s
ab43de3efd clean up comment for base order executor 2020-10-27 10:00:41 +08:00
c9s
ef598c3a0f assign base order executor descendingly 2020-10-27 09:58:21 +08:00
c9s
8453e95300 configure channel routers 2020-10-27 09:38:29 +08:00
c9s
42f947506c add route methods on Notifiability 2020-10-27 09:24:59 +08:00
c9s
c315b79bd7 add notification config 2020-10-27 08:48:47 +08:00
c9s
284a0676f7 remove unused confg package 2020-10-27 08:19:16 +08:00
c9s
955479486a add symbol channel router and object channel router for notification 2020-10-27 08:19:16 +08:00
c9s
1d8e0bff5a drop legacy NewDefaultEnvironment method 2020-10-27 08:19:16 +08:00
c9s
0fd9e8b95a reset price field when market order is used 2020-10-26 22:08:16 +08:00
c9s
38c87bfecc drop config dir 2020-10-26 21:46:38 +08:00
c9s
a1eeb55778 refactor and clean up bbgo config 2020-10-26 21:45:02 +08:00
c9s
c324a791f6 refactor and configure risk control order executor 2020-10-26 21:36:47 +08:00
c9s
59aa5c5ee2 implement RiskControlOrderExecutor 2020-10-26 18:28:34 +08:00
c9s
4e7c1a327b pull out order formatter 2020-10-26 18:17:18 +08:00
c9s
a4b6a5f923 load order executor config 2020-10-26 17:57:28 +08:00
c9s
8274f6e97c reformat OrderProcessor code 2020-10-26 16:45:09 +08:00
c9s
c9fa565c24 remove the legacy submit order method 2020-10-26 16:44:05 +08:00
c9s
359b3c56b4 move files 2020-10-26 16:15:30 +08:00
c9s
19f259111d improve config loading by adding unmarshal yaml method 2020-10-26 15:33:25 +08:00
c9s
cd666fdf9e pull out db parameter from the constructor 2020-10-26 15:06:39 +08:00
c9s
332ca7ffe8 make trade sync optional 2020-10-26 13:48:59 +08:00
c9s
931c646fde configure notifier and make slack notification optional 2020-10-26 13:40:43 +08:00
c9s
145264aae4 cancel orders and re-submit maker orders 2020-10-26 00:26:17 +08:00
c9s
de11ef10f5 return created order objects from SubmitOrders method 2020-10-25 19:22:22 +08:00
c9s
308427416a Add more exchange order features
- use uuid for client order id
- add stop limit and stop market order types
- add order convert functions
- improve submit orders
2020-10-25 19:22:22 +08:00
c9s
cd28fb8771 unmarshal imports into config 2020-10-23 14:49:54 +08:00
c9s
6b0f2b80d7 add multiple spec support 2020-10-23 00:21:03 +08:00
c9s
aea6a7c03d integrate AverageCostPnLReporter 2020-10-22 15:57:50 +08:00
c9s
897d882c35 update Notifiability interface 2020-10-22 14:45:15 +08:00
c9s
ea3e9e7d05 add per-session-based trade reporter 2020-10-22 10:54:03 +08:00
c9s
678e4ef4ab add trade reporter 2020-10-22 10:47:54 +08:00
c9s
a714af739a implement TradeReporter 2020-10-21 19:52:55 +08:00
c9s
b1a9a66dba assign account and stream when allocating session object 2020-10-21 17:42:37 +08:00
c9s
1f71fa623c add channel argument to the notify method 2020-10-21 17:10:47 +08:00
c9s
58265d14f9 move cmdutil package 2020-10-21 15:58:58 +08:00
c9s
4ee10de40f add LoadedCrossExchangeStrategies loader api 2020-10-20 14:21:46 +08:00
c9s
2fbf19455e implement strategy yaml loader 2020-10-20 13:52:25 +08:00
c9s
a08aebaa17 bbgo: add SetTradeScanTime method 2020-10-20 13:11:04 +08:00
c9s
3b3df77ec3 clean up the legacy context struct 2020-10-20 12:24:30 +08:00
c9s
752fdf5c80 document WithCache function 2020-10-20 12:22:18 +08:00
c9s
2bbee6671a make the first arg of WithCache as a key var 2020-10-20 12:18:29 +08:00
c9s
40c697275d query market config with cache 2020-10-20 12:11:44 +08:00
c9s
180bfff558 loadedSymbols is not used in the init method 2020-10-20 11:49:18 +08:00
c9s
f6c1ed67e6 add CacheDir function 2020-10-20 11:48:44 +08:00
c9s
f62f3b8a02 define HomeDir and SourceDir helper functions 2020-10-20 11:46:44 +08:00
c9s
fc687f3174 max: implement kline event parser for websocket 2020-10-19 22:46:34 +08:00
c9s
d68564de28 improve logging 2020-10-19 22:26:43 +08:00
c9s
822e4c2703 receive trade in value instead of pointer 2020-10-19 22:06:43 +08:00
c9s
292dd2492a add comment for loadedSymbols 2020-10-19 22:02:05 +08:00
c9s
a4b872fc8b clean up init and connect phase 2020-10-19 22:00:44 +08:00
c9s
6d6e79eab3 fix session initialization issue 2020-10-19 21:58:50 +08:00
c9s
c1590786e8 integrate orderbook updates to market data store 2020-10-18 20:44:12 +08:00
c9s
75115774f6 rename kline store to market data store back 2020-10-18 20:44:12 +08:00
c9s
f9940a9c2f rename market data store to kline store 2020-10-18 12:32:43 +08:00
c9s
f826bb014a make markets field private 2020-10-18 12:30:13 +08:00
c9s
dab264a4ad add more accessors to exchange session, so that we can make it as an interface 2020-10-18 12:29:38 +08:00
c9s
168cb355fc add accessor to MarketDataStore 2020-10-18 12:27:11 +08:00
c9s
7d7828a556 move commented code 2020-10-18 12:25:08 +08:00
c9s
d2ba9cc4c3 move backtest related component to backtest package 2020-10-18 12:24:21 +08:00
c9s
028aef9402 move marketdata store to store package 2020-10-18 12:23:00 +08:00
c9s
90515855eb move MovingAverageIndicator 2020-10-18 11:37:01 +08:00
c9s
a1c027471e remove more empty files 2020-10-18 11:35:40 +08:00
c9s
d011bf275e move stock_test file and testdata 2020-10-18 11:34:36 +08:00
c9s
cbeb809b22 delete empty pnl file 2020-10-18 11:33:58 +08:00
c9s
c878de10bf delete empty market.go file 2020-10-18 11:33:43 +08:00
c9s
0d9c0bd51b move cost distribution to the accounting package 2020-10-18 11:33:13 +08:00
c9s
985e02c57a delete empty file 2020-10-18 11:31:44 +08:00
c9s
73e17730d7 move account type into types package 2020-10-18 11:30:37 +08:00
c9s
c224eb7af7 add kline to the market data store 2020-10-18 00:06:08 +08:00
c9s
9ebccc72ba add exchange session constructor 2020-10-17 23:51:44 +08:00
c9s
25b4b22077 let strategy attach could be chained 2020-10-16 13:52:18 +08:00
c9s
4335cca0de make it possible to attach multiple strategies in one call 2020-10-16 10:26:45 +08:00
c9s
27b582e948 move report struct 2020-10-16 10:21:37 +08:00
c9s
a6b99f6828 rename ProfitAndLossCalculator to AverageCostCalculator 2020-10-16 10:16:42 +08:00
c9s
ee86a71ebb split files 2020-10-16 10:14:36 +08:00
c9s
98192ae91f move Cmd to the strategy package 2020-10-16 10:09:42 +08:00
c9s
7482fa52d6 add error check and logger 2020-10-15 23:38:00 +08:00
c9s
300609e3db fix subscription initialization 2020-10-15 22:36:22 +08:00
c9s
113cc8ee48 query markets and assign into the exchange session 2020-10-15 21:04:02 +08:00
c9s
f454136449 add exechange order executor and pull out Notifiability 2020-10-14 10:06:15 +08:00
c9s
a91f851ac7 pass types.SubmitOrder by value 2020-10-13 18:08:02 +08:00
c9s
ec23266cc2 implement buyandhold strategy to test the api design 2020-10-13 16:17:07 +08:00
c9s
d1b618850d add context parameter to the strategy method 2020-10-13 14:50:59 +08:00
c9s
fe3ae14fc8 clean up 2020-10-13 11:23:22 +08:00
c9s
26f97b43e8 drop legacy backtest trader 2020-10-12 22:51:13 +08:00
c9s
4c20c9f4ff replace LoadAccount with literal constructor 2020-10-12 22:49:27 +08:00
c9s
6398f049d0 bind market data store and query avg price before we start 2020-10-12 22:46:06 +08:00
c9s
bace7ac3a3 add environment connect integration tests 2020-10-12 17:33:02 +08:00
c9s
64c9960882 use types.Exchange 2020-10-12 07:38:38 +08:00
c9s
3d5507a053 move files into pkg 2020-10-11 16:46:15 +08:00