@gbozee/ultimate 0.0.2-99 → 0.0.2-next.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/frontend-index.d.ts +1124 -24
- package/dist/frontend-index.js +1694 -79
- package/dist/index.cjs +6679 -5157
- package/dist/index.d.ts +1907 -308
- package/dist/index.js +6680 -5162
- package/dist/mcp-client.cjs +6827 -529
- package/dist/mcp-client.js +6836 -529
- package/dist/mcp-server.cjs +14595 -6432
- package/dist/mcp-server.js +14597 -6438
- package/package.json +17 -5
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,21 @@ import PocketBase from 'pocketbase';
|
|
|
5
5
|
import { RecordModel as PocketBaseRecordModel } from 'pocketbase';
|
|
6
6
|
import { SocksProxyAgent } from 'socks-proxy-agent';
|
|
7
7
|
|
|
8
|
+
export interface GetEntriesParams {
|
|
9
|
+
kind: "long" | "short";
|
|
10
|
+
distribution: "arithmetic" | "geometric" | "normal" | "exponential" | "inverse-exponential";
|
|
11
|
+
margin_range: [
|
|
12
|
+
number,
|
|
13
|
+
number
|
|
14
|
+
];
|
|
15
|
+
risk_reward: number;
|
|
16
|
+
price_places?: string;
|
|
17
|
+
distribution_params?: {
|
|
18
|
+
curveFactor?: number;
|
|
19
|
+
stdDevFactor?: number;
|
|
20
|
+
lambda?: number;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
8
23
|
export type RecordModel = PocketBaseRecordModel;
|
|
9
24
|
export interface BaseSystemFields {
|
|
10
25
|
id: string;
|
|
@@ -71,6 +86,32 @@ export interface ScheduledTrade extends BaseSystemFields {
|
|
|
71
86
|
sell_ratio?: number;
|
|
72
87
|
threshold_qty?: number;
|
|
73
88
|
pause_tp?: boolean;
|
|
89
|
+
stop_percent?: number;
|
|
90
|
+
kelly?: {
|
|
91
|
+
use_kelly?: boolean;
|
|
92
|
+
kelly_confidence_factor?: number;
|
|
93
|
+
kelly_minimum_risk?: number;
|
|
94
|
+
kelly_prediction_model?: "exponential" | "normal" | "uniform";
|
|
95
|
+
};
|
|
96
|
+
distribution?: GetEntriesParams["distribution"];
|
|
97
|
+
distribution_params?: {
|
|
98
|
+
curveFactor?: number;
|
|
99
|
+
stdDevFactor?: number;
|
|
100
|
+
lambda?: number;
|
|
101
|
+
};
|
|
102
|
+
settings?: {
|
|
103
|
+
gap_trading?: {
|
|
104
|
+
entry_risk?: number;
|
|
105
|
+
hedge_stop_ratio?: number;
|
|
106
|
+
};
|
|
107
|
+
bad_hedge?: {
|
|
108
|
+
hedges_distribution?: GetEntriesParams["distribution"];
|
|
109
|
+
hedges_ratio?: number;
|
|
110
|
+
opposite_trade_distribution?: GetEntriesParams["distribution"];
|
|
111
|
+
opposite_trade_ratio?: number;
|
|
112
|
+
stop_loss?: number;
|
|
113
|
+
};
|
|
114
|
+
};
|
|
74
115
|
}
|
|
75
116
|
export interface AccountStrategy extends BaseSystemFields {
|
|
76
117
|
account: string;
|
|
@@ -83,16 +124,13 @@ export interface AccountStrategy extends BaseSystemFields {
|
|
|
83
124
|
running?: boolean;
|
|
84
125
|
max_reward_factor?: number;
|
|
85
126
|
follow?: boolean;
|
|
127
|
+
risk_reward?: number;
|
|
128
|
+
dynamic?: boolean;
|
|
86
129
|
}
|
|
87
130
|
interface Proxy$1 extends BaseSystemFields {
|
|
88
131
|
ip_address?: string;
|
|
89
132
|
type?: "http" | "socks5";
|
|
90
133
|
}
|
|
91
|
-
export interface TradeBlockTracking extends BaseSystemFields {
|
|
92
|
-
account?: string;
|
|
93
|
-
symbol?: string;
|
|
94
|
-
running?: boolean;
|
|
95
|
-
}
|
|
96
134
|
export interface PositionsView {
|
|
97
135
|
id: string;
|
|
98
136
|
symbol?: any;
|
|
@@ -122,6 +160,26 @@ export interface PositionsView {
|
|
|
122
160
|
follow?: boolean | 1 | 0;
|
|
123
161
|
current_price?: number;
|
|
124
162
|
usd_balance?: number;
|
|
163
|
+
tp?: {
|
|
164
|
+
price: number;
|
|
165
|
+
quantity: number;
|
|
166
|
+
};
|
|
167
|
+
next_risk?: number;
|
|
168
|
+
proxy?: string;
|
|
169
|
+
expand?: {
|
|
170
|
+
p_account?: ExchangeAccount;
|
|
171
|
+
b_config?: ScheduledTrade;
|
|
172
|
+
proxy?: Proxy$1;
|
|
173
|
+
account_strategy?: AccountStrategy;
|
|
174
|
+
compound_instance?: CompoundInstance;
|
|
175
|
+
support?: SupportTable;
|
|
176
|
+
symbol_config: SymbolConfig;
|
|
177
|
+
resistance?: SupportTable;
|
|
178
|
+
anchor?: Omit<PositionsView, "expand">;
|
|
179
|
+
record?: any;
|
|
180
|
+
};
|
|
181
|
+
pnl?: number;
|
|
182
|
+
support_price?: number;
|
|
125
183
|
}
|
|
126
184
|
export interface BullishMarket extends RecordModel {
|
|
127
185
|
id: string;
|
|
@@ -133,26 +191,54 @@ export interface WindingDownMarket extends RecordModel {
|
|
|
133
191
|
symbol: string;
|
|
134
192
|
risk_reward: number;
|
|
135
193
|
}
|
|
194
|
+
export interface Compounder extends BaseSystemFields {
|
|
195
|
+
risk?: number;
|
|
196
|
+
profit_percent?: number;
|
|
197
|
+
owner?: string;
|
|
198
|
+
completed?: boolean;
|
|
199
|
+
start_balance?: number;
|
|
200
|
+
starting_risk?: number;
|
|
201
|
+
fee_rate?: number;
|
|
202
|
+
}
|
|
203
|
+
export interface CompoundInstance extends BaseSystemFields {
|
|
204
|
+
ref?: string;
|
|
205
|
+
position?: string;
|
|
206
|
+
risk?: number;
|
|
207
|
+
hedged?: boolean;
|
|
208
|
+
loss?: number;
|
|
209
|
+
expand?: {
|
|
210
|
+
ref?: Compounder;
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
export interface SupportTable extends BaseSystemFields {
|
|
214
|
+
symbol?: string;
|
|
215
|
+
price?: number;
|
|
216
|
+
counter?: number;
|
|
217
|
+
last_updated?: string;
|
|
218
|
+
kind?: "long" | "short";
|
|
219
|
+
}
|
|
136
220
|
export type GlobalConfig = {
|
|
137
|
-
profit_percent
|
|
221
|
+
profit_percent?: number;
|
|
138
222
|
symbol: string;
|
|
139
|
-
profit
|
|
140
|
-
risk
|
|
141
|
-
stop_percent
|
|
223
|
+
profit?: number;
|
|
224
|
+
risk?: number;
|
|
225
|
+
stop_percent?: number;
|
|
142
226
|
kind: "long" | "short";
|
|
143
|
-
reduce_percent
|
|
227
|
+
reduce_percent?: number;
|
|
144
228
|
support: number;
|
|
145
229
|
resistance: number;
|
|
146
230
|
price_places: string;
|
|
147
231
|
decimal_places: string;
|
|
148
|
-
min_size
|
|
149
|
-
accounts
|
|
232
|
+
min_size?: number;
|
|
233
|
+
accounts?: {
|
|
150
234
|
owner: string;
|
|
151
235
|
exchange?: string;
|
|
152
236
|
}[];
|
|
153
|
-
risk_reward
|
|
154
|
-
reverse_factor
|
|
237
|
+
risk_reward?: number;
|
|
238
|
+
reverse_factor?: number;
|
|
155
239
|
leverage?: number;
|
|
240
|
+
max_quantity?: number;
|
|
241
|
+
fee_percent?: number;
|
|
156
242
|
};
|
|
157
243
|
interface Position$1 {
|
|
158
244
|
id: number;
|
|
@@ -169,6 +255,7 @@ interface Position$1 {
|
|
|
169
255
|
target_pnl?: number;
|
|
170
256
|
reduce_ratio?: number;
|
|
171
257
|
use_full?: boolean;
|
|
258
|
+
liquidation?: number;
|
|
172
259
|
}
|
|
173
260
|
export interface Account {
|
|
174
261
|
id: number | string;
|
|
@@ -218,40 +305,86 @@ interface Order$1 {
|
|
|
218
305
|
stop: number;
|
|
219
306
|
triggerPrice?: number;
|
|
220
307
|
}
|
|
308
|
+
export interface CandlestickAnalysisResult {
|
|
309
|
+
candlesticks: {
|
|
310
|
+
[key: string]: any[];
|
|
311
|
+
};
|
|
312
|
+
resistance: {
|
|
313
|
+
[key: string]: number;
|
|
314
|
+
};
|
|
315
|
+
support: {
|
|
316
|
+
[key: string]: number;
|
|
317
|
+
};
|
|
318
|
+
current_price: number;
|
|
319
|
+
minimum_weekly: number;
|
|
320
|
+
}
|
|
221
321
|
declare abstract class BaseExchange {
|
|
222
322
|
client: any;
|
|
323
|
+
name: string;
|
|
324
|
+
getCredentials: (payload: {
|
|
325
|
+
account: string;
|
|
326
|
+
}) => Promise<{
|
|
327
|
+
api_key: string;
|
|
328
|
+
api_secret: string;
|
|
329
|
+
email: string;
|
|
330
|
+
}>;
|
|
331
|
+
proxyAgent?: any;
|
|
332
|
+
remoteActionBaseUrl?: string;
|
|
223
333
|
constructor(client: any);
|
|
224
|
-
abstract
|
|
334
|
+
protected abstract getPositionInfo(symbol: string): Promise<any>;
|
|
335
|
+
abstract cancelAllOrders(symbol: string, payload: {
|
|
336
|
+
type?: "limit" | "stop" | "tp";
|
|
337
|
+
side?: "buy" | "sell";
|
|
338
|
+
kind?: "long" | "short";
|
|
339
|
+
}): Promise<any>;
|
|
340
|
+
protected abstract getCurrentPrice(symbol: string): Promise<any>;
|
|
341
|
+
protected abstract getExchangeInfo(options: {
|
|
342
|
+
price_places?: string;
|
|
343
|
+
decimal_places?: string;
|
|
344
|
+
account: {
|
|
345
|
+
owner: string;
|
|
346
|
+
exchange: string;
|
|
347
|
+
};
|
|
348
|
+
symbol: string;
|
|
349
|
+
}): Promise<any>;
|
|
350
|
+
protected abstract _createLimitPurchaseOrders(payload: {
|
|
351
|
+
symbol: string;
|
|
352
|
+
orders: any[];
|
|
353
|
+
price_places?: string;
|
|
354
|
+
decimal_places?: string;
|
|
355
|
+
}): Promise<any>;
|
|
356
|
+
rawCreateLimitPurchaseOrders(payload: {
|
|
225
357
|
symbol: string;
|
|
226
358
|
orders: Order$1[];
|
|
227
359
|
price_places?: string;
|
|
228
360
|
decimal_places?: string;
|
|
229
361
|
}): Promise<any>;
|
|
230
|
-
|
|
362
|
+
placeStopOrders(payload: {
|
|
231
363
|
symbol: string;
|
|
232
364
|
quantity: number;
|
|
233
365
|
kind: "long" | "short";
|
|
234
366
|
stop: number;
|
|
235
367
|
price_places?: string;
|
|
236
368
|
decimal_places?: string;
|
|
369
|
+
hedge?: boolean;
|
|
237
370
|
place?: boolean;
|
|
238
371
|
}): Promise<any>;
|
|
239
|
-
|
|
240
|
-
orders:
|
|
372
|
+
bulkPlaceLimitOrders(payload: {
|
|
373
|
+
orders: Order$1[];
|
|
241
374
|
kind: "long" | "short";
|
|
242
375
|
decimal_places?: string;
|
|
243
376
|
price_places?: string;
|
|
244
377
|
symbol: string;
|
|
245
378
|
place?: boolean;
|
|
246
|
-
}): Promise<any>;
|
|
247
|
-
|
|
379
|
+
}): Promise<any[]>;
|
|
380
|
+
get_current_price(symbol: string): Promise<any>;
|
|
248
381
|
abstract analyzeCharts(payload: {
|
|
249
382
|
symbol: string;
|
|
250
383
|
chartType: any;
|
|
251
|
-
|
|
384
|
+
limit: number;
|
|
252
385
|
raw?: boolean;
|
|
253
386
|
}): Promise<any>;
|
|
254
|
-
|
|
387
|
+
getExchangeAccountInfo(options: {
|
|
255
388
|
price_places?: string;
|
|
256
389
|
decimal_places?: string;
|
|
257
390
|
account: {
|
|
@@ -260,11 +393,27 @@ declare abstract class BaseExchange {
|
|
|
260
393
|
};
|
|
261
394
|
symbol: string;
|
|
262
395
|
}): Promise<any>;
|
|
263
|
-
abstract
|
|
396
|
+
protected abstract _cancelOrders(payload: {
|
|
397
|
+
symbol: string;
|
|
398
|
+
orders: Array<{
|
|
399
|
+
orderId?: any;
|
|
400
|
+
clientOrderId?: any;
|
|
401
|
+
}>;
|
|
402
|
+
}): Promise<any>;
|
|
403
|
+
cancelOrders(payload: {
|
|
264
404
|
symbol: string;
|
|
265
405
|
orders: number[];
|
|
266
406
|
}): Promise<any>;
|
|
267
|
-
abstract
|
|
407
|
+
protected abstract _placeTpOrder(payload: {
|
|
408
|
+
symbol: string;
|
|
409
|
+
tp: number;
|
|
410
|
+
kind: "long" | "short";
|
|
411
|
+
cancel?: boolean;
|
|
412
|
+
quantity?: number;
|
|
413
|
+
price_places?: string;
|
|
414
|
+
decimal_places?: string;
|
|
415
|
+
}): Promise<any>;
|
|
416
|
+
placeTpOrder(payload: {
|
|
268
417
|
symbol: string;
|
|
269
418
|
take_profit: number;
|
|
270
419
|
kind: "long" | "short";
|
|
@@ -273,7 +422,18 @@ declare abstract class BaseExchange {
|
|
|
273
422
|
price_places?: string;
|
|
274
423
|
decimal_places?: string;
|
|
275
424
|
}): Promise<any>;
|
|
276
|
-
abstract
|
|
425
|
+
protected abstract placeLimitOrders(payload: {
|
|
426
|
+
symbol: string;
|
|
427
|
+
orders: Array<{
|
|
428
|
+
entry: number;
|
|
429
|
+
quantity: number;
|
|
430
|
+
}>;
|
|
431
|
+
kind: "long" | "short";
|
|
432
|
+
cancel?: boolean;
|
|
433
|
+
price_places?: string;
|
|
434
|
+
decimal_places?: string;
|
|
435
|
+
}): Promise<any>;
|
|
436
|
+
placeLimitOrder(payload: {
|
|
277
437
|
symbol: string;
|
|
278
438
|
quantity: number;
|
|
279
439
|
kind: "long" | "short";
|
|
@@ -281,13 +441,27 @@ declare abstract class BaseExchange {
|
|
|
281
441
|
price_places?: string;
|
|
282
442
|
decimal_places?: string;
|
|
283
443
|
}): Promise<any>;
|
|
284
|
-
abstract
|
|
444
|
+
protected abstract _placeStopOrder(payload: {
|
|
445
|
+
symbol: string;
|
|
446
|
+
stop: number;
|
|
447
|
+
quantity: number;
|
|
448
|
+
kind: "long" | "short";
|
|
449
|
+
price_places?: string;
|
|
450
|
+
decimal_places?: string;
|
|
451
|
+
final_stop: number;
|
|
452
|
+
cancel?: boolean;
|
|
453
|
+
is_limit?: boolean;
|
|
454
|
+
current_price: number;
|
|
455
|
+
hedge?: boolean;
|
|
456
|
+
}): Promise<any>;
|
|
457
|
+
placeStopOrder(payload: {
|
|
285
458
|
symbol: string;
|
|
286
459
|
stop: number;
|
|
287
460
|
quantity: number;
|
|
288
461
|
kind: "long" | "short";
|
|
289
462
|
price_places?: string;
|
|
290
463
|
decimal_places?: string;
|
|
464
|
+
hedge?: boolean;
|
|
291
465
|
}): Promise<any>;
|
|
292
466
|
abstract setLeverage(payload: {
|
|
293
467
|
symbol: string;
|
|
@@ -302,14 +476,15 @@ declare abstract class BaseExchange {
|
|
|
302
476
|
movePercent: number;
|
|
303
477
|
include_delisted?: boolean;
|
|
304
478
|
}): Promise<any>;
|
|
305
|
-
|
|
479
|
+
closePosition(payload: {
|
|
306
480
|
symbol: string;
|
|
307
481
|
kind: "long" | "short";
|
|
308
482
|
price_places?: string;
|
|
309
483
|
decimal_places?: string;
|
|
310
484
|
}): Promise<any>;
|
|
311
|
-
abstract
|
|
312
|
-
|
|
485
|
+
protected abstract getAllOpenOrders(): Promise<any>;
|
|
486
|
+
getAllOpenSymbols(): Promise<unknown[]>;
|
|
487
|
+
createLimitPurchaseOrders(payload: {
|
|
313
488
|
orders: any[];
|
|
314
489
|
kind: "long" | "short";
|
|
315
490
|
decimal_places?: string;
|
|
@@ -330,12 +505,13 @@ declare abstract class BaseExchange {
|
|
|
330
505
|
asset: string;
|
|
331
506
|
amount: number;
|
|
332
507
|
}): Promise<any>;
|
|
333
|
-
|
|
508
|
+
placeMarketOrder(payload: {
|
|
334
509
|
symbol: string;
|
|
335
510
|
kind: "long" | "short";
|
|
336
511
|
quantity: number;
|
|
337
512
|
price_places?: string;
|
|
338
513
|
decimal_places?: string;
|
|
514
|
+
close?: boolean;
|
|
339
515
|
}): Promise<any>;
|
|
340
516
|
customStopLoss(payload: {
|
|
341
517
|
price_places: string;
|
|
@@ -345,8 +521,46 @@ declare abstract class BaseExchange {
|
|
|
345
521
|
stop: number;
|
|
346
522
|
quantity: number;
|
|
347
523
|
increase?: boolean;
|
|
524
|
+
place?: boolean;
|
|
525
|
+
increase_ratio?: number;
|
|
526
|
+
}): Promise<any>;
|
|
527
|
+
abstract getOpenOrders(payload: {
|
|
528
|
+
symbol: string;
|
|
529
|
+
}): Promise<any>;
|
|
530
|
+
placeBadStopEntry(payload: {
|
|
531
|
+
symbol: string;
|
|
532
|
+
orders: Order$1[];
|
|
533
|
+
price_places?: string;
|
|
534
|
+
decimal_places?: string;
|
|
348
535
|
}): Promise<any>;
|
|
536
|
+
analyzeCandlesticks(payload: {
|
|
537
|
+
symbol: string;
|
|
538
|
+
}): Promise<CandlestickAnalysisResult>;
|
|
539
|
+
setAccountDetails(payload: {
|
|
540
|
+
getCredentials: (payload: {
|
|
541
|
+
account: string;
|
|
542
|
+
}) => Promise<{
|
|
543
|
+
api_key: string;
|
|
544
|
+
api_secret: string;
|
|
545
|
+
email: string;
|
|
546
|
+
}>;
|
|
547
|
+
proxyAgent?: any;
|
|
548
|
+
remoteActionBaseUrl?: string;
|
|
549
|
+
}): void;
|
|
550
|
+
getSymbolInformation(payload: {
|
|
551
|
+
symbol: string;
|
|
552
|
+
variant?: "full" | "short";
|
|
553
|
+
}): Promise<{
|
|
554
|
+
candlesticks: Record<string, any[]>;
|
|
555
|
+
resistance: Record<string, number>;
|
|
556
|
+
support: Record<string, number>;
|
|
557
|
+
currentPrice: number;
|
|
558
|
+
minimumWeekly?: number;
|
|
559
|
+
lowest?: number;
|
|
560
|
+
}>;
|
|
349
561
|
}
|
|
562
|
+
declare function encryptObject(obj: any, password: string): string;
|
|
563
|
+
declare function decryptObject(encryptedString: string, password: string): any;
|
|
350
564
|
declare function initPocketBaseClient(proxy_credentials: {
|
|
351
565
|
host: string;
|
|
352
566
|
email: string;
|
|
@@ -359,14 +573,40 @@ export type ExchangeType = {
|
|
|
359
573
|
};
|
|
360
574
|
export declare class AppDatabase {
|
|
361
575
|
pb: PocketBase;
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
576
|
+
email?: string;
|
|
577
|
+
salt?: string;
|
|
578
|
+
constructor(pb: PocketBase, payload: {
|
|
579
|
+
email?: string;
|
|
580
|
+
salt?: string;
|
|
581
|
+
});
|
|
582
|
+
getUserByEmail(): Promise<import("pocketbase").RecordModel>;
|
|
583
|
+
verifyUserPassword(password: string): Promise<boolean>;
|
|
584
|
+
generateUserPassword(): Promise<boolean>;
|
|
585
|
+
getUserCredentials(): Promise<any>;
|
|
586
|
+
getCredentials(payload: {
|
|
587
|
+
password?: string;
|
|
588
|
+
}): Promise<any>;
|
|
589
|
+
saveCredentials(params: {
|
|
590
|
+
password?: string;
|
|
591
|
+
credentials: any;
|
|
592
|
+
}): Promise<import("pocketbase").RecordModel>;
|
|
593
|
+
changeUserPassword(payload: {
|
|
594
|
+
password: string;
|
|
595
|
+
}): Promise<boolean>;
|
|
596
|
+
verifyAdminPassword(password: string): Promise<boolean>;
|
|
597
|
+
setAdminPassword(payload: {
|
|
598
|
+
password: string;
|
|
599
|
+
salt: string;
|
|
600
|
+
}): Promise<boolean>;
|
|
601
|
+
addNewCredential(params: {
|
|
602
|
+
password?: string;
|
|
603
|
+
payload: {
|
|
604
|
+
name: string;
|
|
605
|
+
email: string;
|
|
606
|
+
exchange: string;
|
|
607
|
+
api_key: string;
|
|
608
|
+
api_secret: string;
|
|
609
|
+
};
|
|
370
610
|
}): Promise<void>;
|
|
371
611
|
getAccountWithActivePositions(): Promise<import("pocketbase").RecordModel[]>;
|
|
372
612
|
getAllSymbolsFromPositions(options?: {
|
|
@@ -395,6 +635,12 @@ export declare class AppDatabase {
|
|
|
395
635
|
proxy: Proxy$1;
|
|
396
636
|
};
|
|
397
637
|
}>;
|
|
638
|
+
get positionExpand(): string;
|
|
639
|
+
fetchCentralPositions(payload: {
|
|
640
|
+
asset?: string;
|
|
641
|
+
symbol?: string;
|
|
642
|
+
customFilter?: string;
|
|
643
|
+
}): Promise<import("pocketbase").RecordModel[]>;
|
|
398
644
|
getPositions(options: {
|
|
399
645
|
account?: ExchangeType;
|
|
400
646
|
symbol?: string;
|
|
@@ -404,6 +650,7 @@ export declare class AppDatabase {
|
|
|
404
650
|
expand?: {
|
|
405
651
|
config: ScheduledTrade;
|
|
406
652
|
account: ExchangeAccount;
|
|
653
|
+
proxy: Proxy$1;
|
|
407
654
|
};
|
|
408
655
|
})[]>;
|
|
409
656
|
private _createOrUpdatePosition;
|
|
@@ -416,14 +663,11 @@ export declare class AppDatabase {
|
|
|
416
663
|
expand?: {
|
|
417
664
|
config: ScheduledTrade;
|
|
418
665
|
account: ExchangeAccount;
|
|
666
|
+
proxy: Proxy$1;
|
|
419
667
|
};
|
|
420
668
|
})[]>;
|
|
421
669
|
update_db_position(position: any, payload: any): Promise<import("pocketbase").RecordModel>;
|
|
422
670
|
getSymbolConfigFromDB(symbol: string): Promise<SymbolConfig>;
|
|
423
|
-
getRunningInstanceFromDB(account: ExchangeType, symbol: string, options?: {
|
|
424
|
-
delay?: number;
|
|
425
|
-
}): Promise<TradeBlockTracking>;
|
|
426
|
-
updateRunningInstance(id: string, running: boolean): Promise<import("pocketbase").RecordModel>;
|
|
427
671
|
getOrders(account: ExchangeType, options: {
|
|
428
672
|
symbol: string;
|
|
429
673
|
kind: "long" | "short";
|
|
@@ -455,17 +699,19 @@ export declare class AppDatabase {
|
|
|
455
699
|
stop: number;
|
|
456
700
|
order_id: string;
|
|
457
701
|
triggerPrice?: number;
|
|
702
|
+
clientOrderId?: string;
|
|
458
703
|
}>;
|
|
459
704
|
}): Promise<void>;
|
|
460
705
|
cancelLimitOrders(payload: {
|
|
461
706
|
symbol: string;
|
|
462
707
|
kind: "long" | "short";
|
|
463
708
|
account: ExchangeType;
|
|
709
|
+
raw?: boolean;
|
|
464
710
|
cancelExchangeOrders: (payload: {
|
|
465
711
|
symbol: string;
|
|
466
712
|
orders: number[];
|
|
467
713
|
}) => Promise<any>;
|
|
468
|
-
}): Promise<
|
|
714
|
+
}): Promise<any[]>;
|
|
469
715
|
cancelOrders(payload: {
|
|
470
716
|
cancelExchangeOrders: (payload: {
|
|
471
717
|
symbol: string;
|
|
@@ -508,13 +754,14 @@ export declare class AppDatabase {
|
|
|
508
754
|
profit_percent?: number;
|
|
509
755
|
place_tp?: boolean;
|
|
510
756
|
profit?: number;
|
|
757
|
+
reduce_ratio?: number;
|
|
511
758
|
}): Promise<import("pocketbase").RecordModel | ScheduledTrade>;
|
|
512
759
|
getPositionConfig(payload: {
|
|
513
760
|
symbol: string;
|
|
514
761
|
kind: "long" | "short";
|
|
515
762
|
account: ExchangeType;
|
|
516
763
|
}): Promise<ScheduledTrade | null>;
|
|
517
|
-
getRunningAccountStrategies(): Promise<(AccountStrategy & {
|
|
764
|
+
getRunningAccountStrategies(filter?: string): Promise<(AccountStrategy & {
|
|
518
765
|
expand?: {
|
|
519
766
|
account: ExchangeAccount;
|
|
520
767
|
};
|
|
@@ -556,10 +803,72 @@ export declare class AppDatabase {
|
|
|
556
803
|
} | SymbolConfig[]>;
|
|
557
804
|
unwindSymbolFromDB(symbol: string): Promise<boolean>;
|
|
558
805
|
hasExistingPosition(symbol: string): Promise<import("pocketbase").RecordModel[]>;
|
|
806
|
+
getPositionWithLowestNextOrder(options: {
|
|
807
|
+
symbol?: string;
|
|
808
|
+
kind: "long" | "short";
|
|
809
|
+
asset?: string;
|
|
810
|
+
exclude?: ExchangeType[];
|
|
811
|
+
}): Promise<PositionsView | null>;
|
|
559
812
|
hasExistingOrders(symbol: string): Promise<import("pocketbase").RecordModel[]>;
|
|
560
813
|
removeSymbolFromUnwindingMarkets(symbol: string): Promise<boolean>;
|
|
561
814
|
removePosition(position: any): Promise<void>;
|
|
562
815
|
removePositionConfig(position: any): Promise<void>;
|
|
816
|
+
getConfigProfiles(payload: {
|
|
817
|
+
config_id: string;
|
|
818
|
+
}): Promise<{
|
|
819
|
+
id: any;
|
|
820
|
+
entry: any;
|
|
821
|
+
stop: any;
|
|
822
|
+
kind: "long" | "short";
|
|
823
|
+
risk_reward: any;
|
|
824
|
+
risk: any;
|
|
825
|
+
profit_percent: any;
|
|
826
|
+
}[]>;
|
|
827
|
+
editConfigProfile(payload: {
|
|
828
|
+
id: string;
|
|
829
|
+
params: {
|
|
830
|
+
entry?: number;
|
|
831
|
+
stop?: number;
|
|
832
|
+
risk_reward?: number;
|
|
833
|
+
risk?: number;
|
|
834
|
+
profit_percent?: number;
|
|
835
|
+
};
|
|
836
|
+
}): Promise<void>;
|
|
837
|
+
createConfigProfile(payload: {
|
|
838
|
+
config_id: string;
|
|
839
|
+
symbol: string;
|
|
840
|
+
params: {
|
|
841
|
+
entry: number;
|
|
842
|
+
stop: number;
|
|
843
|
+
kind: "long" | "short";
|
|
844
|
+
risk_reward: number;
|
|
845
|
+
risk: number;
|
|
846
|
+
profit_percent: number;
|
|
847
|
+
};
|
|
848
|
+
}): Promise<void>;
|
|
849
|
+
getCompoundInstance(payload: {
|
|
850
|
+
position: Position$1;
|
|
851
|
+
}): Promise<CompoundInstance & {
|
|
852
|
+
expand: {
|
|
853
|
+
ref: Compounder;
|
|
854
|
+
};
|
|
855
|
+
}>;
|
|
856
|
+
getSupportTable(payload: {
|
|
857
|
+
symbol: string;
|
|
858
|
+
kind: "long" | "short";
|
|
859
|
+
}): Promise<SupportTable>;
|
|
860
|
+
updateCompoundInstance(payload: {
|
|
861
|
+
id: string;
|
|
862
|
+
params: any;
|
|
863
|
+
}): Promise<import("pocketbase").RecordModel>;
|
|
864
|
+
getPositionsByAssetPair(payload: {
|
|
865
|
+
asset: string;
|
|
866
|
+
symbol?: string;
|
|
867
|
+
isCompound?: boolean;
|
|
868
|
+
}): Promise<{
|
|
869
|
+
pairObject: any;
|
|
870
|
+
asset: string;
|
|
871
|
+
}>;
|
|
563
872
|
}
|
|
564
873
|
export type StrategyPosition = {
|
|
565
874
|
entry: number;
|
|
@@ -746,15 +1055,48 @@ export declare class Strategy {
|
|
|
746
1055
|
gap?: number;
|
|
747
1056
|
rr?: number;
|
|
748
1057
|
max_size?: number;
|
|
1058
|
+
max_quantity?: number;
|
|
1059
|
+
kelly?: {
|
|
1060
|
+
use_kelly?: boolean;
|
|
1061
|
+
kelly_confidence_factor?: number;
|
|
1062
|
+
kelly_minimum_risk?: number;
|
|
1063
|
+
kelly_prediction_model?: "exponential" | "normal" | "uniform";
|
|
1064
|
+
kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
|
|
1065
|
+
};
|
|
1066
|
+
distribution?: GetEntriesParams["distribution"];
|
|
1067
|
+
distribution_params?: {
|
|
1068
|
+
curveFactor?: number;
|
|
1069
|
+
stdDevFactor?: number;
|
|
1070
|
+
lambda?: number;
|
|
1071
|
+
};
|
|
749
1072
|
};
|
|
750
1073
|
identifyGapConfig(payload: {
|
|
751
1074
|
factor?: number;
|
|
1075
|
+
sell_factor?: number;
|
|
1076
|
+
kind?: "long" | "short";
|
|
1077
|
+
risk?: number;
|
|
752
1078
|
}): {
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
1079
|
+
profit_percent: {
|
|
1080
|
+
long: number;
|
|
1081
|
+
short: number;
|
|
1082
|
+
};
|
|
1083
|
+
risk: {
|
|
1084
|
+
short: number;
|
|
1085
|
+
long: number;
|
|
1086
|
+
};
|
|
1087
|
+
take_profit: {
|
|
1088
|
+
long: number;
|
|
1089
|
+
short: number;
|
|
1090
|
+
};
|
|
1091
|
+
to_reduce: {
|
|
1092
|
+
short: number;
|
|
1093
|
+
long: number;
|
|
1094
|
+
};
|
|
1095
|
+
full_reduce: {
|
|
1096
|
+
short: number;
|
|
1097
|
+
long: number;
|
|
1098
|
+
};
|
|
1099
|
+
sell_quantity: {
|
|
758
1100
|
short: number;
|
|
759
1101
|
long: number;
|
|
760
1102
|
};
|
|
@@ -769,6 +1111,7 @@ export declare class Strategy {
|
|
|
769
1111
|
}): {
|
|
770
1112
|
pnl: number;
|
|
771
1113
|
loss: number;
|
|
1114
|
+
full_loss: number;
|
|
772
1115
|
original_pnl: number;
|
|
773
1116
|
reward_factor: number;
|
|
774
1117
|
profit_percent: number;
|
|
@@ -778,8 +1121,57 @@ export declare class Strategy {
|
|
|
778
1121
|
price_places: string;
|
|
779
1122
|
decimal_places: string;
|
|
780
1123
|
};
|
|
1124
|
+
simulateGapReduction(payload: {
|
|
1125
|
+
iterations?: number;
|
|
1126
|
+
factor?: number;
|
|
1127
|
+
direction: "long" | "short";
|
|
1128
|
+
kind?: "long" | "short";
|
|
1129
|
+
risk?: number;
|
|
1130
|
+
sell_factor?: number;
|
|
1131
|
+
}): {
|
|
1132
|
+
results: {
|
|
1133
|
+
profit_percent: {
|
|
1134
|
+
long: number;
|
|
1135
|
+
short: number;
|
|
1136
|
+
};
|
|
1137
|
+
risk: {
|
|
1138
|
+
short: number;
|
|
1139
|
+
long: number;
|
|
1140
|
+
};
|
|
1141
|
+
take_profit: {
|
|
1142
|
+
long: number;
|
|
1143
|
+
short: number;
|
|
1144
|
+
};
|
|
1145
|
+
sell_quantity: {
|
|
1146
|
+
short: number;
|
|
1147
|
+
long: number;
|
|
1148
|
+
};
|
|
1149
|
+
gap_loss: number;
|
|
1150
|
+
position: {
|
|
1151
|
+
long: {
|
|
1152
|
+
entry: number;
|
|
1153
|
+
quantity: number;
|
|
1154
|
+
};
|
|
1155
|
+
short: {
|
|
1156
|
+
entry: number;
|
|
1157
|
+
quantity: number;
|
|
1158
|
+
};
|
|
1159
|
+
};
|
|
1160
|
+
}[];
|
|
1161
|
+
quantity: number;
|
|
1162
|
+
};
|
|
781
1163
|
}
|
|
1164
|
+
export declare function determine_average_entry_and_size(orders: Array<{
|
|
1165
|
+
price: number;
|
|
1166
|
+
quantity: number;
|
|
1167
|
+
}>, places?: string, price_places?: string): {
|
|
1168
|
+
entry: number;
|
|
1169
|
+
price: number;
|
|
1170
|
+
quantity: number;
|
|
1171
|
+
};
|
|
1172
|
+
export declare const createArray: (start: number, stop: number, step: number) => number[];
|
|
782
1173
|
export type SignalConfigType = {
|
|
1174
|
+
symbol?: string;
|
|
783
1175
|
focus: number;
|
|
784
1176
|
budget: number;
|
|
785
1177
|
percent_change?: number;
|
|
@@ -800,12 +1192,42 @@ export type SignalConfigType = {
|
|
|
800
1192
|
first_order_size?: number;
|
|
801
1193
|
gap?: number;
|
|
802
1194
|
max_size?: number;
|
|
1195
|
+
use_kelly?: boolean;
|
|
1196
|
+
kelly_prediction_model?: "exponential" | "normal" | "uniform";
|
|
1197
|
+
kelly_confidence_factor?: number;
|
|
1198
|
+
kelly_minimum_risk?: number;
|
|
1199
|
+
kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
|
|
1200
|
+
full_distribution?: {
|
|
1201
|
+
long: GetEntriesParams["distribution"];
|
|
1202
|
+
short: GetEntriesParams["distribution"];
|
|
1203
|
+
};
|
|
1204
|
+
max_quantity?: number;
|
|
1205
|
+
distribution_params?: {
|
|
1206
|
+
curveFactor?: number;
|
|
1207
|
+
stdDevFactor?: number;
|
|
1208
|
+
lambda?: number;
|
|
1209
|
+
};
|
|
1210
|
+
use_progressive_risk?: boolean;
|
|
1211
|
+
risk_distribution?: {
|
|
1212
|
+
enabled: boolean;
|
|
1213
|
+
total_risk_budget: number;
|
|
1214
|
+
risk_reward: number;
|
|
1215
|
+
buckets: Array<{
|
|
1216
|
+
zone_percentage: number;
|
|
1217
|
+
risk_percentage: number;
|
|
1218
|
+
}>;
|
|
1219
|
+
};
|
|
803
1220
|
};
|
|
804
1221
|
declare class Signal {
|
|
805
1222
|
focus: number;
|
|
806
1223
|
budget: number;
|
|
807
1224
|
percent_change: number;
|
|
808
1225
|
price_places: string;
|
|
1226
|
+
distribution_params: {
|
|
1227
|
+
curveFactor?: number;
|
|
1228
|
+
stdDevFactor?: number;
|
|
1229
|
+
lambda?: number;
|
|
1230
|
+
};
|
|
809
1231
|
decimal_places: string;
|
|
810
1232
|
zone_risk: number;
|
|
811
1233
|
fee: number;
|
|
@@ -822,8 +1244,29 @@ declare class Signal {
|
|
|
822
1244
|
first_order_size: number;
|
|
823
1245
|
gap: number;
|
|
824
1246
|
max_size: number;
|
|
825
|
-
|
|
826
|
-
|
|
1247
|
+
use_kelly: boolean;
|
|
1248
|
+
kelly_prediction_model: "exponential" | "normal" | "uniform";
|
|
1249
|
+
kelly_confidence_factor: number;
|
|
1250
|
+
kelly_minimum_risk: number;
|
|
1251
|
+
kelly_func: "theoretical" | "position_based" | "theoretical_fixed";
|
|
1252
|
+
symbol?: string;
|
|
1253
|
+
distribution: {
|
|
1254
|
+
long: GetEntriesParams["distribution"];
|
|
1255
|
+
short: GetEntriesParams["distribution"];
|
|
1256
|
+
};
|
|
1257
|
+
use_progressive_risk?: boolean;
|
|
1258
|
+
risk_distribution?: {
|
|
1259
|
+
enabled: boolean;
|
|
1260
|
+
total_risk_budget: number;
|
|
1261
|
+
risk_reward: number;
|
|
1262
|
+
buckets: Array<{
|
|
1263
|
+
zone_percentage: number;
|
|
1264
|
+
risk_percentage: number;
|
|
1265
|
+
}>;
|
|
1266
|
+
};
|
|
1267
|
+
max_quantity: number;
|
|
1268
|
+
constructor({ focus, symbol, budget, percent_change, price_places, decimal_places, zone_risk, fee, support, risk_reward, resistance, risk_per_trade, increase_size, additional_increase, minimum_pnl, take_profit, increase_position, minimum_size, first_order_size, gap, max_size, use_kelly, kelly_prediction_model, kelly_confidence_factor, kelly_minimum_risk, kelly_func, full_distribution, max_quantity, distribution_params, use_progressive_risk, risk_distribution, }: SignalConfigType);
|
|
1269
|
+
build_entry({ current_price, stop_loss, pnl, stop_percent, kind, risk, no_of_trades, take_profit, distribution, distribution_params, }: {
|
|
827
1270
|
take_profit?: number;
|
|
828
1271
|
no_of_trades?: number;
|
|
829
1272
|
current_price: number;
|
|
@@ -832,6 +1275,17 @@ declare class Signal {
|
|
|
832
1275
|
risk: number;
|
|
833
1276
|
stop_percent?: number;
|
|
834
1277
|
pnl?: number;
|
|
1278
|
+
distribution?: GetEntriesParams["distribution"];
|
|
1279
|
+
distribution_params?: {
|
|
1280
|
+
curveFactor?: number;
|
|
1281
|
+
stdDevFactor?: number;
|
|
1282
|
+
lambda?: number;
|
|
1283
|
+
use_progressive?: boolean;
|
|
1284
|
+
buckets?: Array<{
|
|
1285
|
+
zone_percentage: number;
|
|
1286
|
+
risk_percentage: number;
|
|
1287
|
+
}>;
|
|
1288
|
+
};
|
|
835
1289
|
}): any;
|
|
836
1290
|
get risk(): number;
|
|
837
1291
|
get min_trades(): number;
|
|
@@ -865,6 +1319,11 @@ declare class Signal {
|
|
|
865
1319
|
kind?: "long" | "short";
|
|
866
1320
|
limit?: boolean;
|
|
867
1321
|
}): any;
|
|
1322
|
+
get_future_zones_simple({ current_price, kind, raw, }: {
|
|
1323
|
+
raw?: boolean;
|
|
1324
|
+
current_price: number;
|
|
1325
|
+
kind?: "long" | "short";
|
|
1326
|
+
}): number[];
|
|
868
1327
|
get_future_zones({ current_price, kind, raw, }: {
|
|
869
1328
|
raw?: boolean;
|
|
870
1329
|
current_price: number;
|
|
@@ -876,6 +1335,14 @@ declare class Signal {
|
|
|
876
1335
|
kind?: "long" | "short";
|
|
877
1336
|
}): number[][];
|
|
878
1337
|
get_margin_range(current_price: number, kind?: string): number[];
|
|
1338
|
+
/**
|
|
1339
|
+
* Helper function to calculate zone-specific risk based on progressive risk distribution
|
|
1340
|
+
* @param index - The index of the current zone
|
|
1341
|
+
* @param totalZones - Total number of zones
|
|
1342
|
+
* @param account - Account configuration with risk settings
|
|
1343
|
+
* @returns The risk amount for the specific zone
|
|
1344
|
+
*/
|
|
1345
|
+
private getZoneRisk;
|
|
879
1346
|
process_orders({ current_price, stop_loss, trade_zones, kind, }: {
|
|
880
1347
|
current_price: number;
|
|
881
1348
|
stop_loss: number;
|
|
@@ -908,15 +1375,6 @@ declare class Signal {
|
|
|
908
1375
|
};
|
|
909
1376
|
to_df(currentPrice: number, places?: string): number;
|
|
910
1377
|
}
|
|
911
|
-
export declare function determine_average_entry_and_size(orders: Array<{
|
|
912
|
-
price: number;
|
|
913
|
-
quantity: number;
|
|
914
|
-
}>, places?: string, price_places?: string): {
|
|
915
|
-
entry: number;
|
|
916
|
-
price: number;
|
|
917
|
-
quantity: number;
|
|
918
|
-
};
|
|
919
|
-
export declare const createArray: (start: number, stop: number, step: number) => number[];
|
|
920
1378
|
export type AppConfig = {
|
|
921
1379
|
fee: number;
|
|
922
1380
|
risk_per_trade: number;
|
|
@@ -944,6 +1402,20 @@ export type AppConfig = {
|
|
|
944
1402
|
max_size?: number;
|
|
945
1403
|
last_value?: any;
|
|
946
1404
|
entries?: any[];
|
|
1405
|
+
max_quantity?: number;
|
|
1406
|
+
kelly?: {
|
|
1407
|
+
use_kelly?: boolean;
|
|
1408
|
+
kelly_confidence_factor?: number;
|
|
1409
|
+
kelly_minimum_risk?: number;
|
|
1410
|
+
kelly_prediction_model?: "exponential" | "normal" | "uniform";
|
|
1411
|
+
kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
|
|
1412
|
+
};
|
|
1413
|
+
distribution?: GetEntriesParams["distribution"];
|
|
1414
|
+
distribution_params?: {
|
|
1415
|
+
curveFactor?: number;
|
|
1416
|
+
stdDevFactor?: number;
|
|
1417
|
+
lambda?: number;
|
|
1418
|
+
};
|
|
947
1419
|
};
|
|
948
1420
|
export type ExtendConfigType = {
|
|
949
1421
|
take_profit?: number;
|
|
@@ -960,8 +1432,26 @@ export type ExtendConfigType = {
|
|
|
960
1432
|
kind?: "long" | "short";
|
|
961
1433
|
gap?: number;
|
|
962
1434
|
rr?: number;
|
|
1435
|
+
min_avg_size?: number;
|
|
1436
|
+
use_kelly?: boolean;
|
|
1437
|
+
kelly_confidence_factor?: number;
|
|
1438
|
+
kelly_minimum_risk?: number;
|
|
1439
|
+
kelly_prediction_model?: "exponential" | "normal" | "uniform";
|
|
1440
|
+
kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
|
|
1441
|
+
distribution?: GetEntriesParams["distribution"];
|
|
1442
|
+
distribution_params?: {
|
|
1443
|
+
curveFactor?: number;
|
|
1444
|
+
stdDevFactor?: number;
|
|
1445
|
+
lambda?: number;
|
|
1446
|
+
buckets?: Array<{
|
|
1447
|
+
zone_percentage: number;
|
|
1448
|
+
risk_percentage: number;
|
|
1449
|
+
}>;
|
|
1450
|
+
use_progressive?: boolean;
|
|
1451
|
+
};
|
|
1452
|
+
use_progressive_risk?: boolean;
|
|
963
1453
|
};
|
|
964
|
-
export declare function buildConfig(app_config: AppConfig, { take_profit, entry, stop, raw_instance, risk, no_of_trades, min_profit, risk_reward, kind, increase, gap, rr, price_places, decimal_places, }: ExtendConfigType): any[] | Signal;
|
|
1454
|
+
export declare function buildConfig(app_config: AppConfig, { take_profit, entry, stop, raw_instance, risk, no_of_trades, min_profit, risk_reward, kind, increase, gap, rr, price_places, decimal_places, use_kelly, kelly_confidence_factor, kelly_minimum_risk, kelly_prediction_model, kelly_func, min_avg_size, distribution, distribution_params, use_progressive_risk, }: ExtendConfigType): any[] | Signal;
|
|
965
1455
|
export declare function buildAvg({ _trades, kind, }: {
|
|
966
1456
|
_trades: any[];
|
|
967
1457
|
kind: "long" | "short";
|
|
@@ -971,6 +1461,17 @@ export declare function get_app_config_and_max_size(config: GlobalConfig, payloa
|
|
|
971
1461
|
entry: number;
|
|
972
1462
|
stop: number;
|
|
973
1463
|
kind: "long" | "short";
|
|
1464
|
+
use_kelly?: boolean;
|
|
1465
|
+
kelly_confidence_factor?: number;
|
|
1466
|
+
kelly_minimum_risk?: number;
|
|
1467
|
+
kelly_prediction_model?: "exponential" | "normal" | "uniform";
|
|
1468
|
+
kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
|
|
1469
|
+
distribution?: GetEntriesParams["distribution"];
|
|
1470
|
+
distribution_params?: {
|
|
1471
|
+
curveFactor?: number;
|
|
1472
|
+
stdDevFactor?: number;
|
|
1473
|
+
lambda?: number;
|
|
1474
|
+
};
|
|
974
1475
|
}): {
|
|
975
1476
|
app_config: AppConfig;
|
|
976
1477
|
max_size: any;
|
|
@@ -990,11 +1491,28 @@ export declare function buildAppConfig(config: GlobalConfig, payload: {
|
|
|
990
1491
|
risk: number;
|
|
991
1492
|
symbol: string;
|
|
992
1493
|
profit?: number;
|
|
1494
|
+
use_kelly?: boolean;
|
|
1495
|
+
kelly_confidence_factor?: number;
|
|
1496
|
+
kelly_minimum_risk?: number;
|
|
1497
|
+
kelly_prediction_model?: "exponential" | "normal" | "uniform";
|
|
1498
|
+
kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
|
|
1499
|
+
distribution?: GetEntriesParams["distribution"];
|
|
1500
|
+
distribution_params?: {
|
|
1501
|
+
curveFactor?: number;
|
|
1502
|
+
stdDevFactor?: number;
|
|
1503
|
+
lambda?: number;
|
|
1504
|
+
};
|
|
993
1505
|
}): AppConfig;
|
|
994
1506
|
export declare function getOptimumStopAndRisk(app_config: AppConfig, params: {
|
|
995
1507
|
max_size: number;
|
|
996
1508
|
target_stop: number;
|
|
997
1509
|
highest_risk?: number;
|
|
1510
|
+
distribution?: GetEntriesParams["distribution"];
|
|
1511
|
+
distribution_params?: {
|
|
1512
|
+
curveFactor?: number;
|
|
1513
|
+
stdDevFactor?: number;
|
|
1514
|
+
lambda?: number;
|
|
1515
|
+
};
|
|
998
1516
|
}): {
|
|
999
1517
|
optimal_stop: number;
|
|
1000
1518
|
optimal_risk: number;
|
|
@@ -1051,33 +1569,90 @@ export declare function generateOptimumAppConfig(config: GlobalConfig, payload:
|
|
|
1051
1569
|
risk_reward: number;
|
|
1052
1570
|
start_risk: number;
|
|
1053
1571
|
max_risk?: number;
|
|
1572
|
+
distribution?: GetEntriesParams["distribution"];
|
|
1573
|
+
distribution_params?: {
|
|
1574
|
+
curveFactor?: number;
|
|
1575
|
+
stdDevFactor?: number;
|
|
1576
|
+
lambda?: number;
|
|
1577
|
+
};
|
|
1054
1578
|
}, position: {
|
|
1055
1579
|
entry: number;
|
|
1056
1580
|
quantity: number;
|
|
1057
1581
|
kind: "long" | "short";
|
|
1058
1582
|
}): AppConfig | null;
|
|
1059
|
-
export declare function determineOptimumReward(
|
|
1583
|
+
export declare function determineOptimumReward(payload: {
|
|
1584
|
+
app_config: AppConfig;
|
|
1585
|
+
increase?: boolean;
|
|
1586
|
+
low_range?: number;
|
|
1587
|
+
high_range?: number;
|
|
1588
|
+
target_loss?: number;
|
|
1589
|
+
distribution?: GetEntriesParams["distribution"];
|
|
1590
|
+
distribution_params?: {
|
|
1591
|
+
curveFactor?: number;
|
|
1592
|
+
stdDevFactor?: number;
|
|
1593
|
+
lambda?: number;
|
|
1594
|
+
};
|
|
1595
|
+
max_size?: number;
|
|
1596
|
+
}): number | {
|
|
1060
1597
|
result: any[];
|
|
1061
1598
|
value: number;
|
|
1062
1599
|
total: number;
|
|
1063
1600
|
risk_per_trade: number;
|
|
1064
1601
|
max: number;
|
|
1065
1602
|
min: number;
|
|
1603
|
+
avg_size: any;
|
|
1066
1604
|
neg_pnl: any;
|
|
1067
1605
|
entry: any;
|
|
1068
1606
|
};
|
|
1069
|
-
export declare function
|
|
1070
|
-
app_config: AppConfig;
|
|
1607
|
+
export declare function determineOptimumRisk(config: GlobalConfig, payload: {
|
|
1071
1608
|
entry: number;
|
|
1072
1609
|
stop: number;
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1610
|
+
risk_reward: number;
|
|
1611
|
+
risk: number;
|
|
1612
|
+
symbol: string;
|
|
1613
|
+
distribution?: GetEntriesParams["distribution"];
|
|
1614
|
+
distribution_params?: {
|
|
1615
|
+
curveFactor?: number;
|
|
1616
|
+
stdDevFactor?: number;
|
|
1617
|
+
lambda?: number;
|
|
1618
|
+
};
|
|
1619
|
+
}, params: {
|
|
1620
|
+
highest_risk: number;
|
|
1621
|
+
tolerance?: number;
|
|
1622
|
+
max_iterations?: number;
|
|
1623
|
+
}): {
|
|
1624
|
+
optimal_risk: number;
|
|
1625
|
+
achieved_neg_pnl: number;
|
|
1626
|
+
target_neg_pnl: number;
|
|
1627
|
+
difference: number;
|
|
1628
|
+
iterations: number;
|
|
1629
|
+
converged: boolean;
|
|
1630
|
+
last_value: any;
|
|
1631
|
+
entries: any[];
|
|
1632
|
+
app_config: AppConfig;
|
|
1633
|
+
};
|
|
1634
|
+
export declare function computeRiskReward(payload: {
|
|
1635
|
+
app_config: AppConfig;
|
|
1636
|
+
entry: number;
|
|
1637
|
+
stop: number;
|
|
1638
|
+
risk_per_trade: number;
|
|
1639
|
+
target_loss?: number;
|
|
1640
|
+
distribution?: GetEntriesParams["distribution"];
|
|
1641
|
+
distribution_params?: {
|
|
1642
|
+
curveFactor?: number;
|
|
1643
|
+
stdDevFactor?: number;
|
|
1644
|
+
lambda?: number;
|
|
1645
|
+
};
|
|
1646
|
+
high_range?: number;
|
|
1647
|
+
max_size?: number;
|
|
1648
|
+
}): number | {
|
|
1649
|
+
result: any[];
|
|
1076
1650
|
value: number;
|
|
1077
1651
|
total: number;
|
|
1078
1652
|
risk_per_trade: number;
|
|
1079
1653
|
max: number;
|
|
1080
1654
|
min: number;
|
|
1655
|
+
avg_size: any;
|
|
1081
1656
|
neg_pnl: any;
|
|
1082
1657
|
entry: any;
|
|
1083
1658
|
};
|
|
@@ -1086,6 +1661,17 @@ export declare function getRiskReward(payload: {
|
|
|
1086
1661
|
stop: number;
|
|
1087
1662
|
risk: number;
|
|
1088
1663
|
global_config: GlobalConfig;
|
|
1664
|
+
force_exact_risk?: boolean;
|
|
1665
|
+
target_loss?: number;
|
|
1666
|
+
max_size?: number;
|
|
1667
|
+
distribution?: GetEntriesParams["distribution"];
|
|
1668
|
+
distribution_params?: {
|
|
1669
|
+
curveFactor?: number;
|
|
1670
|
+
stdDevFactor?: number;
|
|
1671
|
+
lambda?: number;
|
|
1672
|
+
};
|
|
1673
|
+
risk_factor?: number;
|
|
1674
|
+
high_range?: number;
|
|
1089
1675
|
}): any;
|
|
1090
1676
|
export declare function computeProfitDetail(payload: {
|
|
1091
1677
|
focus_position: {
|
|
@@ -1095,11 +1681,12 @@ export declare function computeProfitDetail(payload: {
|
|
|
1095
1681
|
avg_qty: number;
|
|
1096
1682
|
avg_price: number;
|
|
1097
1683
|
};
|
|
1098
|
-
strategy
|
|
1684
|
+
strategy?: {
|
|
1099
1685
|
reward_factor: number;
|
|
1100
1686
|
max_reward_factor: number;
|
|
1101
1687
|
risk: number;
|
|
1102
1688
|
};
|
|
1689
|
+
pnl: number;
|
|
1103
1690
|
reduce_position?: {
|
|
1104
1691
|
kind: "long" | "short";
|
|
1105
1692
|
entry: number;
|
|
@@ -1116,11 +1703,13 @@ export declare function computeProfitDetail(payload: {
|
|
|
1116
1703
|
quantity: number;
|
|
1117
1704
|
};
|
|
1118
1705
|
};
|
|
1706
|
+
full_ratio?: number;
|
|
1119
1707
|
price_places?: string;
|
|
1120
1708
|
decimal_places?: string;
|
|
1121
1709
|
}): {
|
|
1122
1710
|
pnl: number;
|
|
1123
1711
|
loss: number;
|
|
1712
|
+
full_loss: number;
|
|
1124
1713
|
original_pnl: number;
|
|
1125
1714
|
reward_factor: number;
|
|
1126
1715
|
profit_percent: number;
|
|
@@ -1139,40 +1728,656 @@ export declare function generateGapTp(payload: {
|
|
|
1139
1728
|
entry: number;
|
|
1140
1729
|
quantity: number;
|
|
1141
1730
|
};
|
|
1731
|
+
risk?: number;
|
|
1732
|
+
kind?: "long" | "short";
|
|
1142
1733
|
factor?: number;
|
|
1734
|
+
sell_factor?: number;
|
|
1143
1735
|
price_places?: string;
|
|
1144
1736
|
decimal_places?: string;
|
|
1145
1737
|
}): {
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1738
|
+
profit_percent: {
|
|
1739
|
+
long: number;
|
|
1740
|
+
short: number;
|
|
1741
|
+
};
|
|
1742
|
+
risk: {
|
|
1743
|
+
short: number;
|
|
1744
|
+
long: number;
|
|
1745
|
+
};
|
|
1746
|
+
take_profit: {
|
|
1747
|
+
long: number;
|
|
1748
|
+
short: number;
|
|
1749
|
+
};
|
|
1750
|
+
to_reduce: {
|
|
1151
1751
|
short: number;
|
|
1152
1752
|
long: number;
|
|
1153
1753
|
};
|
|
1154
|
-
|
|
1155
|
-
|
|
1754
|
+
full_reduce: {
|
|
1755
|
+
short: number;
|
|
1756
|
+
long: number;
|
|
1757
|
+
};
|
|
1758
|
+
sell_quantity: {
|
|
1759
|
+
short: number;
|
|
1760
|
+
long: number;
|
|
1761
|
+
};
|
|
1762
|
+
gap: number;
|
|
1763
|
+
gap_loss: number;
|
|
1764
|
+
};
|
|
1765
|
+
export declare function calculateFactorFromTakeProfit(payload: {
|
|
1766
|
+
long: {
|
|
1767
|
+
entry: number;
|
|
1768
|
+
quantity: number;
|
|
1769
|
+
};
|
|
1770
|
+
short: {
|
|
1771
|
+
entry: number;
|
|
1772
|
+
quantity: number;
|
|
1773
|
+
};
|
|
1774
|
+
knownTp: number;
|
|
1775
|
+
tpType: "long" | "short";
|
|
1776
|
+
price_places?: string;
|
|
1777
|
+
}): number;
|
|
1778
|
+
export declare function calculateFactorFromSellQuantity(payload: {
|
|
1779
|
+
long: {
|
|
1780
|
+
entry: number;
|
|
1781
|
+
quantity: number;
|
|
1782
|
+
};
|
|
1783
|
+
short: {
|
|
1784
|
+
entry: number;
|
|
1785
|
+
quantity: number;
|
|
1786
|
+
};
|
|
1787
|
+
knownSellQuantity: number;
|
|
1788
|
+
sellType: "long" | "short";
|
|
1789
|
+
sell_factor?: number;
|
|
1790
|
+
price_places?: string;
|
|
1791
|
+
decimal_places?: string;
|
|
1792
|
+
}): number;
|
|
1793
|
+
export declare function determineRewardFactor(payload: {
|
|
1794
|
+
quantity: number;
|
|
1795
|
+
avg_qty: number;
|
|
1796
|
+
minimum_pnl: number;
|
|
1797
|
+
risk: number;
|
|
1798
|
+
}): number;
|
|
1799
|
+
export type BotPosition = {
|
|
1800
|
+
kind: "long" | "short";
|
|
1801
|
+
entry: number;
|
|
1802
|
+
quantity: number;
|
|
1803
|
+
tp: {
|
|
1804
|
+
price: number;
|
|
1805
|
+
};
|
|
1806
|
+
};
|
|
1807
|
+
export declare function getHedgeZone(payload: {
|
|
1808
|
+
symbol_config: GlobalConfig;
|
|
1809
|
+
risk: number;
|
|
1810
|
+
position: BotPosition;
|
|
1811
|
+
reward_factor?: number;
|
|
1812
|
+
risk_factor?: number;
|
|
1813
|
+
support?: number;
|
|
1814
|
+
}): {
|
|
1815
|
+
support: number;
|
|
1816
|
+
resistance: number;
|
|
1817
|
+
risk: number;
|
|
1818
|
+
profit_percent: number;
|
|
1819
|
+
};
|
|
1820
|
+
export declare function getOptimumHedgeFactor(payload: {
|
|
1821
|
+
target_support: number;
|
|
1822
|
+
tolerance?: number;
|
|
1823
|
+
max_iterations?: number;
|
|
1824
|
+
min_factor?: number;
|
|
1825
|
+
max_factor?: number;
|
|
1826
|
+
symbol_config: GlobalConfig;
|
|
1827
|
+
risk: number;
|
|
1828
|
+
position: BotPosition;
|
|
1829
|
+
}): {
|
|
1830
|
+
reward_factor: number;
|
|
1831
|
+
achieved_support: number;
|
|
1832
|
+
target_support: number;
|
|
1833
|
+
difference: number;
|
|
1834
|
+
iterations: number;
|
|
1835
|
+
converged?: undefined;
|
|
1836
|
+
} | {
|
|
1837
|
+
reward_factor: number;
|
|
1838
|
+
achieved_support: number;
|
|
1839
|
+
target_support: number;
|
|
1840
|
+
difference: number;
|
|
1841
|
+
iterations: number;
|
|
1842
|
+
converged: boolean;
|
|
1843
|
+
};
|
|
1844
|
+
export type CType = {
|
|
1845
|
+
next_order: number;
|
|
1846
|
+
take_profit: number;
|
|
1847
|
+
};
|
|
1848
|
+
export declare function determineCompoundLongTrade(payload: {
|
|
1849
|
+
focus_short_position: CType;
|
|
1850
|
+
focus_long_position: CType;
|
|
1851
|
+
shortConfig: {
|
|
1852
|
+
entry: number;
|
|
1853
|
+
stop: number;
|
|
1854
|
+
risk_reward: number;
|
|
1855
|
+
risk: number;
|
|
1856
|
+
symbol: string;
|
|
1857
|
+
profit_percent: number;
|
|
1858
|
+
};
|
|
1859
|
+
rr?: number;
|
|
1860
|
+
global_config: GlobalConfig;
|
|
1861
|
+
}): {
|
|
1862
|
+
start_risk: number;
|
|
1863
|
+
short_profit: number;
|
|
1864
|
+
support: number;
|
|
1865
|
+
resistance: number;
|
|
1866
|
+
long_v: any;
|
|
1867
|
+
profit_percent: number;
|
|
1868
|
+
result: any;
|
|
1869
|
+
short_max_size: any;
|
|
1870
|
+
};
|
|
1871
|
+
export declare function generateOppositeTradeConfig(payload: {
|
|
1872
|
+
kind: "long" | "short";
|
|
1873
|
+
entry: number;
|
|
1874
|
+
quantity: number;
|
|
1875
|
+
target_pnl: number;
|
|
1876
|
+
global_config: GlobalConfig;
|
|
1877
|
+
ratio?: number;
|
|
1878
|
+
}): {
|
|
1879
|
+
entry: number;
|
|
1880
|
+
stop: number;
|
|
1881
|
+
risk: number;
|
|
1882
|
+
risk_reward: number | {
|
|
1883
|
+
result: any[];
|
|
1884
|
+
value: number;
|
|
1885
|
+
total: number;
|
|
1886
|
+
risk_per_trade: number;
|
|
1887
|
+
max: number;
|
|
1888
|
+
min: number;
|
|
1889
|
+
avg_size: any;
|
|
1890
|
+
neg_pnl: any;
|
|
1891
|
+
entry: any;
|
|
1892
|
+
};
|
|
1893
|
+
};
|
|
1894
|
+
export declare function constructAppConfig(payload: {
|
|
1895
|
+
account: PositionsView;
|
|
1896
|
+
global_config: GlobalConfig;
|
|
1897
|
+
kelly_config?: {
|
|
1898
|
+
use_kelly: boolean;
|
|
1899
|
+
kelly_confidence_factor: number;
|
|
1900
|
+
kelly_minimum_risk: number;
|
|
1901
|
+
kelly_prediction_model: string;
|
|
1902
|
+
};
|
|
1903
|
+
distribution_config?: {
|
|
1904
|
+
distribution?: GetEntriesParams["distribution"];
|
|
1905
|
+
distribution_params?: {
|
|
1906
|
+
curveFactor?: number;
|
|
1907
|
+
stdDevFactor?: number;
|
|
1908
|
+
lambda?: number;
|
|
1909
|
+
};
|
|
1910
|
+
};
|
|
1911
|
+
}): {
|
|
1912
|
+
fee: number;
|
|
1913
|
+
risk_per_trade: number;
|
|
1914
|
+
risk_reward: number;
|
|
1915
|
+
symbol?: string;
|
|
1916
|
+
focus: number;
|
|
1917
|
+
budget: number;
|
|
1918
|
+
support: number;
|
|
1919
|
+
resistance: number;
|
|
1920
|
+
percent_change: number;
|
|
1921
|
+
tradeSplit?: number;
|
|
1922
|
+
take_profit?: number;
|
|
1923
|
+
kind: "long" | "short";
|
|
1924
|
+
entry: number;
|
|
1925
|
+
stop: number;
|
|
1926
|
+
min_size: number;
|
|
1927
|
+
price_places?: string;
|
|
1928
|
+
strategy?: "quantity" | "entry";
|
|
1929
|
+
as_array?: boolean;
|
|
1930
|
+
decimal_places?: string;
|
|
1931
|
+
min_profit?: number;
|
|
1932
|
+
raw?: boolean;
|
|
1933
|
+
gap?: number;
|
|
1934
|
+
rr?: number;
|
|
1935
|
+
max_size?: number;
|
|
1936
|
+
last_value?: any;
|
|
1937
|
+
max_quantity?: number;
|
|
1938
|
+
kelly?: {
|
|
1939
|
+
use_kelly?: boolean;
|
|
1940
|
+
kelly_confidence_factor?: number;
|
|
1941
|
+
kelly_minimum_risk?: number;
|
|
1942
|
+
kelly_prediction_model?: "exponential" | "normal" | "uniform";
|
|
1943
|
+
kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
|
|
1944
|
+
};
|
|
1945
|
+
distribution?: GetEntriesParams["distribution"];
|
|
1946
|
+
distribution_params?: {
|
|
1947
|
+
curveFactor?: number;
|
|
1948
|
+
stdDevFactor?: number;
|
|
1949
|
+
lambda?: number;
|
|
1950
|
+
};
|
|
1951
|
+
};
|
|
1952
|
+
export declare function generateDangerousConfig(payload: {
|
|
1953
|
+
account: PositionsView;
|
|
1954
|
+
global_config: GlobalConfig;
|
|
1955
|
+
config: {
|
|
1956
|
+
quantity: number;
|
|
1957
|
+
stop: number;
|
|
1958
|
+
entry: number;
|
|
1959
|
+
};
|
|
1960
|
+
}): {
|
|
1961
|
+
entry: number;
|
|
1962
|
+
risk: number;
|
|
1963
|
+
stop: number;
|
|
1964
|
+
risk_reward: number | {
|
|
1965
|
+
result: any[];
|
|
1966
|
+
value: number;
|
|
1967
|
+
total: number;
|
|
1968
|
+
risk_per_trade: number;
|
|
1969
|
+
max: number;
|
|
1970
|
+
min: number;
|
|
1971
|
+
avg_size: any;
|
|
1972
|
+
neg_pnl: any;
|
|
1973
|
+
entry: any;
|
|
1974
|
+
};
|
|
1975
|
+
};
|
|
1976
|
+
export interface ComputedTrade {
|
|
1977
|
+
entry: number;
|
|
1978
|
+
quantity: number;
|
|
1979
|
+
avg_size: number;
|
|
1980
|
+
neg_pnl: number;
|
|
1981
|
+
avg_entry: number;
|
|
1982
|
+
stop: number;
|
|
1983
|
+
reverse_avg_entry: number;
|
|
1984
|
+
reverse_avg_quantity: number;
|
|
1985
|
+
fee: number;
|
|
1986
|
+
}
|
|
1987
|
+
export type TradeConfig = {
|
|
1988
|
+
entry: number;
|
|
1989
|
+
stop: number;
|
|
1990
|
+
risk_reward: number;
|
|
1991
|
+
risk: number;
|
|
1992
|
+
symbol: string;
|
|
1993
|
+
distribution?: GetEntriesParams["distribution"];
|
|
1994
|
+
distribution_params?: {
|
|
1995
|
+
curveFactor?: number;
|
|
1996
|
+
stdDevFactor?: number;
|
|
1997
|
+
lambda?: number;
|
|
1998
|
+
};
|
|
1999
|
+
};
|
|
2000
|
+
declare function constructAppConfig$1({ config, global_config, }: {
|
|
2001
|
+
config: TradeConfig;
|
|
2002
|
+
global_config: GlobalConfig;
|
|
2003
|
+
}): {
|
|
2004
|
+
fee: number;
|
|
2005
|
+
risk_per_trade: number;
|
|
2006
|
+
risk_reward: number;
|
|
2007
|
+
symbol?: string;
|
|
2008
|
+
focus: number;
|
|
2009
|
+
budget: number;
|
|
2010
|
+
support: number;
|
|
2011
|
+
resistance: number;
|
|
2012
|
+
percent_change: number;
|
|
2013
|
+
tradeSplit?: number;
|
|
2014
|
+
take_profit?: number;
|
|
2015
|
+
kind: "long" | "short";
|
|
2016
|
+
entry: number;
|
|
2017
|
+
stop: number;
|
|
2018
|
+
min_size: number;
|
|
2019
|
+
price_places?: string;
|
|
2020
|
+
strategy?: "quantity" | "entry";
|
|
2021
|
+
as_array?: boolean;
|
|
2022
|
+
decimal_places?: string;
|
|
2023
|
+
min_profit?: number;
|
|
2024
|
+
raw?: boolean;
|
|
2025
|
+
gap?: number;
|
|
2026
|
+
rr?: number;
|
|
2027
|
+
max_size?: number;
|
|
2028
|
+
last_value?: any;
|
|
2029
|
+
max_quantity?: number;
|
|
2030
|
+
kelly?: {
|
|
2031
|
+
use_kelly?: boolean;
|
|
2032
|
+
kelly_confidence_factor?: number;
|
|
2033
|
+
kelly_minimum_risk?: number;
|
|
2034
|
+
kelly_prediction_model?: "exponential" | "normal" | "uniform";
|
|
2035
|
+
kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
|
|
2036
|
+
};
|
|
2037
|
+
distribution?: GetEntriesParams["distribution"];
|
|
2038
|
+
distribution_params?: {
|
|
2039
|
+
curveFactor?: number;
|
|
2040
|
+
stdDevFactor?: number;
|
|
2041
|
+
lambda?: number;
|
|
2042
|
+
};
|
|
2043
|
+
};
|
|
2044
|
+
declare function buildWithOptimumReward({ config, settings, global_config, force_exact, }: {
|
|
2045
|
+
config: TradeConfig;
|
|
2046
|
+
global_config: GlobalConfig;
|
|
2047
|
+
settings: {
|
|
2048
|
+
entry?: number;
|
|
2049
|
+
stop?: number;
|
|
2050
|
+
risk: number;
|
|
2051
|
+
stop_ratio?: number;
|
|
2052
|
+
risk_reward?: number;
|
|
2053
|
+
distribution?: GetEntriesParams["distribution"];
|
|
2054
|
+
distribution_params?: {
|
|
2055
|
+
curveFactor?: number;
|
|
2056
|
+
stdDevFactor?: number;
|
|
2057
|
+
lambda?: number;
|
|
2058
|
+
};
|
|
2059
|
+
};
|
|
2060
|
+
force_exact?: boolean;
|
|
2061
|
+
}): {
|
|
2062
|
+
trades: any[];
|
|
2063
|
+
summary: {
|
|
2064
|
+
entry: number;
|
|
2065
|
+
stop: number;
|
|
2066
|
+
risk: number;
|
|
2067
|
+
risk_reward: any;
|
|
2068
|
+
avg_entry: number;
|
|
2069
|
+
avg_size: number;
|
|
2070
|
+
first_entry: number;
|
|
2071
|
+
pnl: number;
|
|
2072
|
+
fee: number;
|
|
2073
|
+
loss: number;
|
|
2074
|
+
last_entry: number;
|
|
2075
|
+
margin: number;
|
|
2076
|
+
};
|
|
2077
|
+
config: any;
|
|
2078
|
+
stop_order: {
|
|
2079
|
+
quantity: number;
|
|
2080
|
+
price: number;
|
|
2081
|
+
};
|
|
2082
|
+
kind: string;
|
|
2083
|
+
};
|
|
2084
|
+
declare function generateOppositeOptimum({ config, global_config, settings, ratio, distribution, distribution_params, risk_factor, }: {
|
|
2085
|
+
settings: {
|
|
2086
|
+
entry: number;
|
|
2087
|
+
stop: number;
|
|
2088
|
+
risk: number;
|
|
2089
|
+
};
|
|
2090
|
+
config: TradeConfig;
|
|
2091
|
+
global_config: GlobalConfig;
|
|
2092
|
+
fee_percent?: number;
|
|
2093
|
+
ratio?: number;
|
|
2094
|
+
distribution?: any;
|
|
2095
|
+
distribution_params?: {
|
|
2096
|
+
curveFactor?: number;
|
|
2097
|
+
stdDevFactor?: number;
|
|
2098
|
+
lambda?: number;
|
|
2099
|
+
};
|
|
2100
|
+
risk_factor?: number;
|
|
2101
|
+
}): {
|
|
2102
|
+
trades: any[];
|
|
2103
|
+
summary: any;
|
|
2104
|
+
config: {
|
|
2105
|
+
entry: number;
|
|
2106
|
+
stop: number;
|
|
2107
|
+
risk: number;
|
|
2108
|
+
distribution: any;
|
|
2109
|
+
distribution_params: {
|
|
2110
|
+
curveFactor?: number;
|
|
2111
|
+
stdDevFactor?: number;
|
|
2112
|
+
lambda?: number;
|
|
2113
|
+
};
|
|
2114
|
+
risk_factor: number;
|
|
2115
|
+
};
|
|
2116
|
+
kind: string;
|
|
2117
|
+
} | {
|
|
2118
|
+
trades: any[];
|
|
2119
|
+
summary: {
|
|
2120
|
+
entry: number;
|
|
2121
|
+
stop: number;
|
|
2122
|
+
risk: number;
|
|
2123
|
+
risk_reward: any;
|
|
2124
|
+
avg_entry: number;
|
|
2125
|
+
avg_size: number;
|
|
2126
|
+
first_entry: number;
|
|
2127
|
+
pnl: number;
|
|
2128
|
+
fee: number;
|
|
2129
|
+
loss: number;
|
|
2130
|
+
last_entry: number;
|
|
2131
|
+
defaultEntry: number;
|
|
2132
|
+
};
|
|
2133
|
+
config: any;
|
|
2134
|
+
kind: string;
|
|
2135
|
+
};
|
|
2136
|
+
declare function increaseTradeHelper({ increase_qty, stop, config, global_config, style, entry, position, stop_ratio, distribution: default_distribution, distribution_params: default_distribution_params, }: {
|
|
2137
|
+
position: {
|
|
2138
|
+
entry: number;
|
|
2139
|
+
quantity: number;
|
|
2140
|
+
};
|
|
2141
|
+
entry: number;
|
|
2142
|
+
stop: number;
|
|
2143
|
+
config: TradeConfig;
|
|
2144
|
+
global_config: GlobalConfig;
|
|
2145
|
+
increase_qty: number;
|
|
2146
|
+
style: "minimum" | "optimum";
|
|
2147
|
+
stop_ratio?: number;
|
|
2148
|
+
distribution?: any;
|
|
2149
|
+
distribution_params?: {
|
|
2150
|
+
curveFactor?: number;
|
|
2151
|
+
stdDevFactor?: number;
|
|
2152
|
+
lambda?: number;
|
|
2153
|
+
};
|
|
2154
|
+
}): {
|
|
2155
|
+
trades: any[];
|
|
2156
|
+
summary: any;
|
|
2157
|
+
config: any;
|
|
2158
|
+
kind: string;
|
|
2159
|
+
current: {
|
|
2160
|
+
trades: any[];
|
|
2161
|
+
summary: {
|
|
2162
|
+
first_entry: number;
|
|
2163
|
+
last_entry: number;
|
|
2164
|
+
quantity: number;
|
|
2165
|
+
entry: number;
|
|
2166
|
+
loss: number;
|
|
2167
|
+
number_of_trades: number;
|
|
2168
|
+
fee: number;
|
|
2169
|
+
anchor_pnl: any;
|
|
2170
|
+
};
|
|
2171
|
+
};
|
|
2172
|
+
stop_order?: undefined;
|
|
2173
|
+
} | {
|
|
2174
|
+
trades: any[];
|
|
2175
|
+
summary: {
|
|
2176
|
+
entry: number;
|
|
2177
|
+
stop: number;
|
|
2178
|
+
risk: number;
|
|
2179
|
+
risk_reward: any;
|
|
2180
|
+
avg_entry: number;
|
|
2181
|
+
avg_size: number;
|
|
2182
|
+
first_entry: number;
|
|
2183
|
+
pnl: number;
|
|
2184
|
+
fee: number;
|
|
2185
|
+
loss: number;
|
|
2186
|
+
last_entry: number;
|
|
2187
|
+
margin: number;
|
|
2188
|
+
};
|
|
2189
|
+
stop_order: {
|
|
2190
|
+
quantity: number;
|
|
2191
|
+
price: number;
|
|
2192
|
+
};
|
|
2193
|
+
config: any;
|
|
2194
|
+
kind: string;
|
|
2195
|
+
current: {
|
|
2196
|
+
trades: any[];
|
|
2197
|
+
summary: {
|
|
2198
|
+
first_entry: number;
|
|
2199
|
+
last_entry: number;
|
|
2200
|
+
quantity: number;
|
|
2201
|
+
entry: number;
|
|
2202
|
+
loss: number;
|
|
2203
|
+
number_of_trades: number;
|
|
2204
|
+
fee: number;
|
|
2205
|
+
anchor_pnl: any;
|
|
2206
|
+
};
|
|
2207
|
+
};
|
|
2208
|
+
};
|
|
2209
|
+
declare function generatePositionIncreaseTrade({ account, zoneAccount, ratio, config, global_config, style, distribution, distribution_params, }: {
|
|
2210
|
+
style?: "optimum" | "minimum";
|
|
2211
|
+
account: {
|
|
2212
|
+
long: {
|
|
2213
|
+
entry: number;
|
|
2214
|
+
quantity: number;
|
|
2215
|
+
};
|
|
2216
|
+
short: {
|
|
2217
|
+
entry: number;
|
|
2218
|
+
quantity: number;
|
|
2219
|
+
};
|
|
2220
|
+
};
|
|
2221
|
+
config: TradeConfig;
|
|
2222
|
+
global_config: GlobalConfig;
|
|
2223
|
+
zoneAccount: {
|
|
2224
|
+
entry: number;
|
|
2225
|
+
stop: number;
|
|
2226
|
+
};
|
|
2227
|
+
ratio?: number;
|
|
2228
|
+
distribution?: any;
|
|
2229
|
+
distribution_params?: {
|
|
2230
|
+
curveFactor?: number;
|
|
2231
|
+
stdDevFactor?: number;
|
|
2232
|
+
lambda?: number;
|
|
2233
|
+
};
|
|
2234
|
+
}): {
|
|
2235
|
+
trades: any[];
|
|
2236
|
+
summary: any;
|
|
2237
|
+
config: any;
|
|
2238
|
+
kind: string;
|
|
2239
|
+
current: {
|
|
2240
|
+
trades: any[];
|
|
2241
|
+
summary: {
|
|
2242
|
+
first_entry: number;
|
|
2243
|
+
last_entry: number;
|
|
2244
|
+
quantity: number;
|
|
2245
|
+
entry: number;
|
|
2246
|
+
loss: number;
|
|
2247
|
+
number_of_trades: number;
|
|
2248
|
+
fee: number;
|
|
2249
|
+
anchor_pnl: any;
|
|
2250
|
+
};
|
|
2251
|
+
};
|
|
2252
|
+
stop_order?: undefined;
|
|
2253
|
+
} | {
|
|
2254
|
+
trades: any[];
|
|
2255
|
+
summary: {
|
|
2256
|
+
entry: number;
|
|
2257
|
+
stop: number;
|
|
2258
|
+
risk: number;
|
|
2259
|
+
risk_reward: any;
|
|
2260
|
+
avg_entry: number;
|
|
2261
|
+
avg_size: number;
|
|
2262
|
+
first_entry: number;
|
|
2263
|
+
pnl: number;
|
|
2264
|
+
fee: number;
|
|
2265
|
+
loss: number;
|
|
2266
|
+
last_entry: number;
|
|
2267
|
+
margin: number;
|
|
2268
|
+
};
|
|
2269
|
+
stop_order: {
|
|
2270
|
+
quantity: number;
|
|
2271
|
+
price: number;
|
|
2272
|
+
};
|
|
2273
|
+
config: any;
|
|
2274
|
+
kind: string;
|
|
2275
|
+
current: {
|
|
2276
|
+
trades: any[];
|
|
2277
|
+
summary: {
|
|
2278
|
+
first_entry: number;
|
|
2279
|
+
last_entry: number;
|
|
2280
|
+
quantity: number;
|
|
2281
|
+
entry: number;
|
|
2282
|
+
loss: number;
|
|
2283
|
+
number_of_trades: number;
|
|
2284
|
+
fee: number;
|
|
2285
|
+
anchor_pnl: any;
|
|
2286
|
+
};
|
|
2287
|
+
};
|
|
2288
|
+
};
|
|
2289
|
+
declare function determineHedgeTradeToPlace({ position, config, global_config, profit_risk, allowable_loss, }: {
|
|
2290
|
+
position: {
|
|
2291
|
+
entry: number;
|
|
2292
|
+
quantity: number;
|
|
2293
|
+
kind: "long" | "short";
|
|
2294
|
+
};
|
|
2295
|
+
config: TradeConfig;
|
|
2296
|
+
global_config: GlobalConfig;
|
|
2297
|
+
profit_risk?: number;
|
|
2298
|
+
allowable_loss?: number;
|
|
2299
|
+
}): {
|
|
2300
|
+
opposite: {
|
|
2301
|
+
trades: any[];
|
|
2302
|
+
summary: {
|
|
2303
|
+
entry: number;
|
|
2304
|
+
stop: number;
|
|
2305
|
+
risk: number;
|
|
2306
|
+
risk_reward: any;
|
|
2307
|
+
avg_entry: number;
|
|
2308
|
+
avg_size: number;
|
|
2309
|
+
first_entry: number;
|
|
2310
|
+
pnl: number;
|
|
2311
|
+
fee: number;
|
|
2312
|
+
loss: number;
|
|
2313
|
+
last_entry: number;
|
|
2314
|
+
margin: number;
|
|
2315
|
+
};
|
|
2316
|
+
config: any;
|
|
2317
|
+
stop_order: {
|
|
2318
|
+
quantity: number;
|
|
2319
|
+
price: number;
|
|
2320
|
+
};
|
|
2321
|
+
kind: string;
|
|
2322
|
+
};
|
|
2323
|
+
take_profit: number;
|
|
2324
|
+
};
|
|
2325
|
+
export declare const compoundAPI: {
|
|
2326
|
+
determineHedgeTradeToPlace: typeof determineHedgeTradeToPlace;
|
|
2327
|
+
buildWithOptimumReward: typeof buildWithOptimumReward;
|
|
2328
|
+
constructAppConfig: typeof constructAppConfig$1;
|
|
2329
|
+
generateOppositeOptimum: typeof generateOppositeOptimum;
|
|
2330
|
+
increaseTradeHelper: typeof increaseTradeHelper;
|
|
2331
|
+
generatePositionIncreaseTrade: typeof generatePositionIncreaseTrade;
|
|
2332
|
+
};
|
|
2333
|
+
export type ExchangeOrder = {
|
|
2334
|
+
symbol: string;
|
|
2335
|
+
price: number;
|
|
2336
|
+
quantity: number;
|
|
2337
|
+
kind: "long" | "short";
|
|
2338
|
+
side: "buy" | "sell";
|
|
2339
|
+
stop: number;
|
|
2340
|
+
order_id: string;
|
|
2341
|
+
triggerPrice?: number;
|
|
1156
2342
|
};
|
|
1157
|
-
declare class ExchangePosition {
|
|
2343
|
+
export declare class ExchangePosition {
|
|
1158
2344
|
exchange: BaseExchange;
|
|
1159
2345
|
exchange_account: ExchangeAccount$1;
|
|
1160
2346
|
private app_db;
|
|
1161
2347
|
private instance;
|
|
2348
|
+
orders: {
|
|
2349
|
+
entries: ExchangeOrder[];
|
|
2350
|
+
stop_orders: ExchangeOrder[];
|
|
2351
|
+
tp_orders: ExchangeOrder[];
|
|
2352
|
+
};
|
|
1162
2353
|
constructor(payload: {
|
|
1163
2354
|
exchange: BaseExchange;
|
|
1164
2355
|
app_db: AppDatabase;
|
|
1165
2356
|
instance: PositionsView;
|
|
1166
2357
|
exchange_account: ExchangeAccount$1;
|
|
1167
2358
|
without_view?: PositionsView;
|
|
2359
|
+
orders?: {
|
|
2360
|
+
entries: any[];
|
|
2361
|
+
stop_orders: any[];
|
|
2362
|
+
tp_orders: any[];
|
|
2363
|
+
};
|
|
1168
2364
|
});
|
|
2365
|
+
get symbol_config(): SymbolConfig;
|
|
2366
|
+
initialize(): Promise<void>;
|
|
2367
|
+
getInstance(): PositionsView;
|
|
1169
2368
|
get symbol(): any;
|
|
1170
2369
|
get kind(): any;
|
|
1171
|
-
get account():
|
|
2370
|
+
get account(): ExchangeAccount;
|
|
2371
|
+
get compound(): CompoundInstance & {
|
|
2372
|
+
amount_to_risk?: number;
|
|
2373
|
+
profit_percent?: number;
|
|
2374
|
+
};
|
|
2375
|
+
getProxyForAccount(): Promise<HttpsProxyAgent<`http://${string}`> | SocksProxyAgent>;
|
|
1172
2376
|
cancelOrders(payload: {
|
|
1173
2377
|
limit?: boolean;
|
|
1174
2378
|
price?: number;
|
|
1175
|
-
|
|
2379
|
+
raw?: boolean;
|
|
2380
|
+
}): Promise<any[] | {
|
|
1176
2381
|
success: boolean;
|
|
1177
2382
|
message: string;
|
|
1178
2383
|
exchange_result?: undefined;
|
|
@@ -1197,9 +2402,10 @@ declare class ExchangePosition {
|
|
|
1197
2402
|
profit_percent?: number;
|
|
1198
2403
|
place_tp?: boolean;
|
|
1199
2404
|
profit?: number;
|
|
2405
|
+
reduce_ratio?: number;
|
|
1200
2406
|
};
|
|
1201
2407
|
}): Promise<import("pocketbase").RecordModel | ScheduledTrade>;
|
|
1202
|
-
updateTargetPnl(): Promise<
|
|
2408
|
+
updateTargetPnl(): Promise<any>;
|
|
1203
2409
|
updateConfigPnl(): Promise<void>;
|
|
1204
2410
|
triggerTradeFromConfig(payload: {
|
|
1205
2411
|
place?: boolean;
|
|
@@ -1208,8 +2414,11 @@ declare class ExchangePosition {
|
|
|
1208
2414
|
stop?: boolean;
|
|
1209
2415
|
use_current?: boolean;
|
|
1210
2416
|
ignore_config?: boolean;
|
|
2417
|
+
risky?: boolean;
|
|
2418
|
+
hedge?: boolean;
|
|
2419
|
+
stop_ratio?: number;
|
|
1211
2420
|
}): Promise<any>;
|
|
1212
|
-
placeSharedOrder(action: "place_limit_orders" | "place_stop_orders" | "place_tp_orders", payload: {
|
|
2421
|
+
placeSharedOrder(action: "place_limit_orders" | "place_stop_orders" | "place_tp_orders" | "dangerous_entry_orders", payload: {
|
|
1213
2422
|
entry: number;
|
|
1214
2423
|
stop: number;
|
|
1215
2424
|
risk_reward: number;
|
|
@@ -1218,6 +2427,15 @@ declare class ExchangePosition {
|
|
|
1218
2427
|
update_db?: boolean;
|
|
1219
2428
|
raw?: boolean;
|
|
1220
2429
|
use_current?: boolean;
|
|
2430
|
+
stop_percent?: number;
|
|
2431
|
+
distribution?: GetEntriesParams["distribution"];
|
|
2432
|
+
distribution_params?: {
|
|
2433
|
+
curveFactor?: number;
|
|
2434
|
+
stdDevFactor?: number;
|
|
2435
|
+
lambda?: number;
|
|
2436
|
+
};
|
|
2437
|
+
hedge?: boolean;
|
|
2438
|
+
stop_ratio?: number;
|
|
1221
2439
|
}): Promise<any>;
|
|
1222
2440
|
buildAppConfig(payload: {
|
|
1223
2441
|
entry: number;
|
|
@@ -1227,6 +2445,18 @@ declare class ExchangePosition {
|
|
|
1227
2445
|
profit?: number;
|
|
1228
2446
|
update_db?: boolean;
|
|
1229
2447
|
profit_percent?: number;
|
|
2448
|
+
use_kelly?: boolean;
|
|
2449
|
+
kelly_confidence_factor?: number;
|
|
2450
|
+
kelly_minimum_risk?: number;
|
|
2451
|
+
kelly_prediction_model?: "exponential" | "normal" | "uniform";
|
|
2452
|
+
kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
|
|
2453
|
+
distribution?: GetEntriesParams["distribution"];
|
|
2454
|
+
distribution_params?: {
|
|
2455
|
+
curveFactor?: number;
|
|
2456
|
+
stdDevFactor?: number;
|
|
2457
|
+
lambda?: number;
|
|
2458
|
+
};
|
|
2459
|
+
use_progressive_risk?: boolean;
|
|
1230
2460
|
}): Promise<AppConfig>;
|
|
1231
2461
|
placeConfigOrders(app_config: AppConfig, solution: {
|
|
1232
2462
|
risk_reward: number;
|
|
@@ -1237,6 +2467,19 @@ declare class ExchangePosition {
|
|
|
1237
2467
|
neg_pnl: number;
|
|
1238
2468
|
min_size: number;
|
|
1239
2469
|
symbol: string;
|
|
2470
|
+
stop_percent?: number;
|
|
2471
|
+
use_kelly?: boolean;
|
|
2472
|
+
kelly_confidence_factor?: number;
|
|
2473
|
+
kelly_minimum_risk?: number;
|
|
2474
|
+
kelly_prediction_model?: "exponential" | "normal" | "uniform";
|
|
2475
|
+
kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
|
|
2476
|
+
distribution?: GetEntriesParams["distribution"];
|
|
2477
|
+
distribution_params?: {
|
|
2478
|
+
curveFactor?: number;
|
|
2479
|
+
stdDevFactor?: number;
|
|
2480
|
+
lambda?: number;
|
|
2481
|
+
};
|
|
2482
|
+
use_progressive_risk?: boolean;
|
|
1240
2483
|
}, place?: boolean, skip_stop?: boolean): Promise<{
|
|
1241
2484
|
entry_orders: {
|
|
1242
2485
|
orders: {
|
|
@@ -1277,17 +2520,320 @@ declare class ExchangePosition {
|
|
|
1277
2520
|
tp?: boolean;
|
|
1278
2521
|
stop?: boolean;
|
|
1279
2522
|
raw?: boolean;
|
|
2523
|
+
limit?: boolean;
|
|
1280
2524
|
cancel?: boolean;
|
|
1281
2525
|
ignore_config?: boolean;
|
|
2526
|
+
risky?: boolean;
|
|
2527
|
+
target_pnl?: number;
|
|
2528
|
+
hedge?: boolean;
|
|
2529
|
+
stop_ratio?: number;
|
|
2530
|
+
}): Promise<any>;
|
|
2531
|
+
placeStopLimit(payload: {
|
|
2532
|
+
place?: boolean;
|
|
2533
|
+
stop: number;
|
|
2534
|
+
quantity?: number;
|
|
2535
|
+
}): Promise<any>;
|
|
2536
|
+
computeTargetPnl(payload: {
|
|
2537
|
+
secondary: ExchangePosition;
|
|
2538
|
+
}): Promise<number>;
|
|
2539
|
+
runSimulation(payload: {
|
|
2540
|
+
iterations?: number;
|
|
2541
|
+
long_position: ExchangePosition;
|
|
2542
|
+
short_position: ExchangePosition;
|
|
2543
|
+
raw?: boolean;
|
|
2544
|
+
}): Promise<Strategy | {
|
|
2545
|
+
last_entry: any;
|
|
2546
|
+
first_entry: any;
|
|
2547
|
+
threshold: any;
|
|
2548
|
+
risk: number;
|
|
2549
|
+
risk_reward: number;
|
|
2550
|
+
spread: number;
|
|
2551
|
+
gap_loss: number;
|
|
2552
|
+
net_profit: number;
|
|
2553
|
+
long: {
|
|
2554
|
+
avg_entry: number;
|
|
2555
|
+
avg_size: number;
|
|
2556
|
+
loss: number;
|
|
2557
|
+
stop: number;
|
|
2558
|
+
stop_quantity: number;
|
|
2559
|
+
re_entry_quantity: number;
|
|
2560
|
+
initial_pnl: number;
|
|
2561
|
+
tp: number;
|
|
2562
|
+
incurred_loss: number;
|
|
2563
|
+
pnl: number;
|
|
2564
|
+
remaining_quantity: number;
|
|
2565
|
+
};
|
|
2566
|
+
short: {
|
|
2567
|
+
avg_entry: number;
|
|
2568
|
+
avg_size: number;
|
|
2569
|
+
loss: number;
|
|
2570
|
+
stop: number;
|
|
2571
|
+
stop_quantity: number;
|
|
2572
|
+
re_entry_quantity: number;
|
|
2573
|
+
initial_pnl: number;
|
|
2574
|
+
tp: number;
|
|
2575
|
+
incurred_loss: number;
|
|
2576
|
+
pnl: number;
|
|
2577
|
+
remaining_quantity: number;
|
|
2578
|
+
};
|
|
2579
|
+
}[]>;
|
|
2580
|
+
rawConfigUpdate(payload: any): Promise<void>;
|
|
2581
|
+
/**
|
|
2582
|
+
* This method is used to place the opposite trade action
|
|
2583
|
+
*/
|
|
2584
|
+
placeOppositeTradeAction(payload: {
|
|
2585
|
+
data: {
|
|
2586
|
+
avg: {
|
|
2587
|
+
quantity: number;
|
|
2588
|
+
price: number;
|
|
2589
|
+
};
|
|
2590
|
+
entry: number;
|
|
2591
|
+
stop: number;
|
|
2592
|
+
risk_per_trade: number;
|
|
2593
|
+
profit_percent: number;
|
|
2594
|
+
risk_reward: number;
|
|
2595
|
+
};
|
|
2596
|
+
}): Promise<void>;
|
|
2597
|
+
/**
|
|
2598
|
+
* Updates the risk configuration for an empty position using the next_risk value.
|
|
2599
|
+
* This implements progressive risk management where successful trades increase future risk tolerance.
|
|
2600
|
+
*
|
|
2601
|
+
* @param payload.symbol - The trading symbol (e.g., "BTCUSDT")
|
|
2602
|
+
* @param payload.kind - Position type: "long" or "short"
|
|
2603
|
+
* @returns Object indicating if update was successful with old/new risk values
|
|
2604
|
+
*/
|
|
2605
|
+
updateRiskOnEmpty(): Promise<{
|
|
2606
|
+
updated: boolean;
|
|
2607
|
+
symbol: any;
|
|
2608
|
+
kind: any;
|
|
2609
|
+
old_risk: number;
|
|
2610
|
+
new_risk: number;
|
|
2611
|
+
reason?: undefined;
|
|
2612
|
+
} | {
|
|
2613
|
+
updated: boolean;
|
|
2614
|
+
symbol: any;
|
|
2615
|
+
kind: any;
|
|
2616
|
+
reason: string;
|
|
2617
|
+
old_risk?: undefined;
|
|
2618
|
+
new_risk?: undefined;
|
|
2619
|
+
}>;
|
|
2620
|
+
increasePositionAtStop(payload: {
|
|
2621
|
+
place?: boolean;
|
|
2622
|
+
price?: number;
|
|
2623
|
+
quantity?: number;
|
|
2624
|
+
increase?: boolean;
|
|
2625
|
+
ratio_to_loose?: number;
|
|
2626
|
+
reverse_position?: ExchangePosition;
|
|
2627
|
+
increase_ratio?: number;
|
|
2628
|
+
}): Promise<any>;
|
|
2629
|
+
lockReduction({ pnl, place, pause_tp, }: {
|
|
2630
|
+
pnl: number;
|
|
2631
|
+
place?: boolean;
|
|
2632
|
+
pause_tp?: boolean;
|
|
2633
|
+
}): Promise<{
|
|
2634
|
+
sell_ratio: number;
|
|
2635
|
+
current_pnl: number;
|
|
2636
|
+
profit_percent: number;
|
|
2637
|
+
current_price: number;
|
|
2638
|
+
notional_value: number;
|
|
2639
|
+
}>;
|
|
2640
|
+
placeSingleOrder(payload: {
|
|
2641
|
+
long_position: ExchangePosition;
|
|
2642
|
+
short_position: ExchangePosition;
|
|
2643
|
+
}): Promise<string>;
|
|
2644
|
+
placeMarketOrder(payload: {
|
|
2645
|
+
quantity?: number;
|
|
2646
|
+
close?: boolean;
|
|
2647
|
+
}): Promise<void>;
|
|
2648
|
+
generate_config_params(payload: {
|
|
2649
|
+
entry: number;
|
|
2650
|
+
stop: number;
|
|
2651
|
+
risk_reward: number;
|
|
2652
|
+
risk: number;
|
|
2653
|
+
with_trades?: boolean;
|
|
2654
|
+
}): Promise<any>;
|
|
2655
|
+
extrapolateConfig(payload: {
|
|
2656
|
+
risk_reward?: number;
|
|
2657
|
+
risk?: number;
|
|
2658
|
+
kind?: "long" | "short";
|
|
2659
|
+
}): Promise<any>;
|
|
2660
|
+
build_short_order(): Promise<any>;
|
|
2661
|
+
/**
|
|
2662
|
+
* This function builds a config for a symbol
|
|
2663
|
+
* @param payload
|
|
2664
|
+
* @returns
|
|
2665
|
+
*/
|
|
2666
|
+
buildConfigForSymbol(payload: {
|
|
2667
|
+
risk: number;
|
|
2668
|
+
risk_reward?: number;
|
|
2669
|
+
as_config?: boolean;
|
|
2670
|
+
with_trades?: boolean;
|
|
2671
|
+
}): Promise<any>;
|
|
2672
|
+
buildTrades(payload: {
|
|
2673
|
+
risk?: number;
|
|
2674
|
+
use_progressive_risk?: boolean;
|
|
2675
|
+
}): Promise<{
|
|
2676
|
+
trades: any[];
|
|
2677
|
+
actual_trades: any[];
|
|
2678
|
+
max_size: any;
|
|
2679
|
+
last_price: any;
|
|
2680
|
+
total_size: number;
|
|
2681
|
+
avg_entry: number;
|
|
2682
|
+
}>;
|
|
2683
|
+
tradeConfig(payload: {
|
|
2684
|
+
override?: any;
|
|
2685
|
+
}): Promise<AppConfig>;
|
|
2686
|
+
getOrCreatePositionConfig(payload: {
|
|
2687
|
+
risk?: number;
|
|
2688
|
+
risk_reward?: number;
|
|
2689
|
+
}): Promise<import("pocketbase").RecordModel | ScheduledTrade>;
|
|
2690
|
+
getOppositeConfig(payload: {
|
|
2691
|
+
ratio?: number;
|
|
2692
|
+
}): {
|
|
2693
|
+
entry: number;
|
|
2694
|
+
stop: number;
|
|
2695
|
+
risk: number;
|
|
2696
|
+
risk_reward: number | {
|
|
2697
|
+
result: any[];
|
|
2698
|
+
value: number;
|
|
2699
|
+
total: number;
|
|
2700
|
+
risk_per_trade: number;
|
|
2701
|
+
max: number;
|
|
2702
|
+
min: number;
|
|
2703
|
+
avg_size: any;
|
|
2704
|
+
neg_pnl: any;
|
|
2705
|
+
entry: any;
|
|
2706
|
+
};
|
|
2707
|
+
};
|
|
2708
|
+
getOptimumRiskReward(): Promise<number | {
|
|
2709
|
+
result: any[];
|
|
2710
|
+
value: number;
|
|
2711
|
+
total: number;
|
|
2712
|
+
risk_per_trade: number;
|
|
2713
|
+
max: number;
|
|
2714
|
+
min: number;
|
|
2715
|
+
avg_size: any;
|
|
2716
|
+
neg_pnl: any;
|
|
2717
|
+
entry: any;
|
|
2718
|
+
}>;
|
|
2719
|
+
get appConfig(): {
|
|
2720
|
+
fee: number;
|
|
2721
|
+
risk_per_trade: number;
|
|
2722
|
+
risk_reward: number;
|
|
2723
|
+
symbol?: string;
|
|
2724
|
+
focus: number;
|
|
2725
|
+
budget: number;
|
|
2726
|
+
support: number;
|
|
2727
|
+
resistance: number;
|
|
2728
|
+
percent_change: number;
|
|
2729
|
+
tradeSplit?: number;
|
|
2730
|
+
take_profit?: number;
|
|
2731
|
+
kind: "long" | "short";
|
|
2732
|
+
entry: number;
|
|
2733
|
+
stop: number;
|
|
2734
|
+
min_size: number;
|
|
2735
|
+
price_places?: string;
|
|
2736
|
+
strategy?: "quantity" | "entry";
|
|
2737
|
+
as_array?: boolean;
|
|
2738
|
+
decimal_places?: string;
|
|
2739
|
+
min_profit?: number;
|
|
2740
|
+
raw?: boolean;
|
|
2741
|
+
gap?: number;
|
|
2742
|
+
rr?: number;
|
|
2743
|
+
max_size?: number;
|
|
2744
|
+
last_value?: any;
|
|
2745
|
+
max_quantity?: number;
|
|
2746
|
+
kelly?: {
|
|
2747
|
+
use_kelly?: boolean;
|
|
2748
|
+
kelly_confidence_factor?: number;
|
|
2749
|
+
kelly_minimum_risk?: number;
|
|
2750
|
+
kelly_prediction_model?: "exponential" | "normal" | "uniform";
|
|
2751
|
+
kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
|
|
2752
|
+
};
|
|
2753
|
+
distribution?: GetEntriesParams["distribution"];
|
|
2754
|
+
distribution_params?: {
|
|
2755
|
+
curveFactor?: number;
|
|
2756
|
+
stdDevFactor?: number;
|
|
2757
|
+
lambda?: number;
|
|
2758
|
+
};
|
|
2759
|
+
};
|
|
2760
|
+
updateProfitPercentWithRisk(payload: {
|
|
2761
|
+
focus_position: ExchangePosition;
|
|
2762
|
+
}): Promise<{
|
|
2763
|
+
profit_percent: number;
|
|
2764
|
+
take_profit: number;
|
|
2765
|
+
last_order: number;
|
|
2766
|
+
}>;
|
|
2767
|
+
getOrders(payload: {
|
|
2768
|
+
type?: "limit" | "stop" | "tp";
|
|
2769
|
+
}): {
|
|
2770
|
+
symbol: any;
|
|
2771
|
+
price: any;
|
|
2772
|
+
quantity: any;
|
|
2773
|
+
kind: any;
|
|
2774
|
+
side: any;
|
|
2775
|
+
stop: any;
|
|
2776
|
+
order_id: any;
|
|
2777
|
+
triggerPrice: any;
|
|
2778
|
+
client_order_id: any;
|
|
2779
|
+
}[];
|
|
2780
|
+
cancelExchangeOrder(payload: {
|
|
2781
|
+
type: "limit" | "stop" | "tp";
|
|
2782
|
+
refresh?: boolean;
|
|
2783
|
+
}): Promise<any>;
|
|
2784
|
+
placeDangerousTrade(payload: {
|
|
2785
|
+
entry: number;
|
|
2786
|
+
quantity: number;
|
|
2787
|
+
stop?: number;
|
|
2788
|
+
}): {
|
|
2789
|
+
entry: number;
|
|
2790
|
+
risk: number;
|
|
2791
|
+
stop: number;
|
|
2792
|
+
risk_reward: number | {
|
|
2793
|
+
result: any[];
|
|
2794
|
+
value: number;
|
|
2795
|
+
total: number;
|
|
2796
|
+
risk_per_trade: number;
|
|
2797
|
+
max: number;
|
|
2798
|
+
min: number;
|
|
2799
|
+
avg_size: any;
|
|
2800
|
+
neg_pnl: any;
|
|
2801
|
+
entry: any;
|
|
2802
|
+
};
|
|
2803
|
+
};
|
|
2804
|
+
followStop(payload: {
|
|
2805
|
+
focus_position: ExchangePosition;
|
|
2806
|
+
fee_percent?: number;
|
|
2807
|
+
place?: boolean;
|
|
1282
2808
|
}): Promise<any>;
|
|
2809
|
+
get support(): SupportTable;
|
|
2810
|
+
get linkedConfig(): ScheduledTrade;
|
|
2811
|
+
get isActiveTrade(): {
|
|
2812
|
+
config: ScheduledTrade;
|
|
2813
|
+
condition: boolean;
|
|
2814
|
+
};
|
|
2815
|
+
updateCompound(payload?: {
|
|
2816
|
+
place?: boolean;
|
|
2817
|
+
}): Promise<{
|
|
2818
|
+
support: number;
|
|
2819
|
+
counter: number;
|
|
2820
|
+
new_risk: number;
|
|
2821
|
+
condition: boolean;
|
|
2822
|
+
stop: number;
|
|
2823
|
+
}>;
|
|
2824
|
+
cleanOnActiveCompoundInstance(): Promise<void>;
|
|
1283
2825
|
}
|
|
1284
2826
|
declare class ExchangeAccount$1 {
|
|
1285
|
-
|
|
2827
|
+
instance: {
|
|
2828
|
+
owner: string;
|
|
2829
|
+
exchange: string;
|
|
2830
|
+
};
|
|
1286
2831
|
exchange: BaseExchange;
|
|
1287
2832
|
main_exchange?: BaseExchange;
|
|
1288
2833
|
private app_db;
|
|
1289
|
-
|
|
1290
|
-
|
|
2834
|
+
long_position?: ExchangePosition;
|
|
2835
|
+
short_position?: ExchangePosition;
|
|
2836
|
+
raw_positions?: PositionsView[];
|
|
1291
2837
|
constructor(payload: ExchangeType, options: {
|
|
1292
2838
|
exchange: BaseExchange;
|
|
1293
2839
|
app_db: AppDatabase;
|
|
@@ -1306,8 +2852,8 @@ declare class ExchangeAccount$1 {
|
|
|
1306
2852
|
}): Promise<import("pocketbase").RecordModel>;
|
|
1307
2853
|
initializePositions(payload: {
|
|
1308
2854
|
symbol: string;
|
|
1309
|
-
as_view?: boolean;
|
|
1310
2855
|
kind: "long" | "short";
|
|
2856
|
+
update?: boolean;
|
|
1311
2857
|
}): Promise<ExchangePosition>;
|
|
1312
2858
|
getActiveAccount(payload: {
|
|
1313
2859
|
symbol: string;
|
|
@@ -1330,6 +2876,7 @@ declare class ExchangeAccount$1 {
|
|
|
1330
2876
|
expand?: {
|
|
1331
2877
|
config: ScheduledTrade;
|
|
1332
2878
|
account: ExchangeAccount;
|
|
2879
|
+
proxy: Proxy$1;
|
|
1333
2880
|
};
|
|
1334
2881
|
})[]>;
|
|
1335
2882
|
syncAccount(options: {
|
|
@@ -1343,9 +2890,9 @@ declare class ExchangeAccount$1 {
|
|
|
1343
2890
|
expand?: {
|
|
1344
2891
|
config: ScheduledTrade;
|
|
1345
2892
|
account: ExchangeAccount;
|
|
2893
|
+
proxy: Proxy$1;
|
|
1346
2894
|
};
|
|
1347
2895
|
})[]>;
|
|
1348
|
-
getRunningInstanceFromDB(symbol: string): Promise<TradeBlockTracking>;
|
|
1349
2896
|
syncOrders(options: {
|
|
1350
2897
|
symbol: string;
|
|
1351
2898
|
kind?: "long" | "short";
|
|
@@ -1356,6 +2903,11 @@ declare class ExchangeAccount$1 {
|
|
|
1356
2903
|
kind: "long" | "short";
|
|
1357
2904
|
should_stop?: boolean;
|
|
1358
2905
|
}): Promise<import("pocketbase").RecordModel>;
|
|
2906
|
+
getFocusPosition(payload: {
|
|
2907
|
+
symbol: string;
|
|
2908
|
+
kind: "long" | "short";
|
|
2909
|
+
update?: boolean;
|
|
2910
|
+
}): Promise<ExchangePosition>;
|
|
1359
2911
|
cancelOrders(payload: {
|
|
1360
2912
|
symbol: string;
|
|
1361
2913
|
kind: "long" | "short";
|
|
@@ -1363,7 +2915,8 @@ declare class ExchangeAccount$1 {
|
|
|
1363
2915
|
all?: boolean;
|
|
1364
2916
|
stop?: boolean;
|
|
1365
2917
|
limit?: boolean;
|
|
1366
|
-
|
|
2918
|
+
raw?: boolean;
|
|
2919
|
+
}): Promise<any[] | {
|
|
1367
2920
|
success: boolean;
|
|
1368
2921
|
message: string;
|
|
1369
2922
|
exchange_result?: undefined;
|
|
@@ -1384,24 +2937,15 @@ declare class ExchangeAccount$1 {
|
|
|
1384
2937
|
orders: number[];
|
|
1385
2938
|
}): Promise<any>;
|
|
1386
2939
|
getBreakEvenPrice(payload: {
|
|
1387
|
-
symbol: string;
|
|
1388
|
-
}): Promise<{
|
|
1389
|
-
price: number;
|
|
1390
|
-
direction: string;
|
|
1391
|
-
}>;
|
|
1392
|
-
buildAppConfig(payload: {
|
|
1393
|
-
entry: number;
|
|
1394
|
-
stop: number;
|
|
1395
|
-
risk_reward: number;
|
|
1396
|
-
risk: number;
|
|
1397
|
-
symbol: string;
|
|
1398
|
-
profit?: number;
|
|
1399
|
-
update_db?: boolean;
|
|
1400
|
-
profit_percent?: number;
|
|
1401
|
-
}): Promise<AppConfig>;
|
|
2940
|
+
symbol: string;
|
|
2941
|
+
}): Promise<{
|
|
2942
|
+
price: number;
|
|
2943
|
+
direction: string;
|
|
2944
|
+
}>;
|
|
1402
2945
|
tradeConfig(payload: {
|
|
1403
2946
|
symbol: string;
|
|
1404
2947
|
kind: "long" | "short";
|
|
2948
|
+
override?: any;
|
|
1405
2949
|
}): Promise<AppConfig>;
|
|
1406
2950
|
justInTimeProfit(payload: {
|
|
1407
2951
|
symbol: string;
|
|
@@ -1424,53 +2968,13 @@ declare class ExchangeAccount$1 {
|
|
|
1424
2968
|
risk?: number;
|
|
1425
2969
|
}): Promise<{
|
|
1426
2970
|
trades: any[];
|
|
2971
|
+
actual_trades: any[];
|
|
1427
2972
|
max_size: any;
|
|
1428
2973
|
last_price: any;
|
|
1429
2974
|
total_size: number;
|
|
1430
2975
|
avg_entry: number;
|
|
1431
2976
|
}>;
|
|
1432
|
-
|
|
1433
|
-
risk_reward: number;
|
|
1434
|
-
entry: number;
|
|
1435
|
-
stop: number;
|
|
1436
|
-
risk_per_trade: number;
|
|
1437
|
-
avg_size: number;
|
|
1438
|
-
neg_pnl: number;
|
|
1439
|
-
min_size: number;
|
|
1440
|
-
symbol: string;
|
|
1441
|
-
}, place?: boolean, skip_stop?: boolean): Promise<{
|
|
1442
|
-
entry_orders: {
|
|
1443
|
-
orders: {
|
|
1444
|
-
entry: any;
|
|
1445
|
-
quantity: any;
|
|
1446
|
-
reverse_avg_entry: any;
|
|
1447
|
-
reverse_avg_quantity: any;
|
|
1448
|
-
avg_entry: any;
|
|
1449
|
-
avg_size: any;
|
|
1450
|
-
}[];
|
|
1451
|
-
kind: "long" | "short";
|
|
1452
|
-
};
|
|
1453
|
-
stop_orders: {
|
|
1454
|
-
stop: number;
|
|
1455
|
-
final_stop: number;
|
|
1456
|
-
kind: "long" | "short";
|
|
1457
|
-
quantity: any;
|
|
1458
|
-
is_limit: boolean;
|
|
1459
|
-
neg_pnl: any;
|
|
1460
|
-
};
|
|
1461
|
-
trades: any[];
|
|
1462
|
-
}>;
|
|
1463
|
-
determineAmountToBuy(payload: {
|
|
1464
|
-
orders: any[];
|
|
1465
|
-
kind: "long" | "short";
|
|
1466
|
-
refresh?: boolean;
|
|
1467
|
-
decimal_places?: string;
|
|
1468
|
-
price_places?: string;
|
|
1469
|
-
symbol: string;
|
|
1470
|
-
cancel?: boolean;
|
|
1471
|
-
place?: boolean;
|
|
1472
|
-
}): Promise<any[]>;
|
|
1473
|
-
placeSharedOrder(action: "place_limit_orders" | "place_stop_orders" | "place_tp_orders", payload: {
|
|
2977
|
+
placeSharedOrder(action: "place_limit_orders" | "place_stop_orders" | "place_tp_orders" | "dangerous_entry_orders", payload: {
|
|
1474
2978
|
symbol: string;
|
|
1475
2979
|
entry: number;
|
|
1476
2980
|
stop: number;
|
|
@@ -1480,6 +2984,7 @@ declare class ExchangeAccount$1 {
|
|
|
1480
2984
|
update_db?: boolean;
|
|
1481
2985
|
raw?: boolean;
|
|
1482
2986
|
use_current?: boolean;
|
|
2987
|
+
stop_percent?: number;
|
|
1483
2988
|
}): Promise<any>;
|
|
1484
2989
|
getOrCreatePositionConfig(payload: {
|
|
1485
2990
|
symbol: string;
|
|
@@ -1548,7 +3053,7 @@ declare class ExchangeAccount$1 {
|
|
|
1548
3053
|
not_reduce: boolean;
|
|
1549
3054
|
ratio: any;
|
|
1550
3055
|
use_full: boolean;
|
|
1551
|
-
sell_ratio:
|
|
3056
|
+
sell_ratio: number;
|
|
1552
3057
|
};
|
|
1553
3058
|
trigger: {
|
|
1554
3059
|
long: boolean;
|
|
@@ -1581,14 +3086,6 @@ declare class ExchangeAccount$1 {
|
|
|
1581
3086
|
target_pnl?: number;
|
|
1582
3087
|
}): Promise<any>;
|
|
1583
3088
|
reEnterPositionOnEmpty(symbol: string): Promise<void>;
|
|
1584
|
-
generate_config_params(payload: {
|
|
1585
|
-
entry: number;
|
|
1586
|
-
stop: number;
|
|
1587
|
-
risk_reward: number;
|
|
1588
|
-
risk: number;
|
|
1589
|
-
symbol: string;
|
|
1590
|
-
with_trades?: boolean;
|
|
1591
|
-
}): Promise<any>;
|
|
1592
3089
|
build_short_order(payload: {
|
|
1593
3090
|
symbol: string;
|
|
1594
3091
|
kind: "long" | "short";
|
|
@@ -1602,12 +3099,29 @@ declare class ExchangeAccount$1 {
|
|
|
1602
3099
|
placeMarketOrder(payload: {
|
|
1603
3100
|
symbol: string;
|
|
1604
3101
|
kind: "long" | "short";
|
|
1605
|
-
quantity
|
|
3102
|
+
quantity?: number;
|
|
3103
|
+
close?: boolean;
|
|
1606
3104
|
}): Promise<void>;
|
|
1607
3105
|
placeSingleOrder(payload: {
|
|
1608
3106
|
symbol: string;
|
|
1609
3107
|
kind: "long" | "short";
|
|
1610
3108
|
}): Promise<string>;
|
|
3109
|
+
followStop(payload: {
|
|
3110
|
+
symbol: string;
|
|
3111
|
+
kind: "long" | "short";
|
|
3112
|
+
fee_percent?: number;
|
|
3113
|
+
focus_position: ExchangePosition;
|
|
3114
|
+
place?: boolean;
|
|
3115
|
+
}): Promise<any>;
|
|
3116
|
+
increasePositionAtStop(payload: {
|
|
3117
|
+
symbol: string;
|
|
3118
|
+
kind: "long" | "short";
|
|
3119
|
+
place?: boolean;
|
|
3120
|
+
price?: number;
|
|
3121
|
+
quantity?: number;
|
|
3122
|
+
increase?: boolean;
|
|
3123
|
+
ratio_to_loose?: number;
|
|
3124
|
+
}): Promise<any>;
|
|
1611
3125
|
triggerTradeFromConfig(payload: {
|
|
1612
3126
|
symbol: string;
|
|
1613
3127
|
kind: "long" | "short";
|
|
@@ -1617,6 +3131,7 @@ declare class ExchangeAccount$1 {
|
|
|
1617
3131
|
stop?: boolean;
|
|
1618
3132
|
use_current?: boolean;
|
|
1619
3133
|
ignore_config?: boolean;
|
|
3134
|
+
risky?: boolean;
|
|
1620
3135
|
}): Promise<any>;
|
|
1621
3136
|
verifyStopLoss(payload: {
|
|
1622
3137
|
symbol: string;
|
|
@@ -1631,7 +3146,46 @@ declare class ExchangeAccount$1 {
|
|
|
1631
3146
|
updateTargetPnl(payload: {
|
|
1632
3147
|
symbol: string;
|
|
1633
3148
|
kind: "long" | "short";
|
|
1634
|
-
}): Promise<
|
|
3149
|
+
}): Promise<any>;
|
|
3150
|
+
updateRiskOnEmpty(payload: {
|
|
3151
|
+
symbol: string;
|
|
3152
|
+
kind: "long" | "short";
|
|
3153
|
+
}): Promise<{
|
|
3154
|
+
updated: boolean;
|
|
3155
|
+
symbol: any;
|
|
3156
|
+
kind: any;
|
|
3157
|
+
old_risk: number;
|
|
3158
|
+
new_risk: number;
|
|
3159
|
+
reason?: undefined;
|
|
3160
|
+
} | {
|
|
3161
|
+
updated: boolean;
|
|
3162
|
+
symbol: any;
|
|
3163
|
+
kind: any;
|
|
3164
|
+
reason: string;
|
|
3165
|
+
old_risk?: undefined;
|
|
3166
|
+
new_risk?: undefined;
|
|
3167
|
+
}>;
|
|
3168
|
+
updateGoodHedgeConfig(payload: {
|
|
3169
|
+
symbol: string;
|
|
3170
|
+
params?: {
|
|
3171
|
+
support: number;
|
|
3172
|
+
resistance: number;
|
|
3173
|
+
risk: number;
|
|
3174
|
+
profit_percent: number;
|
|
3175
|
+
};
|
|
3176
|
+
risk_factor?: number;
|
|
3177
|
+
update?: boolean;
|
|
3178
|
+
place?: boolean;
|
|
3179
|
+
update_tp?: boolean;
|
|
3180
|
+
}): Promise<{
|
|
3181
|
+
support: number;
|
|
3182
|
+
resistance: number;
|
|
3183
|
+
risk: number;
|
|
3184
|
+
profit_percent: number;
|
|
3185
|
+
}>;
|
|
3186
|
+
/**
|
|
3187
|
+
* This method is used to place the opposite trade action
|
|
3188
|
+
*/
|
|
1635
3189
|
placeOppositeTradeAction(payload: {
|
|
1636
3190
|
symbol: string;
|
|
1637
3191
|
kind: "long" | "short";
|
|
@@ -1684,6 +3238,20 @@ declare class ExchangeAccount$1 {
|
|
|
1684
3238
|
gap?: number;
|
|
1685
3239
|
rr?: number;
|
|
1686
3240
|
max_size?: number;
|
|
3241
|
+
max_quantity?: number;
|
|
3242
|
+
kelly?: {
|
|
3243
|
+
use_kelly?: boolean;
|
|
3244
|
+
kelly_confidence_factor?: number;
|
|
3245
|
+
kelly_minimum_risk?: number;
|
|
3246
|
+
kelly_prediction_model?: "exponential" | "normal" | "uniform";
|
|
3247
|
+
kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
|
|
3248
|
+
};
|
|
3249
|
+
distribution?: GetEntriesParams["distribution"];
|
|
3250
|
+
distribution_params?: {
|
|
3251
|
+
curveFactor?: number;
|
|
3252
|
+
stdDevFactor?: number;
|
|
3253
|
+
lambda?: number;
|
|
3254
|
+
};
|
|
1687
3255
|
}>;
|
|
1688
3256
|
runSimulation(payload: {
|
|
1689
3257
|
symbol: string;
|
|
@@ -1785,6 +3353,37 @@ declare class ExchangeAccount$1 {
|
|
|
1785
3353
|
symbol: string;
|
|
1786
3354
|
kind: "long" | "short";
|
|
1787
3355
|
}): Promise<number>;
|
|
3356
|
+
placeStopLimit(payload: {
|
|
3357
|
+
symbol: string;
|
|
3358
|
+
kind: "long" | "short";
|
|
3359
|
+
place?: boolean;
|
|
3360
|
+
stop: number;
|
|
3361
|
+
quantity?: number;
|
|
3362
|
+
}): Promise<any>;
|
|
3363
|
+
placeDangerousTrade(payload: {
|
|
3364
|
+
symbol: string;
|
|
3365
|
+
config: {
|
|
3366
|
+
entry: number;
|
|
3367
|
+
quantity: number;
|
|
3368
|
+
stop: number;
|
|
3369
|
+
};
|
|
3370
|
+
kind: "long" | "short";
|
|
3371
|
+
}): Promise<{
|
|
3372
|
+
entry: number;
|
|
3373
|
+
risk: number;
|
|
3374
|
+
stop: number;
|
|
3375
|
+
risk_reward: number | {
|
|
3376
|
+
result: any[];
|
|
3377
|
+
value: number;
|
|
3378
|
+
total: number;
|
|
3379
|
+
risk_per_trade: number;
|
|
3380
|
+
max: number;
|
|
3381
|
+
min: number;
|
|
3382
|
+
avg_size: any;
|
|
3383
|
+
neg_pnl: any;
|
|
3384
|
+
entry: any;
|
|
3385
|
+
};
|
|
3386
|
+
}>;
|
|
1788
3387
|
placeTrade(payload: {
|
|
1789
3388
|
symbol: string;
|
|
1790
3389
|
kind: "long" | "short";
|
|
@@ -1796,6 +3395,7 @@ declare class ExchangeAccount$1 {
|
|
|
1796
3395
|
cancel?: boolean;
|
|
1797
3396
|
ignore_config?: boolean;
|
|
1798
3397
|
target_pnl?: number;
|
|
3398
|
+
risky?: boolean;
|
|
1799
3399
|
}): Promise<any>;
|
|
1800
3400
|
updateConfigPnl(payload: {
|
|
1801
3401
|
symbol: string;
|
|
@@ -1814,57 +3414,18 @@ declare class ExchangeAccount$1 {
|
|
|
1814
3414
|
long_percent: number;
|
|
1815
3415
|
short_percent: number;
|
|
1816
3416
|
}>;
|
|
3417
|
+
oppositeGapExists(payload: {
|
|
3418
|
+
symbol: string;
|
|
3419
|
+
kind: "long" | "short";
|
|
3420
|
+
}): Promise<void>;
|
|
1817
3421
|
profitWithinGapStrategy(payload: {
|
|
1818
3422
|
symbol: string;
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
avg: {
|
|
1823
|
-
entry: number;
|
|
1824
|
-
price: number;
|
|
1825
|
-
quantity: number;
|
|
1826
|
-
};
|
|
1827
|
-
loss: number;
|
|
1828
|
-
profit_percent: number;
|
|
1829
|
-
fee: number;
|
|
1830
|
-
risk_per_trade: number;
|
|
1831
|
-
risk_reward: number;
|
|
1832
|
-
symbol?: string;
|
|
1833
|
-
focus: number;
|
|
1834
|
-
budget: number;
|
|
1835
|
-
support: number;
|
|
1836
|
-
resistance: number;
|
|
1837
|
-
percent_change: number;
|
|
1838
|
-
tradeSplit?: number;
|
|
1839
|
-
take_profit?: number;
|
|
3423
|
+
callback?: (params: {
|
|
3424
|
+
symbol: string;
|
|
3425
|
+
account: ExchangeType;
|
|
1840
3426
|
kind: "long" | "short";
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
min_size: number;
|
|
1844
|
-
price_places?: string;
|
|
1845
|
-
strategy?: "quantity" | "entry";
|
|
1846
|
-
as_array?: boolean;
|
|
1847
|
-
decimal_places?: string;
|
|
1848
|
-
min_profit?: number;
|
|
1849
|
-
raw?: boolean;
|
|
1850
|
-
gap?: number;
|
|
1851
|
-
rr?: number;
|
|
1852
|
-
max_size?: number;
|
|
1853
|
-
};
|
|
1854
|
-
reverse_orders_to_buy: any;
|
|
1855
|
-
positions: {
|
|
1856
|
-
long: PositionsView & {
|
|
1857
|
-
expand?: {
|
|
1858
|
-
account_strategy?: AccountStrategy;
|
|
1859
|
-
};
|
|
1860
|
-
};
|
|
1861
|
-
short: PositionsView & {
|
|
1862
|
-
expand?: {
|
|
1863
|
-
account_strategy?: AccountStrategy;
|
|
1864
|
-
};
|
|
1865
|
-
};
|
|
1866
|
-
};
|
|
1867
|
-
orders_to_place: any;
|
|
3427
|
+
}) => Promise<any>;
|
|
3428
|
+
}): Promise<{
|
|
1868
3429
|
config_details: {
|
|
1869
3430
|
app_config: {
|
|
1870
3431
|
fee: number;
|
|
@@ -1891,36 +3452,49 @@ declare class ExchangeAccount$1 {
|
|
|
1891
3452
|
gap?: number;
|
|
1892
3453
|
rr?: number;
|
|
1893
3454
|
max_size?: number;
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
neg_pnl: any;
|
|
1908
|
-
entry: any;
|
|
3455
|
+
max_quantity?: number;
|
|
3456
|
+
kelly?: {
|
|
3457
|
+
use_kelly?: boolean;
|
|
3458
|
+
kelly_confidence_factor?: number;
|
|
3459
|
+
kelly_minimum_risk?: number;
|
|
3460
|
+
kelly_prediction_model?: "exponential" | "normal" | "uniform";
|
|
3461
|
+
kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
|
|
3462
|
+
};
|
|
3463
|
+
distribution?: GetEntriesParams["distribution"];
|
|
3464
|
+
distribution_params?: {
|
|
3465
|
+
curveFactor?: number;
|
|
3466
|
+
stdDevFactor?: number;
|
|
3467
|
+
lambda?: number;
|
|
1909
3468
|
};
|
|
1910
|
-
profit_percent: number;
|
|
1911
3469
|
};
|
|
1912
|
-
|
|
3470
|
+
last_value: any;
|
|
1913
3471
|
};
|
|
1914
3472
|
}>;
|
|
1915
3473
|
generateGapTp(payload: {
|
|
1916
3474
|
symbol: string;
|
|
1917
3475
|
factor?: number;
|
|
1918
3476
|
}): Promise<{
|
|
1919
|
-
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
3477
|
+
profit_percent: {
|
|
3478
|
+
long: number;
|
|
3479
|
+
short: number;
|
|
3480
|
+
};
|
|
3481
|
+
risk: {
|
|
3482
|
+
short: number;
|
|
3483
|
+
long: number;
|
|
3484
|
+
};
|
|
3485
|
+
take_profit: {
|
|
3486
|
+
long: number;
|
|
3487
|
+
short: number;
|
|
3488
|
+
};
|
|
3489
|
+
to_reduce: {
|
|
3490
|
+
short: number;
|
|
3491
|
+
long: number;
|
|
3492
|
+
};
|
|
3493
|
+
full_reduce: {
|
|
3494
|
+
short: number;
|
|
3495
|
+
long: number;
|
|
3496
|
+
};
|
|
3497
|
+
sell_quantity: {
|
|
1924
3498
|
short: number;
|
|
1925
3499
|
long: number;
|
|
1926
3500
|
};
|
|
@@ -1930,9 +3504,12 @@ declare class ExchangeAccount$1 {
|
|
|
1930
3504
|
getSellPriceFromStrategy(payload: {
|
|
1931
3505
|
symbol: string;
|
|
1932
3506
|
reduce_position: PositionsView;
|
|
3507
|
+
kind?: "long" | "short";
|
|
3508
|
+
full_ratio?: number;
|
|
1933
3509
|
}): Promise<{
|
|
1934
3510
|
pnl: number;
|
|
1935
3511
|
loss: number;
|
|
3512
|
+
full_loss: number;
|
|
1936
3513
|
original_pnl: number;
|
|
1937
3514
|
reward_factor: number;
|
|
1938
3515
|
profit_percent: number;
|
|
@@ -1942,15 +3519,43 @@ declare class ExchangeAccount$1 {
|
|
|
1942
3519
|
price_places: string;
|
|
1943
3520
|
decimal_places: string;
|
|
1944
3521
|
}>;
|
|
3522
|
+
placeCompoundShortTrade(payload: {}): Promise<void>;
|
|
3523
|
+
placeCompoundLongTrade(payload: {
|
|
3524
|
+
symbol: string;
|
|
3525
|
+
params: {
|
|
3526
|
+
resistance: number;
|
|
3527
|
+
support: number;
|
|
3528
|
+
profit_percent: number;
|
|
3529
|
+
risk_reward: number;
|
|
3530
|
+
risk: number;
|
|
3531
|
+
};
|
|
3532
|
+
place?: boolean;
|
|
3533
|
+
}): Promise<void>;
|
|
3534
|
+
getConfigProfiles(payload: {
|
|
3535
|
+
symbol: string;
|
|
3536
|
+
kind: "long" | "short";
|
|
3537
|
+
}): Promise<{
|
|
3538
|
+
id: any;
|
|
3539
|
+
entry: any;
|
|
3540
|
+
stop: any;
|
|
3541
|
+
kind: "long" | "short";
|
|
3542
|
+
risk_reward: any;
|
|
3543
|
+
risk: any;
|
|
3544
|
+
profit_percent: any;
|
|
3545
|
+
}[]>;
|
|
1945
3546
|
}
|
|
1946
3547
|
declare function getExchangeAccount(payload: {
|
|
1947
3548
|
account: ExchangeType;
|
|
1948
3549
|
app_db: AppDatabase;
|
|
1949
|
-
getCredentials: (
|
|
3550
|
+
getCredentials: (payload: {
|
|
3551
|
+
account: string;
|
|
3552
|
+
exchange: string;
|
|
3553
|
+
app_db: AppDatabase;
|
|
3554
|
+
}) => Promise<{
|
|
1950
3555
|
api_key: string;
|
|
1951
3556
|
api_secret: string;
|
|
1952
3557
|
email: string;
|
|
1953
|
-
}
|
|
3558
|
+
}>;
|
|
1954
3559
|
proxyOptions?: {
|
|
1955
3560
|
proxy?: any;
|
|
1956
3561
|
ignore_proxy?: boolean;
|
|
@@ -1965,11 +3570,14 @@ declare class App {
|
|
|
1965
3570
|
canWithdraw?: boolean;
|
|
1966
3571
|
};
|
|
1967
3572
|
private getCredentials;
|
|
1968
|
-
constructor(app_db: AppDatabase, getCredentials: (
|
|
3573
|
+
constructor(app_db: AppDatabase, getCredentials: (payload: {
|
|
3574
|
+
account: string;
|
|
3575
|
+
exchange: string;
|
|
3576
|
+
}) => Promise<{
|
|
1969
3577
|
api_key: string;
|
|
1970
3578
|
api_secret: string;
|
|
1971
3579
|
email: string;
|
|
1972
|
-
}
|
|
3580
|
+
}>, proxyOptions?: {
|
|
1973
3581
|
proxy?: any;
|
|
1974
3582
|
ignore_proxy?: boolean;
|
|
1975
3583
|
canWithdraw?: boolean;
|
|
@@ -1985,13 +3593,14 @@ declare class App {
|
|
|
1985
3593
|
expand?: {
|
|
1986
3594
|
config: ScheduledTrade;
|
|
1987
3595
|
account: ExchangeAccount;
|
|
3596
|
+
proxy: Proxy$1;
|
|
1988
3597
|
};
|
|
1989
3598
|
})[]>;
|
|
1990
3599
|
syncOrders(payload: {
|
|
1991
3600
|
account: ExchangeType;
|
|
1992
3601
|
symbol: string;
|
|
1993
3602
|
kind: "long" | "short";
|
|
1994
|
-
}): Promise<
|
|
3603
|
+
}): Promise<boolean>;
|
|
1995
3604
|
cancelOrders(payload: {
|
|
1996
3605
|
account: ExchangeType;
|
|
1997
3606
|
symbol: string;
|
|
@@ -1999,7 +3608,7 @@ declare class App {
|
|
|
1999
3608
|
price?: number;
|
|
2000
3609
|
all?: boolean;
|
|
2001
3610
|
stop?: boolean;
|
|
2002
|
-
}): Promise<
|
|
3611
|
+
}): Promise<any[] | {
|
|
2003
3612
|
success: boolean;
|
|
2004
3613
|
message: string;
|
|
2005
3614
|
exchange_result?: undefined;
|
|
@@ -2038,10 +3647,16 @@ declare class App {
|
|
|
2038
3647
|
getNonEssentialSymbols(): Promise<Set<any>>;
|
|
2039
3648
|
refreshAllPositionsWithSymbol(payload: {
|
|
2040
3649
|
symbol: string;
|
|
3650
|
+
callback?: (payload: {
|
|
3651
|
+
symbol: string;
|
|
3652
|
+
account: ExchangeType;
|
|
3653
|
+
}) => Promise<any>;
|
|
2041
3654
|
}): Promise<void>;
|
|
2042
3655
|
autoFollowPositions(): Promise<void>;
|
|
2043
3656
|
getMoverExchangeInstances(): Promise<ExchangeAccount[]>;
|
|
2044
|
-
updateTpOnAllMarkets(
|
|
3657
|
+
updateTpOnAllMarkets(callback?: (payload: {
|
|
3658
|
+
account: ExchangeType;
|
|
3659
|
+
}) => Promise<any>): Promise<void>;
|
|
2045
3660
|
triggerMoverTask(payload: {
|
|
2046
3661
|
callback: (params: {
|
|
2047
3662
|
symbol: string;
|
|
@@ -2061,62 +3676,21 @@ declare class App {
|
|
|
2061
3676
|
cancel?: boolean;
|
|
2062
3677
|
raw?: boolean;
|
|
2063
3678
|
}): Promise<any>;
|
|
2064
|
-
runDbStrategyAccounts(
|
|
2065
|
-
|
|
2066
|
-
|
|
2067
|
-
|
|
3679
|
+
runDbStrategyAccounts(payload: {
|
|
3680
|
+
runningCallback: (params: {
|
|
3681
|
+
symbol: string;
|
|
3682
|
+
account: ExchangeType;
|
|
3683
|
+
}) => Promise<any>;
|
|
3684
|
+
notRunningCallback: (params: {
|
|
3685
|
+
symbol: string;
|
|
3686
|
+
account: ExchangeType;
|
|
3687
|
+
kind: "long" | "short";
|
|
3688
|
+
}) => Promise<any>;
|
|
3689
|
+
}): Promise<void>;
|
|
2068
3690
|
profitWithinGapStrategy(payload: {
|
|
2069
3691
|
account: ExchangeType;
|
|
2070
3692
|
symbol: string;
|
|
2071
3693
|
}): Promise<{
|
|
2072
|
-
reverse_config: any;
|
|
2073
|
-
reverse_action: {
|
|
2074
|
-
avg: {
|
|
2075
|
-
entry: number;
|
|
2076
|
-
price: number;
|
|
2077
|
-
quantity: number;
|
|
2078
|
-
};
|
|
2079
|
-
loss: number;
|
|
2080
|
-
profit_percent: number;
|
|
2081
|
-
fee: number;
|
|
2082
|
-
risk_per_trade: number;
|
|
2083
|
-
risk_reward: number;
|
|
2084
|
-
symbol?: string;
|
|
2085
|
-
focus: number;
|
|
2086
|
-
budget: number;
|
|
2087
|
-
support: number;
|
|
2088
|
-
resistance: number;
|
|
2089
|
-
percent_change: number;
|
|
2090
|
-
tradeSplit?: number;
|
|
2091
|
-
take_profit?: number;
|
|
2092
|
-
kind: "long" | "short";
|
|
2093
|
-
entry: number;
|
|
2094
|
-
stop: number;
|
|
2095
|
-
min_size: number;
|
|
2096
|
-
price_places?: string;
|
|
2097
|
-
strategy?: "quantity" | "entry";
|
|
2098
|
-
as_array?: boolean;
|
|
2099
|
-
decimal_places?: string;
|
|
2100
|
-
min_profit?: number;
|
|
2101
|
-
raw?: boolean;
|
|
2102
|
-
gap?: number;
|
|
2103
|
-
rr?: number;
|
|
2104
|
-
max_size?: number;
|
|
2105
|
-
};
|
|
2106
|
-
reverse_orders_to_buy: any;
|
|
2107
|
-
positions: {
|
|
2108
|
-
long: PositionsView & {
|
|
2109
|
-
expand?: {
|
|
2110
|
-
account_strategy?: AccountStrategy;
|
|
2111
|
-
};
|
|
2112
|
-
};
|
|
2113
|
-
short: PositionsView & {
|
|
2114
|
-
expand?: {
|
|
2115
|
-
account_strategy?: AccountStrategy;
|
|
2116
|
-
};
|
|
2117
|
-
};
|
|
2118
|
-
};
|
|
2119
|
-
orders_to_place: any;
|
|
2120
3694
|
config_details: {
|
|
2121
3695
|
app_config: {
|
|
2122
3696
|
fee: number;
|
|
@@ -2143,30 +3717,47 @@ declare class App {
|
|
|
2143
3717
|
gap?: number;
|
|
2144
3718
|
rr?: number;
|
|
2145
3719
|
max_size?: number;
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
|
|
2149
|
-
|
|
2150
|
-
|
|
2151
|
-
|
|
2152
|
-
|
|
2153
|
-
|
|
2154
|
-
|
|
2155
|
-
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2159
|
-
neg_pnl: any;
|
|
2160
|
-
entry: any;
|
|
3720
|
+
max_quantity?: number;
|
|
3721
|
+
kelly?: {
|
|
3722
|
+
use_kelly?: boolean;
|
|
3723
|
+
kelly_confidence_factor?: number;
|
|
3724
|
+
kelly_minimum_risk?: number;
|
|
3725
|
+
kelly_prediction_model?: "exponential" | "normal" | "uniform";
|
|
3726
|
+
kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
|
|
3727
|
+
};
|
|
3728
|
+
distribution?: GetEntriesParams["distribution"];
|
|
3729
|
+
distribution_params?: {
|
|
3730
|
+
curveFactor?: number;
|
|
3731
|
+
stdDevFactor?: number;
|
|
3732
|
+
lambda?: number;
|
|
2161
3733
|
};
|
|
2162
|
-
profit_percent: number;
|
|
2163
3734
|
};
|
|
2164
|
-
|
|
3735
|
+
last_value: any;
|
|
3736
|
+
};
|
|
3737
|
+
}>;
|
|
3738
|
+
compoundLongTrade(payload: {
|
|
3739
|
+
main_account: ExchangeType & {
|
|
3740
|
+
symbol: string;
|
|
3741
|
+
};
|
|
3742
|
+
focus_account: ExchangeType & {
|
|
3743
|
+
symbol: string;
|
|
2165
3744
|
};
|
|
3745
|
+
place?: boolean;
|
|
3746
|
+
rr?: number;
|
|
3747
|
+
}): Promise<{
|
|
3748
|
+
start_risk: number;
|
|
3749
|
+
short_profit: number;
|
|
3750
|
+
support: number;
|
|
3751
|
+
resistance: number;
|
|
3752
|
+
long_v: any;
|
|
3753
|
+
profit_percent: number;
|
|
3754
|
+
result: any;
|
|
3755
|
+
short_max_size: any;
|
|
2166
3756
|
}>;
|
|
2167
3757
|
reduceExistingPosition(payload: {
|
|
2168
3758
|
main_account: ExchangeType & {
|
|
2169
3759
|
symbol: string;
|
|
3760
|
+
kind?: "long" | "short";
|
|
2170
3761
|
};
|
|
2171
3762
|
reduce_account: ExchangeType & {
|
|
2172
3763
|
symbol: string;
|
|
@@ -2174,6 +3765,8 @@ declare class App {
|
|
|
2174
3765
|
kind: "long" | "short";
|
|
2175
3766
|
place?: boolean;
|
|
2176
3767
|
increase?: boolean;
|
|
3768
|
+
full_ratio?: number;
|
|
3769
|
+
cancel_limit?: boolean;
|
|
2177
3770
|
}): Promise<any>;
|
|
2178
3771
|
}
|
|
2179
3772
|
export declare function initApp(payload: {
|
|
@@ -2183,21 +3776,27 @@ export declare function initApp(payload: {
|
|
|
2183
3776
|
password: string;
|
|
2184
3777
|
};
|
|
2185
3778
|
password?: string;
|
|
2186
|
-
|
|
3779
|
+
salt?: string;
|
|
3780
|
+
email?: string;
|
|
3781
|
+
getCredentials: (payload: {
|
|
3782
|
+
account: string;
|
|
3783
|
+
exchange: string;
|
|
3784
|
+
app_db: AppDatabase;
|
|
3785
|
+
}) => Promise<{
|
|
2187
3786
|
api_key: string;
|
|
2188
3787
|
api_secret: string;
|
|
2189
3788
|
email: string;
|
|
2190
|
-
}
|
|
3789
|
+
}>;
|
|
2191
3790
|
proxy?: any;
|
|
2192
3791
|
ignore_proxy?: boolean;
|
|
2193
3792
|
canWithdraw?: boolean;
|
|
2194
3793
|
triggerToken?: string;
|
|
2195
3794
|
}): Promise<App>;
|
|
2196
|
-
declare function getCredentials(
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
}
|
|
3795
|
+
declare function getCredentials(payload: {
|
|
3796
|
+
account: string;
|
|
3797
|
+
exchange: string;
|
|
3798
|
+
app_db: AppDatabase;
|
|
3799
|
+
}): Promise<any>;
|
|
2201
3800
|
export declare function initialize(payload: {
|
|
2202
3801
|
password?: string;
|
|
2203
3802
|
proxy?: any;
|
|
@@ -2206,7 +3805,7 @@ export declare function initialize(payload: {
|
|
|
2206
3805
|
}): Promise<App>;
|
|
2207
3806
|
|
|
2208
3807
|
declare namespace database {
|
|
2209
|
-
export { AppDatabase, ExchangeType, initPocketBaseClient };
|
|
3808
|
+
export { AppDatabase, ExchangeType, decryptObject, encryptObject, initPocketBaseClient };
|
|
2210
3809
|
}
|
|
2211
3810
|
declare namespace exchange_account {
|
|
2212
3811
|
export { ExchangeAccount$1 as ExchangeAccount, getExchangeAccount };
|