File tree 4 files changed +72
-27
lines changed
4 files changed +72
-27
lines changed Original file line number Diff line number Diff line change 60
60
"@fal-ai/client" : " 1.2.0" ,
61
61
"@types/uuid" : " 10.0.0" ,
62
62
"ai" : " 3.4.33" ,
63
+ "@tavily/core" : " ^0.0.2" ,
63
64
"anthropic-vertex-ai" : " 1.0.2" ,
64
65
"fastembed" : " 1.14.1" ,
65
66
"fastestsmallesttextencoderdecoder" : " 1.0.22" ,
Original file line number Diff line number Diff line change @@ -130,6 +130,36 @@ export class OrderService {
130
130
} ) ;
131
131
}
132
132
133
+ async cancelAllOrders ( exchange : string , symbol ?: string ) : Promise < boolean > {
134
+ await this . checkRateLimit ( ) ;
135
+
136
+ return this . retryOperation ( async ( ) => {
137
+ try {
138
+ const url = symbol ? `${ this . baseUrl } /orders/${ exchange } /${ symbol } ` : `${ this . baseUrl } /orders/${ exchange } ` ;
139
+ await axios . delete ( url , {
140
+ headers : this . getHeaders ( )
141
+ } ) ;
142
+ return true ;
143
+ } catch ( error ) {
144
+ if ( error instanceof AxiosError ) {
145
+ switch ( error . response ?. status ) {
146
+ case 401 :
147
+ throw new Error ( 'Unauthorized: Invalid API key' ) ;
148
+ case 403 :
149
+ throw new Error ( 'Forbidden: Insufficient permissions' ) ;
150
+ case 429 :
151
+ throw new Error ( 'Rate limit exceeded. Please try again later.' ) ;
152
+ case 500 :
153
+ throw new Error ( 'Internal server error. Please try again later.' ) ;
154
+ default :
155
+ throw new Error ( `Failed to cancel all orders: ${ error . message } ` ) ;
156
+ }
157
+ }
158
+ throw error ;
159
+ }
160
+ } ) ;
161
+ }
162
+
133
163
async getOrder ( orderId : string ) : Promise < OrderParams > {
134
164
return this . retryOperation ( async ( ) => {
135
165
try {
Original file line number Diff line number Diff line change 1
1
export interface HummingbotConfig {
2
- instance : {
3
- url : string ;
4
- wsUrl : string ;
5
- apiKey : string ;
6
- instanceId : string ;
7
- } ;
2
+ apiUrl : string ;
3
+ wsUrl : string ;
4
+ apiKey : string ;
5
+ strategy : StrategyConfig ;
8
6
}
9
7
10
8
export interface MarketData {
11
- exchange : string ;
12
9
symbol : string ;
13
- timestamp : number ;
14
- bid : number ;
15
- ask : number ;
16
10
lastPrice : number ;
17
11
volume24h : number ;
12
+ price : number ;
13
+ timestamp : number ;
18
14
}
19
15
20
16
export interface OrderParams {
21
- exchange : string ;
22
17
symbol : string ;
23
18
side : 'buy' | 'sell' ;
24
- type : 'limit' | 'market' ;
25
19
amount : number ;
26
- price ?: number ;
20
+ price : number ;
21
+ }
22
+
23
+ export interface StrategyConfig {
24
+ symbol : string ;
25
+ spread : number ;
26
+ orderSize : number ;
27
+ minProfitMargin : number ;
28
+ }
29
+
30
+ export interface PortfolioBalance {
31
+ asset : string ;
32
+ free : number ;
33
+ total : number ;
34
+ }
35
+
36
+ export interface HummingbotInstance {
37
+ id : string ;
38
+ status : 'running' | 'stopped' ;
39
+ strategy : string ;
40
+ config : HummingbotConfig ;
27
41
}
28
42
29
43
export interface MarketMakingConfig {
30
44
exchange : string ;
31
45
tradingPair : string ;
32
46
orderAmount : number ;
33
- orderLevels ? : number ;
34
- maxOrderAge ? : number ;
35
- inventorySkewEnabled ? : boolean ;
36
- inventoryTargetBase ? : number ;
37
- inventoryRangeMultiplier ? : number ;
47
+ orderLevels : number ;
48
+ maxOrderAge : number ;
49
+ inventorySkewEnabled : boolean ;
50
+ inventoryTargetBase : number ;
51
+ inventoryRangeMultiplier : number ;
38
52
bidSpread : number ;
39
53
askSpread : number ;
40
- minSpread ? : number ;
41
- maxSpread ? : number ;
42
- priceSource ? : string ;
43
- minimumSpreadEnabled ? : boolean ;
44
- pingPongEnabled ? : boolean ;
45
- orderRefreshTime ? : number ;
54
+ minSpread : number ;
55
+ maxSpread : number ;
56
+ priceSource : string ;
57
+ minimumSpreadEnabled : boolean ;
58
+ pingPongEnabled : boolean ;
59
+ orderRefreshTime : number ;
46
60
}
You can’t perform that action at this time.
0 commit comments