@gbozee/ultimate 0.0.2-10 → 0.0.2-100
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 +721 -0
- package/dist/frontend-index.js +2337 -0
- package/dist/index.cjs +59674 -0
- package/dist/index.d.ts +1883 -301
- package/dist/index.js +47328 -23433
- package/dist/mcp-client.cjs +8845 -0
- package/dist/mcp-client.d.ts +5 -0
- package/dist/mcp-client.js +8819 -0
- package/dist/mcp-server.cjs +66508 -0
- package/dist/mcp-server.d.ts +5 -0
- package/dist/mcp-server.js +66484 -0
- package/package.json +32 -5
|
@@ -0,0 +1,721 @@
|
|
|
1
|
+
// Generated by dts-bundle-generator v9.5.1
|
|
2
|
+
|
|
3
|
+
export declare function profitHelper(longPosition: any, shortPosition: any, config?: any, contract_size?: number, balance?: number): {
|
|
4
|
+
long: any;
|
|
5
|
+
short: any;
|
|
6
|
+
};
|
|
7
|
+
export declare function getParamForField(self: any, configs: any[], field: string, isGroup?: string): any | any[];
|
|
8
|
+
export declare function getTradeEntries(entry: number, min_size: number, kind: "long" | "short", size: number, spread?: number): {
|
|
9
|
+
entry: number;
|
|
10
|
+
size: number;
|
|
11
|
+
}[];
|
|
12
|
+
export declare function extractValue(_param: any, condition: boolean): any;
|
|
13
|
+
export declare function asCoins(symbol: string): string;
|
|
14
|
+
export declare const SpecialCoins: string[];
|
|
15
|
+
export declare function allCoins(symbols: string[]): string[];
|
|
16
|
+
export declare function formatPrice(value: number, opts?: {
|
|
17
|
+
locale?: string;
|
|
18
|
+
currency?: string;
|
|
19
|
+
}): string;
|
|
20
|
+
export declare function to_f(value: string | number, places?: string): number;
|
|
21
|
+
export declare function determine_stop_and_size(entry: number, pnl: number, take_profit: number, kind?: string): number;
|
|
22
|
+
export declare const range: (start: number, stop: number, step?: number) => number[];
|
|
23
|
+
export declare function determine_amount_to_sell(entry: number, quantity: number, sell_price: number, pnl: number, kind: "long" | "short", places?: string): number;
|
|
24
|
+
export declare function determine_position_size({ entry, stop, budget, percent, min_size, notional_value, as_coin, places, }: {
|
|
25
|
+
entry: number;
|
|
26
|
+
stop?: number;
|
|
27
|
+
budget?: number;
|
|
28
|
+
percent?: number;
|
|
29
|
+
notional_value?: number;
|
|
30
|
+
min_size?: number;
|
|
31
|
+
as_coin?: boolean;
|
|
32
|
+
places?: string;
|
|
33
|
+
}): number;
|
|
34
|
+
export declare function determine_remaining_entry({ risk, max_size, stop_loss, kind, position, }: {
|
|
35
|
+
risk: number;
|
|
36
|
+
max_size: number;
|
|
37
|
+
stop_loss: number;
|
|
38
|
+
kind: string;
|
|
39
|
+
position: {
|
|
40
|
+
quantity: number;
|
|
41
|
+
entry: number;
|
|
42
|
+
};
|
|
43
|
+
}): number;
|
|
44
|
+
export declare function determine_average_entry_and_size(orders: Array<{
|
|
45
|
+
price: number;
|
|
46
|
+
quantity: number;
|
|
47
|
+
}>, places?: string, price_places?: string): {
|
|
48
|
+
entry: number;
|
|
49
|
+
price: number;
|
|
50
|
+
quantity: number;
|
|
51
|
+
};
|
|
52
|
+
export declare const createArray: (start: number, stop: number, step: number) => number[];
|
|
53
|
+
export declare const groupBy: (xs: any[], key: string) => any;
|
|
54
|
+
export declare function fibonacci_analysis({ support, resistance, kind, trend, places, }: {
|
|
55
|
+
support: number;
|
|
56
|
+
resistance: number;
|
|
57
|
+
kind?: string;
|
|
58
|
+
trend?: string;
|
|
59
|
+
places?: string;
|
|
60
|
+
}): number[];
|
|
61
|
+
export declare const groupIntoPairs: (arr: any[], size: number) => any[][];
|
|
62
|
+
export declare const groupIntoPairsWithSumLessThan: (arr: any[], targetSum: number, key?: string, firstSize?: number) => any[][];
|
|
63
|
+
/**
|
|
64
|
+
* This function computes the cummulative entry and size for each trade
|
|
65
|
+
* @param trades The trades for which the cummulative entry and size will be computed
|
|
66
|
+
* @param config The current config
|
|
67
|
+
* @returns An array of trades with the cummulative entry and size
|
|
68
|
+
*/
|
|
69
|
+
export declare const computeTotalAverageForEachTrade: (trades: any[], config: any) => any[];
|
|
70
|
+
export declare function getDecimalPlaces(numberString: string | number): number;
|
|
71
|
+
export declare function createGapPairs<T>(arr: T[], gap: number, item?: T): [
|
|
72
|
+
T,
|
|
73
|
+
T
|
|
74
|
+
][];
|
|
75
|
+
export declare function logWithLineNumber(...args: any[]): void;
|
|
76
|
+
export declare function computeSellZones(payload: {
|
|
77
|
+
entry: number;
|
|
78
|
+
exit: number;
|
|
79
|
+
zones?: number;
|
|
80
|
+
}): number[];
|
|
81
|
+
export type SignalConfigType = {
|
|
82
|
+
focus: number;
|
|
83
|
+
budget: number;
|
|
84
|
+
percent_change?: number;
|
|
85
|
+
price_places?: string;
|
|
86
|
+
decimal_places?: string;
|
|
87
|
+
zone_risk?: number;
|
|
88
|
+
fee?: number;
|
|
89
|
+
support?: number;
|
|
90
|
+
risk_reward?: number;
|
|
91
|
+
resistance?: number;
|
|
92
|
+
risk_per_trade?: number;
|
|
93
|
+
increase_size?: boolean;
|
|
94
|
+
additional_increase?: number;
|
|
95
|
+
minimum_pnl?: number;
|
|
96
|
+
take_profit?: number;
|
|
97
|
+
increase_position?: boolean;
|
|
98
|
+
minimum_size?: number;
|
|
99
|
+
first_order_size?: number;
|
|
100
|
+
gap?: number;
|
|
101
|
+
max_size?: number;
|
|
102
|
+
};
|
|
103
|
+
declare class Signal {
|
|
104
|
+
focus: number;
|
|
105
|
+
budget: number;
|
|
106
|
+
percent_change: number;
|
|
107
|
+
price_places: string;
|
|
108
|
+
decimal_places: string;
|
|
109
|
+
zone_risk: number;
|
|
110
|
+
fee: number;
|
|
111
|
+
support?: number;
|
|
112
|
+
risk_reward: number;
|
|
113
|
+
resistance?: number;
|
|
114
|
+
risk_per_trade?: number;
|
|
115
|
+
increase_size: boolean;
|
|
116
|
+
additional_increase: number;
|
|
117
|
+
minimum_pnl: number;
|
|
118
|
+
take_profit?: number;
|
|
119
|
+
increase_position: boolean;
|
|
120
|
+
minimum_size: any;
|
|
121
|
+
first_order_size: number;
|
|
122
|
+
gap: number;
|
|
123
|
+
max_size: number;
|
|
124
|
+
constructor({ focus, 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, }: SignalConfigType);
|
|
125
|
+
build_entry({ current_price, stop_loss, pnl, stop_percent, kind, risk, no_of_trades, take_profit, }: {
|
|
126
|
+
take_profit?: number;
|
|
127
|
+
no_of_trades?: number;
|
|
128
|
+
current_price: number;
|
|
129
|
+
stop_loss?: number;
|
|
130
|
+
kind?: "long" | "short";
|
|
131
|
+
risk: number;
|
|
132
|
+
stop_percent?: number;
|
|
133
|
+
pnl?: number;
|
|
134
|
+
}): any;
|
|
135
|
+
get risk(): number;
|
|
136
|
+
get min_trades(): number;
|
|
137
|
+
get min_price(): number;
|
|
138
|
+
build_opposite_order({ current_price, kind, }: {
|
|
139
|
+
current_price: number;
|
|
140
|
+
kind?: "long" | "short";
|
|
141
|
+
}): any;
|
|
142
|
+
special_build_orders({ current_price, kind, }: {
|
|
143
|
+
current_price: number;
|
|
144
|
+
kind?: "long" | "short";
|
|
145
|
+
}): any;
|
|
146
|
+
build_orders({ current_price, kind, limit, replace_focus, max_index, min_index, }: {
|
|
147
|
+
current_price: number;
|
|
148
|
+
kind?: "long" | "short";
|
|
149
|
+
limit?: boolean;
|
|
150
|
+
replace_focus?: boolean;
|
|
151
|
+
max_index?: number;
|
|
152
|
+
min_index?: number;
|
|
153
|
+
}): any;
|
|
154
|
+
build_orders_old({ current_price, kind, limit, replace_focus, max_index, min_index, }: {
|
|
155
|
+
current_price: number;
|
|
156
|
+
kind?: "long" | "short";
|
|
157
|
+
limit?: boolean;
|
|
158
|
+
replace_focus?: boolean;
|
|
159
|
+
max_index?: number;
|
|
160
|
+
min_index?: number;
|
|
161
|
+
}): any;
|
|
162
|
+
get_bulk_trade_zones({ current_price, kind, limit, }: {
|
|
163
|
+
current_price: number;
|
|
164
|
+
kind?: "long" | "short";
|
|
165
|
+
limit?: boolean;
|
|
166
|
+
}): any;
|
|
167
|
+
get_future_zones({ current_price, kind, raw, }: {
|
|
168
|
+
raw?: boolean;
|
|
169
|
+
current_price: number;
|
|
170
|
+
kind?: "long" | "short";
|
|
171
|
+
}): number[];
|
|
172
|
+
to_f(value: number, places?: string): number;
|
|
173
|
+
get_margin_zones({ current_price, kind, }: {
|
|
174
|
+
current_price: number;
|
|
175
|
+
kind?: "long" | "short";
|
|
176
|
+
}): number[][];
|
|
177
|
+
get_margin_range(current_price: number, kind?: string): number[];
|
|
178
|
+
process_orders({ current_price, stop_loss, trade_zones, kind, }: {
|
|
179
|
+
current_price: number;
|
|
180
|
+
stop_loss: number;
|
|
181
|
+
trade_zones: number[];
|
|
182
|
+
kind?: "long" | "short";
|
|
183
|
+
}): any[];
|
|
184
|
+
get_risk_per_trade(number_of_orders: number): number;
|
|
185
|
+
build_trade_dict({ entry, stop, risk, arr, index, new_fees, kind, start, take_profit, }: {
|
|
186
|
+
entry: number;
|
|
187
|
+
stop: number;
|
|
188
|
+
risk: number;
|
|
189
|
+
arr: number[];
|
|
190
|
+
index: number;
|
|
191
|
+
new_fees?: number;
|
|
192
|
+
kind?: "long" | "short";
|
|
193
|
+
start?: number;
|
|
194
|
+
take_profit?: number;
|
|
195
|
+
}): {
|
|
196
|
+
entry: number;
|
|
197
|
+
risk: number;
|
|
198
|
+
quantity: number;
|
|
199
|
+
sell_price: number;
|
|
200
|
+
risk_sell: number;
|
|
201
|
+
stop: number;
|
|
202
|
+
pnl: number;
|
|
203
|
+
fee: number;
|
|
204
|
+
net: number;
|
|
205
|
+
incurred: number;
|
|
206
|
+
stop_percent: number;
|
|
207
|
+
};
|
|
208
|
+
to_df(currentPrice: number, places?: string): number;
|
|
209
|
+
}
|
|
210
|
+
export type GlobalConfig = {
|
|
211
|
+
profit_percent: number;
|
|
212
|
+
symbol: string;
|
|
213
|
+
profit: number;
|
|
214
|
+
risk: number;
|
|
215
|
+
stop_percent: number;
|
|
216
|
+
kind: "long" | "short";
|
|
217
|
+
reduce_percent: number;
|
|
218
|
+
support: number;
|
|
219
|
+
resistance: number;
|
|
220
|
+
price_places: string;
|
|
221
|
+
decimal_places: string;
|
|
222
|
+
min_size: number;
|
|
223
|
+
accounts: {
|
|
224
|
+
owner: string;
|
|
225
|
+
exchange?: string;
|
|
226
|
+
}[];
|
|
227
|
+
risk_reward: number;
|
|
228
|
+
reverse_factor: number;
|
|
229
|
+
leverage?: number;
|
|
230
|
+
};
|
|
231
|
+
export type AppConfig = {
|
|
232
|
+
fee: number;
|
|
233
|
+
risk_per_trade: number;
|
|
234
|
+
risk_reward: number;
|
|
235
|
+
symbol?: string;
|
|
236
|
+
focus: number;
|
|
237
|
+
budget: number;
|
|
238
|
+
support: number;
|
|
239
|
+
resistance: number;
|
|
240
|
+
percent_change: number;
|
|
241
|
+
tradeSplit?: number;
|
|
242
|
+
take_profit?: number;
|
|
243
|
+
kind: "long" | "short";
|
|
244
|
+
entry: number;
|
|
245
|
+
stop: number;
|
|
246
|
+
min_size: number;
|
|
247
|
+
price_places?: string;
|
|
248
|
+
strategy?: "quantity" | "entry";
|
|
249
|
+
as_array?: boolean;
|
|
250
|
+
decimal_places?: string;
|
|
251
|
+
min_profit?: number;
|
|
252
|
+
raw?: boolean;
|
|
253
|
+
gap?: number;
|
|
254
|
+
rr?: number;
|
|
255
|
+
max_size?: number;
|
|
256
|
+
last_value?: any;
|
|
257
|
+
entries?: any[];
|
|
258
|
+
};
|
|
259
|
+
export type ExtendConfigType = {
|
|
260
|
+
take_profit?: number;
|
|
261
|
+
entry: number;
|
|
262
|
+
risk?: number;
|
|
263
|
+
stop?: number;
|
|
264
|
+
risk_reward?: number;
|
|
265
|
+
raw_instance?: boolean;
|
|
266
|
+
no_of_trades?: number;
|
|
267
|
+
increase?: boolean;
|
|
268
|
+
price_places?: string;
|
|
269
|
+
decimal_places?: string;
|
|
270
|
+
min_profit?: number;
|
|
271
|
+
kind?: "long" | "short";
|
|
272
|
+
gap?: number;
|
|
273
|
+
rr?: number;
|
|
274
|
+
};
|
|
275
|
+
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;
|
|
276
|
+
export declare function buildAvg({ _trades, kind, }: {
|
|
277
|
+
_trades: any[];
|
|
278
|
+
kind: "long" | "short";
|
|
279
|
+
}): any;
|
|
280
|
+
export declare function sortedBuildConfig(app_config: AppConfig, options: any): any[];
|
|
281
|
+
export declare function get_app_config_and_max_size(config: GlobalConfig, payload: {
|
|
282
|
+
entry: number;
|
|
283
|
+
stop: number;
|
|
284
|
+
kind: "long" | "short";
|
|
285
|
+
}): {
|
|
286
|
+
app_config: AppConfig;
|
|
287
|
+
max_size: any;
|
|
288
|
+
last_value: any;
|
|
289
|
+
entries: {
|
|
290
|
+
entry: any;
|
|
291
|
+
avg_entry: any;
|
|
292
|
+
avg_size: any;
|
|
293
|
+
neg_pnl: any;
|
|
294
|
+
quantity: any;
|
|
295
|
+
}[];
|
|
296
|
+
};
|
|
297
|
+
export declare function buildAppConfig(config: GlobalConfig, payload: {
|
|
298
|
+
entry: number;
|
|
299
|
+
stop: number;
|
|
300
|
+
risk_reward: number;
|
|
301
|
+
risk: number;
|
|
302
|
+
symbol: string;
|
|
303
|
+
profit?: number;
|
|
304
|
+
}): AppConfig;
|
|
305
|
+
export declare function getOptimumStopAndRisk(app_config: AppConfig, params: {
|
|
306
|
+
max_size: number;
|
|
307
|
+
target_stop: number;
|
|
308
|
+
highest_risk?: number;
|
|
309
|
+
}): {
|
|
310
|
+
optimal_stop: number;
|
|
311
|
+
optimal_risk: number;
|
|
312
|
+
avg_size: any;
|
|
313
|
+
avg_entry: any;
|
|
314
|
+
result: any[];
|
|
315
|
+
first_entry: any;
|
|
316
|
+
neg_pnl: any;
|
|
317
|
+
risk_reward: number;
|
|
318
|
+
size_diff: number;
|
|
319
|
+
entry_diff: number;
|
|
320
|
+
};
|
|
321
|
+
export declare function generate_config_params(app_config: AppConfig, payload: {
|
|
322
|
+
entry: number;
|
|
323
|
+
stop: number;
|
|
324
|
+
risk_reward: number;
|
|
325
|
+
risk: number;
|
|
326
|
+
symbol: string;
|
|
327
|
+
}): {
|
|
328
|
+
entry: number;
|
|
329
|
+
stop: number;
|
|
330
|
+
avg_size: any;
|
|
331
|
+
avg_entry: any;
|
|
332
|
+
risk_reward: number;
|
|
333
|
+
neg_pnl: any;
|
|
334
|
+
risk: number;
|
|
335
|
+
};
|
|
336
|
+
export declare function determine_break_even_price(payload: {
|
|
337
|
+
long_position: {
|
|
338
|
+
entry: number;
|
|
339
|
+
quantity: number;
|
|
340
|
+
};
|
|
341
|
+
short_position: {
|
|
342
|
+
entry: number;
|
|
343
|
+
quantity: number;
|
|
344
|
+
};
|
|
345
|
+
fee_percent?: number;
|
|
346
|
+
}): {
|
|
347
|
+
price: number;
|
|
348
|
+
direction: string;
|
|
349
|
+
};
|
|
350
|
+
export declare function determine_amount_to_buy(payload: {
|
|
351
|
+
orders: any[];
|
|
352
|
+
kind: "long" | "short";
|
|
353
|
+
decimal_places?: string;
|
|
354
|
+
price_places?: string;
|
|
355
|
+
place?: boolean;
|
|
356
|
+
position: any;
|
|
357
|
+
existingOrders: any[];
|
|
358
|
+
}): any[];
|
|
359
|
+
export declare function generateOptimumAppConfig(config: GlobalConfig, payload: {
|
|
360
|
+
entry: number;
|
|
361
|
+
stop: number;
|
|
362
|
+
risk_reward: number;
|
|
363
|
+
start_risk: number;
|
|
364
|
+
max_risk?: number;
|
|
365
|
+
}, position: {
|
|
366
|
+
entry: number;
|
|
367
|
+
quantity: number;
|
|
368
|
+
kind: "long" | "short";
|
|
369
|
+
}): AppConfig | null;
|
|
370
|
+
export declare function determineOptimumReward(app_config: AppConfig, increase?: boolean, low_range?: number, high_range?: number): number | {
|
|
371
|
+
result: any[];
|
|
372
|
+
value: number;
|
|
373
|
+
total: number;
|
|
374
|
+
risk_per_trade: number;
|
|
375
|
+
max: number;
|
|
376
|
+
min: number;
|
|
377
|
+
neg_pnl: any;
|
|
378
|
+
entry: any;
|
|
379
|
+
};
|
|
380
|
+
export declare function computeRiskReward(payload: {
|
|
381
|
+
app_config: AppConfig;
|
|
382
|
+
entry: number;
|
|
383
|
+
stop: number;
|
|
384
|
+
risk_per_trade: number;
|
|
385
|
+
}): number | {
|
|
386
|
+
result: any[];
|
|
387
|
+
value: number;
|
|
388
|
+
total: number;
|
|
389
|
+
risk_per_trade: number;
|
|
390
|
+
max: number;
|
|
391
|
+
min: number;
|
|
392
|
+
neg_pnl: any;
|
|
393
|
+
entry: any;
|
|
394
|
+
};
|
|
395
|
+
export declare function getRiskReward(payload: {
|
|
396
|
+
entry: number;
|
|
397
|
+
stop: number;
|
|
398
|
+
risk: number;
|
|
399
|
+
global_config: GlobalConfig;
|
|
400
|
+
}): any;
|
|
401
|
+
export declare function computeProfitDetail(payload: {
|
|
402
|
+
focus_position: {
|
|
403
|
+
kind: "long" | "short";
|
|
404
|
+
entry: number;
|
|
405
|
+
quantity: number;
|
|
406
|
+
avg_qty: number;
|
|
407
|
+
avg_price: number;
|
|
408
|
+
};
|
|
409
|
+
strategy: {
|
|
410
|
+
reward_factor: number;
|
|
411
|
+
max_reward_factor: number;
|
|
412
|
+
risk: number;
|
|
413
|
+
};
|
|
414
|
+
reduce_position?: {
|
|
415
|
+
kind: "long" | "short";
|
|
416
|
+
entry: number;
|
|
417
|
+
quantity: number;
|
|
418
|
+
avg_qty: number;
|
|
419
|
+
avg_price: number;
|
|
420
|
+
};
|
|
421
|
+
reverse_position?: {
|
|
422
|
+
kind: "long" | "short";
|
|
423
|
+
avg_qty: number;
|
|
424
|
+
avg_price: number;
|
|
425
|
+
stop_loss: {
|
|
426
|
+
price: number;
|
|
427
|
+
quantity: number;
|
|
428
|
+
};
|
|
429
|
+
};
|
|
430
|
+
price_places?: string;
|
|
431
|
+
decimal_places?: string;
|
|
432
|
+
}): {
|
|
433
|
+
pnl: number;
|
|
434
|
+
loss: number;
|
|
435
|
+
original_pnl: number;
|
|
436
|
+
reward_factor: number;
|
|
437
|
+
profit_percent: number;
|
|
438
|
+
kind: "long" | "short";
|
|
439
|
+
sell_price: number;
|
|
440
|
+
quantity: number;
|
|
441
|
+
price_places: string;
|
|
442
|
+
decimal_places: string;
|
|
443
|
+
};
|
|
444
|
+
export declare function generateGapTp(payload: {
|
|
445
|
+
long: {
|
|
446
|
+
entry: number;
|
|
447
|
+
quantity: number;
|
|
448
|
+
};
|
|
449
|
+
short: {
|
|
450
|
+
entry: number;
|
|
451
|
+
quantity: number;
|
|
452
|
+
};
|
|
453
|
+
factor?: number;
|
|
454
|
+
sell_factor?: number;
|
|
455
|
+
price_places?: string;
|
|
456
|
+
decimal_places?: string;
|
|
457
|
+
}): {
|
|
458
|
+
profit_percent: {
|
|
459
|
+
long: number;
|
|
460
|
+
short: number;
|
|
461
|
+
};
|
|
462
|
+
risk: {
|
|
463
|
+
short: number;
|
|
464
|
+
long: number;
|
|
465
|
+
};
|
|
466
|
+
take_profit: {
|
|
467
|
+
long: number;
|
|
468
|
+
short: number;
|
|
469
|
+
};
|
|
470
|
+
to_reduce: {
|
|
471
|
+
short: number;
|
|
472
|
+
long: number;
|
|
473
|
+
};
|
|
474
|
+
full_reduce: {
|
|
475
|
+
short: number;
|
|
476
|
+
long: number;
|
|
477
|
+
};
|
|
478
|
+
sell_quantity: {
|
|
479
|
+
short: number;
|
|
480
|
+
long: number;
|
|
481
|
+
};
|
|
482
|
+
gap: number;
|
|
483
|
+
gap_loss: number;
|
|
484
|
+
};
|
|
485
|
+
export type StrategyPosition = {
|
|
486
|
+
entry: number;
|
|
487
|
+
quantity: number;
|
|
488
|
+
avg_price?: number;
|
|
489
|
+
avg_qty?: number;
|
|
490
|
+
};
|
|
491
|
+
export type GapCloserResult = {
|
|
492
|
+
avg_entry: number;
|
|
493
|
+
avg_size: number;
|
|
494
|
+
loss: number;
|
|
495
|
+
stop: number;
|
|
496
|
+
stop_quantity: number;
|
|
497
|
+
re_entry_quantity: number;
|
|
498
|
+
initial_pnl: number;
|
|
499
|
+
tp: number;
|
|
500
|
+
incurred_loss: number;
|
|
501
|
+
pnl: number;
|
|
502
|
+
remaining_quantity: number;
|
|
503
|
+
};
|
|
504
|
+
export type Config = {
|
|
505
|
+
tp_percent: number;
|
|
506
|
+
short_tp_factor: number;
|
|
507
|
+
fee_percent?: number;
|
|
508
|
+
budget: number;
|
|
509
|
+
risk_reward: number;
|
|
510
|
+
reduce_ratio: number;
|
|
511
|
+
global_config: GlobalConfig;
|
|
512
|
+
};
|
|
513
|
+
export declare class Strategy {
|
|
514
|
+
position: {
|
|
515
|
+
long: StrategyPosition;
|
|
516
|
+
short: StrategyPosition;
|
|
517
|
+
};
|
|
518
|
+
dominant_position?: "long" | "short";
|
|
519
|
+
config: Config;
|
|
520
|
+
constructor(payload: {
|
|
521
|
+
long: StrategyPosition;
|
|
522
|
+
short: StrategyPosition;
|
|
523
|
+
config: Config;
|
|
524
|
+
dominant_position?: "long" | "short";
|
|
525
|
+
});
|
|
526
|
+
get price_places(): string;
|
|
527
|
+
get decimal_places(): string;
|
|
528
|
+
to_f(price: number): number;
|
|
529
|
+
to_df(quantity: number): number;
|
|
530
|
+
pnl(kind: "long" | "short", _position?: StrategyPosition): number;
|
|
531
|
+
tp(kind: "long" | "short"): number;
|
|
532
|
+
calculate_fee(position: {
|
|
533
|
+
price: number;
|
|
534
|
+
quantity: number;
|
|
535
|
+
}): number;
|
|
536
|
+
get long_tp(): number;
|
|
537
|
+
get short_tp(): number;
|
|
538
|
+
generateGapClosingAlgorithm(payload: {
|
|
539
|
+
kind: "long" | "short";
|
|
540
|
+
ignore_entries?: boolean;
|
|
541
|
+
reduce_ratio?: number;
|
|
542
|
+
sell_factor?: number;
|
|
543
|
+
}): {
|
|
544
|
+
last_entry: any;
|
|
545
|
+
first_entry: any;
|
|
546
|
+
threshold: any;
|
|
547
|
+
risk: number;
|
|
548
|
+
risk_reward: number;
|
|
549
|
+
spread: number;
|
|
550
|
+
gap_loss: number;
|
|
551
|
+
net_profit: number;
|
|
552
|
+
long: GapCloserResult;
|
|
553
|
+
short: GapCloserResult;
|
|
554
|
+
};
|
|
555
|
+
gapCloserHelper(payload: {
|
|
556
|
+
risk: number;
|
|
557
|
+
entries?: any[];
|
|
558
|
+
kind: "long" | "short";
|
|
559
|
+
sell_factor?: number;
|
|
560
|
+
reduce_ratio?: number;
|
|
561
|
+
}): {
|
|
562
|
+
risk: number;
|
|
563
|
+
risk_reward: number;
|
|
564
|
+
spread: number;
|
|
565
|
+
gap_loss: number;
|
|
566
|
+
net_profit: number;
|
|
567
|
+
long: GapCloserResult;
|
|
568
|
+
short: GapCloserResult;
|
|
569
|
+
};
|
|
570
|
+
runIterations(payload: {
|
|
571
|
+
kind: "long" | "short";
|
|
572
|
+
iterations: number;
|
|
573
|
+
risk_reward?: number;
|
|
574
|
+
ignore_entries?: boolean;
|
|
575
|
+
reduce_ratio?: number;
|
|
576
|
+
sell_factor?: number;
|
|
577
|
+
}): {
|
|
578
|
+
last_entry: any;
|
|
579
|
+
first_entry: any;
|
|
580
|
+
threshold: any;
|
|
581
|
+
risk: number;
|
|
582
|
+
risk_reward: number;
|
|
583
|
+
spread: number;
|
|
584
|
+
gap_loss: number;
|
|
585
|
+
net_profit: number;
|
|
586
|
+
long: GapCloserResult;
|
|
587
|
+
short: GapCloserResult;
|
|
588
|
+
}[];
|
|
589
|
+
getPositionAfterTp(payload: {
|
|
590
|
+
kind: "long" | "short";
|
|
591
|
+
include_fees?: boolean;
|
|
592
|
+
}): {
|
|
593
|
+
[x: string]: number | {
|
|
594
|
+
entry: number;
|
|
595
|
+
quantity: number;
|
|
596
|
+
diff?: undefined;
|
|
597
|
+
} | {
|
|
598
|
+
[x: string]: number;
|
|
599
|
+
diff: number;
|
|
600
|
+
entry?: undefined;
|
|
601
|
+
quantity?: undefined;
|
|
602
|
+
};
|
|
603
|
+
pnl: {
|
|
604
|
+
[x: string]: number;
|
|
605
|
+
diff: number;
|
|
606
|
+
};
|
|
607
|
+
spread: number;
|
|
608
|
+
};
|
|
609
|
+
getPositionAfterIteration(payload: {
|
|
610
|
+
kind: "long" | "short";
|
|
611
|
+
iterations: number;
|
|
612
|
+
with_fees?: boolean;
|
|
613
|
+
}): {
|
|
614
|
+
[x: string]: number | {
|
|
615
|
+
entry: number;
|
|
616
|
+
quantity: number;
|
|
617
|
+
diff?: undefined;
|
|
618
|
+
} | {
|
|
619
|
+
[x: string]: number;
|
|
620
|
+
diff: number;
|
|
621
|
+
entry?: undefined;
|
|
622
|
+
quantity?: undefined;
|
|
623
|
+
};
|
|
624
|
+
pnl: {
|
|
625
|
+
[x: string]: number;
|
|
626
|
+
diff: number;
|
|
627
|
+
};
|
|
628
|
+
spread: number;
|
|
629
|
+
}[];
|
|
630
|
+
/**To be used as one of the agent tools eventually since
|
|
631
|
+
* it is something that can be triggered continously without
|
|
632
|
+
* any risk
|
|
633
|
+
*/
|
|
634
|
+
generateOppositeTrades(payload: {
|
|
635
|
+
kind: "long" | "short";
|
|
636
|
+
risk_factor?: number;
|
|
637
|
+
avg_entry?: number;
|
|
638
|
+
}): {
|
|
639
|
+
avg: {
|
|
640
|
+
entry: number;
|
|
641
|
+
price: number;
|
|
642
|
+
quantity: number;
|
|
643
|
+
};
|
|
644
|
+
loss: number;
|
|
645
|
+
profit_percent: number;
|
|
646
|
+
fee: number;
|
|
647
|
+
risk_per_trade: number;
|
|
648
|
+
risk_reward: number;
|
|
649
|
+
symbol?: string;
|
|
650
|
+
focus: number;
|
|
651
|
+
budget: number;
|
|
652
|
+
support: number;
|
|
653
|
+
resistance: number;
|
|
654
|
+
percent_change: number;
|
|
655
|
+
tradeSplit?: number;
|
|
656
|
+
take_profit?: number;
|
|
657
|
+
kind: "long" | "short";
|
|
658
|
+
entry: number;
|
|
659
|
+
stop: number;
|
|
660
|
+
min_size: number;
|
|
661
|
+
price_places?: string;
|
|
662
|
+
strategy?: "quantity" | "entry";
|
|
663
|
+
as_array?: boolean;
|
|
664
|
+
decimal_places?: string;
|
|
665
|
+
min_profit?: number;
|
|
666
|
+
raw?: boolean;
|
|
667
|
+
gap?: number;
|
|
668
|
+
rr?: number;
|
|
669
|
+
max_size?: number;
|
|
670
|
+
};
|
|
671
|
+
identifyGapConfig(payload: {
|
|
672
|
+
factor?: number;
|
|
673
|
+
sell_factor?: number;
|
|
674
|
+
}): {
|
|
675
|
+
profit_percent: {
|
|
676
|
+
long: number;
|
|
677
|
+
short: number;
|
|
678
|
+
};
|
|
679
|
+
risk: {
|
|
680
|
+
short: number;
|
|
681
|
+
long: number;
|
|
682
|
+
};
|
|
683
|
+
take_profit: {
|
|
684
|
+
long: number;
|
|
685
|
+
short: number;
|
|
686
|
+
};
|
|
687
|
+
to_reduce: {
|
|
688
|
+
short: number;
|
|
689
|
+
long: number;
|
|
690
|
+
};
|
|
691
|
+
full_reduce: {
|
|
692
|
+
short: number;
|
|
693
|
+
long: number;
|
|
694
|
+
};
|
|
695
|
+
sell_quantity: {
|
|
696
|
+
short: number;
|
|
697
|
+
long: number;
|
|
698
|
+
};
|
|
699
|
+
gap: number;
|
|
700
|
+
gap_loss: number;
|
|
701
|
+
};
|
|
702
|
+
analyzeProfit(payload: {
|
|
703
|
+
reward_factor?: number;
|
|
704
|
+
max_reward_factor: number;
|
|
705
|
+
risk: number;
|
|
706
|
+
kind: "long" | "short";
|
|
707
|
+
}): {
|
|
708
|
+
pnl: number;
|
|
709
|
+
loss: number;
|
|
710
|
+
original_pnl: number;
|
|
711
|
+
reward_factor: number;
|
|
712
|
+
profit_percent: number;
|
|
713
|
+
kind: "long" | "short";
|
|
714
|
+
sell_price: number;
|
|
715
|
+
quantity: number;
|
|
716
|
+
price_places: string;
|
|
717
|
+
decimal_places: string;
|
|
718
|
+
};
|
|
719
|
+
}
|
|
720
|
+
|
|
721
|
+
export {};
|