@gbozee/ultimate 0.0.2-99 → 0.0.2-next.0

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.
@@ -78,7 +78,63 @@ export declare function computeSellZones(payload: {
78
78
  exit: number;
79
79
  zones?: number;
80
80
  }): number[];
81
+ export type RawPosition = {
82
+ entry: number;
83
+ quantity: number;
84
+ price_places: string;
85
+ decimal_places?: string;
86
+ };
87
+ export type ConfigOptionType = {
88
+ reduce_ratio: number | string;
89
+ profit_percent: number | string;
90
+ };
91
+ /**
92
+ * This function determines the take profit price for a given position based of the profit percent and the reduce ratio
93
+ * @param payload
94
+ * @returns {
95
+ * tp_price: number;
96
+ * pnl: number;
97
+ * quantity: number;
98
+ * reduce_quantity: number;
99
+ * expected_loss: number;
100
+ * }
101
+ */
102
+ export declare function determineTPSl(payload: {
103
+ sell_ratio?: number;
104
+ positions: {
105
+ long: RawPosition;
106
+ short: RawPosition;
107
+ };
108
+ configs: {
109
+ long: ConfigOptionType;
110
+ short: ConfigOptionType;
111
+ };
112
+ kind: "long" | "short";
113
+ decimal_places?: string;
114
+ }): {
115
+ tp_price: number;
116
+ pnl: number;
117
+ quantity: number;
118
+ reduce_quantity: number;
119
+ expected_loss: number;
120
+ };
121
+ export interface GetEntriesParams {
122
+ kind: "long" | "short";
123
+ distribution: "arithmetic" | "geometric" | "normal" | "exponential" | "inverse-exponential";
124
+ margin_range: [
125
+ number,
126
+ number
127
+ ];
128
+ risk_reward: number;
129
+ price_places?: string;
130
+ distribution_params?: {
131
+ curveFactor?: number;
132
+ stdDevFactor?: number;
133
+ lambda?: number;
134
+ };
135
+ }
81
136
  export type SignalConfigType = {
137
+ symbol?: string;
82
138
  focus: number;
83
139
  budget: number;
84
140
  percent_change?: number;
@@ -99,12 +155,32 @@ export type SignalConfigType = {
99
155
  first_order_size?: number;
100
156
  gap?: number;
101
157
  max_size?: number;
158
+ use_kelly?: boolean;
159
+ kelly_prediction_model?: "exponential" | "normal" | "uniform";
160
+ kelly_confidence_factor?: number;
161
+ kelly_minimum_risk?: number;
162
+ kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
163
+ full_distribution?: {
164
+ long: GetEntriesParams["distribution"];
165
+ short: GetEntriesParams["distribution"];
166
+ };
167
+ max_quantity?: number;
168
+ distribution_params?: {
169
+ curveFactor?: number;
170
+ stdDevFactor?: number;
171
+ lambda?: number;
172
+ };
102
173
  };
103
174
  declare class Signal {
104
175
  focus: number;
105
176
  budget: number;
106
177
  percent_change: number;
107
178
  price_places: string;
179
+ distribution_params: {
180
+ curveFactor?: number;
181
+ stdDevFactor?: number;
182
+ lambda?: number;
183
+ };
108
184
  decimal_places: string;
109
185
  zone_risk: number;
110
186
  fee: number;
@@ -121,8 +197,19 @@ declare class Signal {
121
197
  first_order_size: number;
122
198
  gap: number;
123
199
  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, }: {
200
+ use_kelly: boolean;
201
+ kelly_prediction_model: "exponential" | "normal" | "uniform";
202
+ kelly_confidence_factor: number;
203
+ kelly_minimum_risk: number;
204
+ kelly_func: "theoretical" | "position_based" | "theoretical_fixed";
205
+ symbol?: string;
206
+ distribution: {
207
+ long: GetEntriesParams["distribution"];
208
+ short: GetEntriesParams["distribution"];
209
+ };
210
+ max_quantity: number;
211
+ 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, }: SignalConfigType);
212
+ build_entry({ current_price, stop_loss, pnl, stop_percent, kind, risk, no_of_trades, take_profit, distribution, distribution_params, }: {
126
213
  take_profit?: number;
127
214
  no_of_trades?: number;
128
215
  current_price: number;
@@ -131,6 +218,12 @@ declare class Signal {
131
218
  risk: number;
132
219
  stop_percent?: number;
133
220
  pnl?: number;
221
+ distribution?: GetEntriesParams["distribution"];
222
+ distribution_params?: {
223
+ curveFactor?: number;
224
+ stdDevFactor?: number;
225
+ lambda?: number;
226
+ };
134
227
  }): any;
135
228
  get risk(): number;
136
229
  get min_trades(): number;
@@ -164,6 +257,11 @@ declare class Signal {
164
257
  kind?: "long" | "short";
165
258
  limit?: boolean;
166
259
  }): any;
260
+ get_future_zones_simple({ current_price, kind, raw, }: {
261
+ raw?: boolean;
262
+ current_price: number;
263
+ kind?: "long" | "short";
264
+ }): number[];
167
265
  get_future_zones({ current_price, kind, raw, }: {
168
266
  raw?: boolean;
169
267
  current_price: number;
@@ -208,26 +306,204 @@ declare class Signal {
208
306
  to_df(currentPrice: number, places?: string): number;
209
307
  }
210
308
  export type GlobalConfig = {
211
- profit_percent: number;
309
+ profit_percent?: number;
212
310
  symbol: string;
213
- profit: number;
214
- risk: number;
215
- stop_percent: number;
311
+ profit?: number;
312
+ risk?: number;
313
+ stop_percent?: number;
216
314
  kind: "long" | "short";
217
- reduce_percent: number;
315
+ reduce_percent?: number;
218
316
  support: number;
219
317
  resistance: number;
220
318
  price_places: string;
221
319
  decimal_places: string;
222
- min_size: number;
223
- accounts: {
320
+ min_size?: number;
321
+ accounts?: {
224
322
  owner: string;
225
323
  exchange?: string;
226
324
  }[];
227
- risk_reward: number;
228
- reverse_factor: number;
325
+ risk_reward?: number;
326
+ reverse_factor?: number;
229
327
  leverage?: number;
328
+ max_quantity?: number;
329
+ fee_percent?: number;
230
330
  };
331
+ export interface BaseSystemFields {
332
+ id: string;
333
+ created: string;
334
+ updated: string;
335
+ }
336
+ export interface ExchangeAccount extends BaseSystemFields {
337
+ exchange: "binance" | "bybit";
338
+ owner: string;
339
+ email?: string;
340
+ user?: string;
341
+ usdt?: number;
342
+ usdc?: number;
343
+ proxy?: string;
344
+ bullish?: boolean;
345
+ bearish?: boolean;
346
+ movePercent?: number;
347
+ totalRisk?: number;
348
+ max_non_essential?: number;
349
+ profit_percent?: number;
350
+ risk_reward?: number;
351
+ exclude_coins?: {
352
+ bullish?: string[];
353
+ };
354
+ include_delisted?: boolean;
355
+ }
356
+ export interface SymbolConfig extends BaseSystemFields {
357
+ symbol: string;
358
+ support?: number;
359
+ resistance?: number;
360
+ stop_percent?: number;
361
+ price_places?: string;
362
+ decimal_places?: string;
363
+ min_size?: number;
364
+ weight?: number;
365
+ leverage?: number;
366
+ candle_count?: number;
367
+ interval?: any;
368
+ fee_percent?: number;
369
+ }
370
+ export interface ScheduledTrade extends BaseSystemFields {
371
+ symbol: string;
372
+ account: string;
373
+ profit?: number;
374
+ risk?: number;
375
+ entry?: number;
376
+ stop?: number;
377
+ risk_reward?: number;
378
+ profit_percent?: number;
379
+ place_tp?: boolean;
380
+ kind?: "long" | "short";
381
+ follow?: boolean | 1 | 0;
382
+ reduce_ratio?: number;
383
+ sell_ratio?: number;
384
+ threshold_qty?: number;
385
+ pause_tp?: boolean;
386
+ stop_percent?: number;
387
+ kelly?: {
388
+ use_kelly?: boolean;
389
+ kelly_confidence_factor?: number;
390
+ kelly_minimum_risk?: number;
391
+ kelly_prediction_model?: "exponential" | "normal" | "uniform";
392
+ };
393
+ distribution?: GetEntriesParams["distribution"];
394
+ distribution_params?: {
395
+ curveFactor?: number;
396
+ stdDevFactor?: number;
397
+ lambda?: number;
398
+ };
399
+ settings?: {
400
+ gap_trading?: {
401
+ entry_risk?: number;
402
+ hedge_stop_ratio?: number;
403
+ };
404
+ bad_hedge?: {
405
+ hedges_distribution?: GetEntriesParams["distribution"];
406
+ hedges_ratio?: number;
407
+ opposite_trade_distribution?: GetEntriesParams["distribution"];
408
+ opposite_trade_ratio?: number;
409
+ stop_loss?: number;
410
+ };
411
+ };
412
+ }
413
+ export interface AccountStrategy extends BaseSystemFields {
414
+ account: string;
415
+ symbol: string;
416
+ risk?: number;
417
+ reward_factor?: number;
418
+ kind?: "long" | "short";
419
+ support?: number;
420
+ resistance?: number;
421
+ running?: boolean;
422
+ max_reward_factor?: number;
423
+ follow?: boolean;
424
+ risk_reward?: number;
425
+ dynamic?: boolean;
426
+ }
427
+ interface Proxy$1 extends BaseSystemFields {
428
+ ip_address?: string;
429
+ type?: "http" | "socks5";
430
+ }
431
+ export interface PositionsView {
432
+ id: string;
433
+ symbol?: any;
434
+ entry?: any;
435
+ quantity?: any;
436
+ take_profit?: any;
437
+ account?: any;
438
+ kind?: any;
439
+ target_pnl?: number;
440
+ liquidation?: number;
441
+ avg_price?: number;
442
+ avg_qty?: number;
443
+ next_order?: number;
444
+ last_order?: number;
445
+ config?: any;
446
+ stop_loss?: {
447
+ price: number;
448
+ quantity: number;
449
+ };
450
+ stop_pnl?: any;
451
+ leverage?: any;
452
+ avg_liquidation?: any;
453
+ balance?: any;
454
+ reduce_ratio?: number;
455
+ sell_ratio?: number;
456
+ threshold_qty?: number;
457
+ follow?: boolean | 1 | 0;
458
+ current_price?: number;
459
+ usd_balance?: number;
460
+ tp?: {
461
+ price: number;
462
+ quantity: number;
463
+ };
464
+ next_risk?: number;
465
+ proxy?: string;
466
+ expand?: {
467
+ p_account?: ExchangeAccount;
468
+ b_config?: ScheduledTrade;
469
+ proxy?: Proxy$1;
470
+ account_strategy?: AccountStrategy;
471
+ compound_instance?: CompoundInstance;
472
+ support?: SupportTable;
473
+ symbol_config: SymbolConfig;
474
+ resistance?: SupportTable;
475
+ anchor?: Omit<PositionsView, "expand">;
476
+ record?: any;
477
+ };
478
+ pnl?: number;
479
+ support_price?: number;
480
+ }
481
+ export interface Compounder extends BaseSystemFields {
482
+ risk?: number;
483
+ profit_percent?: number;
484
+ owner?: string;
485
+ completed?: boolean;
486
+ start_balance?: number;
487
+ starting_risk?: number;
488
+ fee_rate?: number;
489
+ }
490
+ export interface CompoundInstance extends BaseSystemFields {
491
+ ref?: string;
492
+ position?: string;
493
+ risk?: number;
494
+ hedged?: boolean;
495
+ loss?: number;
496
+ expand?: {
497
+ ref?: Compounder;
498
+ };
499
+ }
500
+ export interface SupportTable extends BaseSystemFields {
501
+ symbol?: string;
502
+ price?: number;
503
+ counter?: number;
504
+ last_updated?: string;
505
+ kind?: "long" | "short";
506
+ }
231
507
  export type AppConfig = {
232
508
  fee: number;
233
509
  risk_per_trade: number;
@@ -255,6 +531,20 @@ export type AppConfig = {
255
531
  max_size?: number;
256
532
  last_value?: any;
257
533
  entries?: any[];
534
+ max_quantity?: number;
535
+ kelly?: {
536
+ use_kelly?: boolean;
537
+ kelly_confidence_factor?: number;
538
+ kelly_minimum_risk?: number;
539
+ kelly_prediction_model?: "exponential" | "normal" | "uniform";
540
+ kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
541
+ };
542
+ distribution?: GetEntriesParams["distribution"];
543
+ distribution_params?: {
544
+ curveFactor?: number;
545
+ stdDevFactor?: number;
546
+ lambda?: number;
547
+ };
258
548
  };
259
549
  export type ExtendConfigType = {
260
550
  take_profit?: number;
@@ -271,8 +561,20 @@ export type ExtendConfigType = {
271
561
  kind?: "long" | "short";
272
562
  gap?: number;
273
563
  rr?: number;
564
+ min_avg_size?: number;
565
+ use_kelly?: boolean;
566
+ kelly_confidence_factor?: number;
567
+ kelly_minimum_risk?: number;
568
+ kelly_prediction_model?: "exponential" | "normal" | "uniform";
569
+ kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
570
+ distribution?: GetEntriesParams["distribution"];
571
+ distribution_params?: {
572
+ curveFactor?: number;
573
+ stdDevFactor?: number;
574
+ lambda?: number;
575
+ };
274
576
  };
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;
577
+ 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, }: ExtendConfigType): any[] | Signal;
276
578
  export declare function buildAvg({ _trades, kind, }: {
277
579
  _trades: any[];
278
580
  kind: "long" | "short";
@@ -282,6 +584,17 @@ export declare function get_app_config_and_max_size(config: GlobalConfig, payloa
282
584
  entry: number;
283
585
  stop: number;
284
586
  kind: "long" | "short";
587
+ use_kelly?: boolean;
588
+ kelly_confidence_factor?: number;
589
+ kelly_minimum_risk?: number;
590
+ kelly_prediction_model?: "exponential" | "normal" | "uniform";
591
+ kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
592
+ distribution?: GetEntriesParams["distribution"];
593
+ distribution_params?: {
594
+ curveFactor?: number;
595
+ stdDevFactor?: number;
596
+ lambda?: number;
597
+ };
285
598
  }): {
286
599
  app_config: AppConfig;
287
600
  max_size: any;
@@ -301,11 +614,28 @@ export declare function buildAppConfig(config: GlobalConfig, payload: {
301
614
  risk: number;
302
615
  symbol: string;
303
616
  profit?: number;
617
+ use_kelly?: boolean;
618
+ kelly_confidence_factor?: number;
619
+ kelly_minimum_risk?: number;
620
+ kelly_prediction_model?: "exponential" | "normal" | "uniform";
621
+ kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
622
+ distribution?: GetEntriesParams["distribution"];
623
+ distribution_params?: {
624
+ curveFactor?: number;
625
+ stdDevFactor?: number;
626
+ lambda?: number;
627
+ };
304
628
  }): AppConfig;
305
629
  export declare function getOptimumStopAndRisk(app_config: AppConfig, params: {
306
630
  max_size: number;
307
631
  target_stop: number;
308
632
  highest_risk?: number;
633
+ distribution?: GetEntriesParams["distribution"];
634
+ distribution_params?: {
635
+ curveFactor?: number;
636
+ stdDevFactor?: number;
637
+ lambda?: number;
638
+ };
309
639
  }): {
310
640
  optimal_stop: number;
311
641
  optimal_risk: number;
@@ -362,26 +692,82 @@ export declare function generateOptimumAppConfig(config: GlobalConfig, payload:
362
692
  risk_reward: number;
363
693
  start_risk: number;
364
694
  max_risk?: number;
695
+ distribution?: GetEntriesParams["distribution"];
696
+ distribution_params?: {
697
+ curveFactor?: number;
698
+ stdDevFactor?: number;
699
+ lambda?: number;
700
+ };
365
701
  }, position: {
366
702
  entry: number;
367
703
  quantity: number;
368
704
  kind: "long" | "short";
369
705
  }): AppConfig | null;
370
- export declare function determineOptimumReward(app_config: AppConfig, increase?: boolean, low_range?: number, high_range?: number): number | {
706
+ export declare function determineOptimumReward(payload: {
707
+ app_config: AppConfig;
708
+ increase?: boolean;
709
+ low_range?: number;
710
+ high_range?: number;
711
+ target_loss?: number;
712
+ distribution?: GetEntriesParams["distribution"];
713
+ distribution_params?: {
714
+ curveFactor?: number;
715
+ stdDevFactor?: number;
716
+ lambda?: number;
717
+ };
718
+ max_size?: number;
719
+ }): number | {
371
720
  result: any[];
372
721
  value: number;
373
722
  total: number;
374
723
  risk_per_trade: number;
375
724
  max: number;
376
725
  min: number;
726
+ avg_size: any;
377
727
  neg_pnl: any;
378
728
  entry: any;
379
729
  };
730
+ export declare function determineOptimumRisk(config: GlobalConfig, payload: {
731
+ entry: number;
732
+ stop: number;
733
+ risk_reward: number;
734
+ risk: number;
735
+ symbol: string;
736
+ distribution?: GetEntriesParams["distribution"];
737
+ distribution_params?: {
738
+ curveFactor?: number;
739
+ stdDevFactor?: number;
740
+ lambda?: number;
741
+ };
742
+ }, params: {
743
+ highest_risk: number;
744
+ tolerance?: number;
745
+ max_iterations?: number;
746
+ }): {
747
+ optimal_risk: number;
748
+ achieved_neg_pnl: number;
749
+ target_neg_pnl: number;
750
+ difference: number;
751
+ iterations: number;
752
+ converged: boolean;
753
+ last_value: any;
754
+ entries: any[];
755
+ app_config: AppConfig;
756
+ };
380
757
  export declare function computeRiskReward(payload: {
381
758
  app_config: AppConfig;
382
759
  entry: number;
383
760
  stop: number;
384
761
  risk_per_trade: number;
762
+ target_loss?: number;
763
+ distribution?: GetEntriesParams["distribution"];
764
+ distribution_params?: {
765
+ curveFactor?: number;
766
+ stdDevFactor?: number;
767
+ lambda?: number;
768
+ };
769
+ high_range?: number;
770
+ max_size?: number;
385
771
  }): number | {
386
772
  result: any[];
387
773
  value: number;
@@ -389,6 +775,7 @@ export declare function computeRiskReward(payload: {
389
775
  risk_per_trade: number;
390
776
  max: number;
391
777
  min: number;
778
+ avg_size: any;
392
779
  neg_pnl: any;
393
780
  entry: any;
394
781
  };
@@ -397,6 +784,17 @@ export declare function getRiskReward(payload: {
397
784
  stop: number;
398
785
  risk: number;
399
786
  global_config: GlobalConfig;
787
+ force_exact_risk?: boolean;
788
+ target_loss?: number;
789
+ max_size?: number;
790
+ distribution?: GetEntriesParams["distribution"];
791
+ distribution_params?: {
792
+ curveFactor?: number;
793
+ stdDevFactor?: number;
794
+ lambda?: number;
795
+ };
796
+ risk_factor?: number;
797
+ high_range?: number;
400
798
  }): any;
401
799
  export declare function computeProfitDetail(payload: {
402
800
  focus_position: {
@@ -406,11 +804,12 @@ export declare function computeProfitDetail(payload: {
406
804
  avg_qty: number;
407
805
  avg_price: number;
408
806
  };
409
- strategy: {
807
+ strategy?: {
410
808
  reward_factor: number;
411
809
  max_reward_factor: number;
412
810
  risk: number;
413
811
  };
812
+ pnl: number;
414
813
  reduce_position?: {
415
814
  kind: "long" | "short";
416
815
  entry: number;
@@ -427,11 +826,13 @@ export declare function computeProfitDetail(payload: {
427
826
  quantity: number;
428
827
  };
429
828
  };
829
+ full_ratio?: number;
430
830
  price_places?: string;
431
831
  decimal_places?: string;
432
832
  }): {
433
833
  pnl: number;
434
834
  loss: number;
835
+ full_loss: number;
435
836
  original_pnl: number;
436
837
  reward_factor: number;
437
838
  profit_percent: number;
@@ -450,21 +851,251 @@ export declare function generateGapTp(payload: {
450
851
  entry: number;
451
852
  quantity: number;
452
853
  };
854
+ risk?: number;
855
+ kind?: "long" | "short";
453
856
  factor?: number;
857
+ sell_factor?: number;
454
858
  price_places?: string;
455
859
  decimal_places?: string;
456
860
  }): {
457
- long_tp: number;
458
- short_tp: number;
459
- short_to_reduce: number;
460
- long_to_reduce: number;
461
- to_sell: {
861
+ profit_percent: {
862
+ long: number;
863
+ short: number;
864
+ };
865
+ risk: {
866
+ short: number;
867
+ long: number;
868
+ };
869
+ take_profit: {
870
+ long: number;
871
+ short: number;
872
+ };
873
+ to_reduce: {
874
+ short: number;
875
+ long: number;
876
+ };
877
+ full_reduce: {
878
+ short: number;
879
+ long: number;
880
+ };
881
+ sell_quantity: {
462
882
  short: number;
463
883
  long: number;
464
884
  };
465
885
  gap: number;
466
886
  gap_loss: number;
467
887
  };
888
+ export declare function calculateFactorFromTakeProfit(payload: {
889
+ long: {
890
+ entry: number;
891
+ quantity: number;
892
+ };
893
+ short: {
894
+ entry: number;
895
+ quantity: number;
896
+ };
897
+ knownTp: number;
898
+ tpType: "long" | "short";
899
+ price_places?: string;
900
+ }): number;
901
+ export declare function calculateFactorFromSellQuantity(payload: {
902
+ long: {
903
+ entry: number;
904
+ quantity: number;
905
+ };
906
+ short: {
907
+ entry: number;
908
+ quantity: number;
909
+ };
910
+ knownSellQuantity: number;
911
+ sellType: "long" | "short";
912
+ sell_factor?: number;
913
+ price_places?: string;
914
+ decimal_places?: string;
915
+ }): number;
916
+ export declare function determineRewardFactor(payload: {
917
+ quantity: number;
918
+ avg_qty: number;
919
+ minimum_pnl: number;
920
+ risk: number;
921
+ }): number;
922
+ export type BotPosition = {
923
+ kind: "long" | "short";
924
+ entry: number;
925
+ quantity: number;
926
+ tp: {
927
+ price: number;
928
+ };
929
+ };
930
+ export declare function getHedgeZone(payload: {
931
+ symbol_config: GlobalConfig;
932
+ risk: number;
933
+ position: BotPosition;
934
+ reward_factor?: number;
935
+ risk_factor?: number;
936
+ support?: number;
937
+ }): {
938
+ support: number;
939
+ resistance: number;
940
+ risk: number;
941
+ profit_percent: number;
942
+ };
943
+ export declare function getOptimumHedgeFactor(payload: {
944
+ target_support: number;
945
+ tolerance?: number;
946
+ max_iterations?: number;
947
+ min_factor?: number;
948
+ max_factor?: number;
949
+ symbol_config: GlobalConfig;
950
+ risk: number;
951
+ position: BotPosition;
952
+ }): {
953
+ reward_factor: number;
954
+ achieved_support: number;
955
+ target_support: number;
956
+ difference: number;
957
+ iterations: number;
958
+ converged?: undefined;
959
+ } | {
960
+ reward_factor: number;
961
+ achieved_support: number;
962
+ target_support: number;
963
+ difference: number;
964
+ iterations: number;
965
+ converged: boolean;
966
+ };
967
+ export type CType = {
968
+ next_order: number;
969
+ take_profit: number;
970
+ };
971
+ export declare function determineCompoundLongTrade(payload: {
972
+ focus_short_position: CType;
973
+ focus_long_position: CType;
974
+ shortConfig: {
975
+ entry: number;
976
+ stop: number;
977
+ risk_reward: number;
978
+ risk: number;
979
+ symbol: string;
980
+ profit_percent: number;
981
+ };
982
+ rr?: number;
983
+ global_config: GlobalConfig;
984
+ }): {
985
+ start_risk: number;
986
+ short_profit: number;
987
+ support: number;
988
+ resistance: number;
989
+ long_v: any;
990
+ profit_percent: number;
991
+ result: any;
992
+ short_max_size: any;
993
+ };
994
+ export declare function generateOppositeTradeConfig(payload: {
995
+ kind: "long" | "short";
996
+ entry: number;
997
+ quantity: number;
998
+ target_pnl: number;
999
+ global_config: GlobalConfig;
1000
+ ratio?: number;
1001
+ }): {
1002
+ entry: number;
1003
+ stop: number;
1004
+ risk: number;
1005
+ risk_reward: number | {
1006
+ result: any[];
1007
+ value: number;
1008
+ total: number;
1009
+ risk_per_trade: number;
1010
+ max: number;
1011
+ min: number;
1012
+ avg_size: any;
1013
+ neg_pnl: any;
1014
+ entry: any;
1015
+ };
1016
+ };
1017
+ export declare function constructAppConfig(payload: {
1018
+ account: PositionsView;
1019
+ global_config: GlobalConfig;
1020
+ kelly_config?: {
1021
+ use_kelly: boolean;
1022
+ kelly_confidence_factor: number;
1023
+ kelly_minimum_risk: number;
1024
+ kelly_prediction_model: string;
1025
+ };
1026
+ distribution_config?: {
1027
+ distribution?: GetEntriesParams["distribution"];
1028
+ distribution_params?: {
1029
+ curveFactor?: number;
1030
+ stdDevFactor?: number;
1031
+ lambda?: number;
1032
+ };
1033
+ };
1034
+ }): {
1035
+ fee: number;
1036
+ risk_per_trade: number;
1037
+ risk_reward: number;
1038
+ symbol?: string;
1039
+ focus: number;
1040
+ budget: number;
1041
+ support: number;
1042
+ resistance: number;
1043
+ percent_change: number;
1044
+ tradeSplit?: number;
1045
+ take_profit?: number;
1046
+ kind: "long" | "short";
1047
+ entry: number;
1048
+ stop: number;
1049
+ min_size: number;
1050
+ price_places?: string;
1051
+ strategy?: "quantity" | "entry";
1052
+ as_array?: boolean;
1053
+ decimal_places?: string;
1054
+ min_profit?: number;
1055
+ raw?: boolean;
1056
+ gap?: number;
1057
+ rr?: number;
1058
+ max_size?: number;
1059
+ last_value?: any;
1060
+ max_quantity?: number;
1061
+ kelly?: {
1062
+ use_kelly?: boolean;
1063
+ kelly_confidence_factor?: number;
1064
+ kelly_minimum_risk?: number;
1065
+ kelly_prediction_model?: "exponential" | "normal" | "uniform";
1066
+ kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
1067
+ };
1068
+ distribution?: GetEntriesParams["distribution"];
1069
+ distribution_params?: {
1070
+ curveFactor?: number;
1071
+ stdDevFactor?: number;
1072
+ lambda?: number;
1073
+ };
1074
+ };
1075
+ export declare function generateDangerousConfig(payload: {
1076
+ account: PositionsView;
1077
+ global_config: GlobalConfig;
1078
+ config: {
1079
+ quantity: number;
1080
+ stop: number;
1081
+ entry: number;
1082
+ };
1083
+ }): {
1084
+ entry: number;
1085
+ risk: number;
1086
+ stop: number;
1087
+ risk_reward: number | {
1088
+ result: any[];
1089
+ value: number;
1090
+ total: number;
1091
+ risk_per_trade: number;
1092
+ max: number;
1093
+ min: number;
1094
+ avg_size: any;
1095
+ neg_pnl: any;
1096
+ entry: any;
1097
+ };
1098
+ };
468
1099
  export type StrategyPosition = {
469
1100
  entry: number;
470
1101
  quantity: number;
@@ -650,15 +1281,48 @@ export declare class Strategy {
650
1281
  gap?: number;
651
1282
  rr?: number;
652
1283
  max_size?: number;
1284
+ max_quantity?: number;
1285
+ kelly?: {
1286
+ use_kelly?: boolean;
1287
+ kelly_confidence_factor?: number;
1288
+ kelly_minimum_risk?: number;
1289
+ kelly_prediction_model?: "exponential" | "normal" | "uniform";
1290
+ kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
1291
+ };
1292
+ distribution?: GetEntriesParams["distribution"];
1293
+ distribution_params?: {
1294
+ curveFactor?: number;
1295
+ stdDevFactor?: number;
1296
+ lambda?: number;
1297
+ };
653
1298
  };
654
1299
  identifyGapConfig(payload: {
655
1300
  factor?: number;
1301
+ sell_factor?: number;
1302
+ kind?: "long" | "short";
1303
+ risk?: number;
656
1304
  }): {
657
- long_tp: number;
658
- short_tp: number;
659
- short_to_reduce: number;
660
- long_to_reduce: number;
661
- to_sell: {
1305
+ profit_percent: {
1306
+ long: number;
1307
+ short: number;
1308
+ };
1309
+ risk: {
1310
+ short: number;
1311
+ long: number;
1312
+ };
1313
+ take_profit: {
1314
+ long: number;
1315
+ short: number;
1316
+ };
1317
+ to_reduce: {
1318
+ short: number;
1319
+ long: number;
1320
+ };
1321
+ full_reduce: {
1322
+ short: number;
1323
+ long: number;
1324
+ };
1325
+ sell_quantity: {
662
1326
  short: number;
663
1327
  long: number;
664
1328
  };
@@ -673,6 +1337,7 @@ export declare class Strategy {
673
1337
  }): {
674
1338
  pnl: number;
675
1339
  loss: number;
1340
+ full_loss: number;
676
1341
  original_pnl: number;
677
1342
  reward_factor: number;
678
1343
  profit_percent: number;
@@ -682,6 +1347,402 @@ export declare class Strategy {
682
1347
  price_places: string;
683
1348
  decimal_places: string;
684
1349
  };
1350
+ simulateGapReduction(payload: {
1351
+ iterations?: number;
1352
+ factor?: number;
1353
+ direction: "long" | "short";
1354
+ kind?: "long" | "short";
1355
+ risk?: number;
1356
+ sell_factor?: number;
1357
+ }): {
1358
+ results: {
1359
+ profit_percent: {
1360
+ long: number;
1361
+ short: number;
1362
+ };
1363
+ risk: {
1364
+ short: number;
1365
+ long: number;
1366
+ };
1367
+ take_profit: {
1368
+ long: number;
1369
+ short: number;
1370
+ };
1371
+ sell_quantity: {
1372
+ short: number;
1373
+ long: number;
1374
+ };
1375
+ gap_loss: number;
1376
+ position: {
1377
+ long: {
1378
+ entry: number;
1379
+ quantity: number;
1380
+ };
1381
+ short: {
1382
+ entry: number;
1383
+ quantity: number;
1384
+ };
1385
+ };
1386
+ }[];
1387
+ quantity: number;
1388
+ };
1389
+ }
1390
+ export interface ComputedTrade {
1391
+ entry: number;
1392
+ quantity: number;
1393
+ avg_size: number;
1394
+ neg_pnl: number;
1395
+ avg_entry: number;
1396
+ stop: number;
1397
+ reverse_avg_entry: number;
1398
+ reverse_avg_quantity: number;
1399
+ fee: number;
685
1400
  }
1401
+ export type TradeConfig = {
1402
+ entry: number;
1403
+ stop: number;
1404
+ risk_reward: number;
1405
+ risk: number;
1406
+ symbol: string;
1407
+ distribution?: GetEntriesParams["distribution"];
1408
+ distribution_params?: {
1409
+ curveFactor?: number;
1410
+ stdDevFactor?: number;
1411
+ lambda?: number;
1412
+ };
1413
+ };
1414
+ declare function constructAppConfig$1({ config, global_config, }: {
1415
+ config: TradeConfig;
1416
+ global_config: GlobalConfig;
1417
+ }): {
1418
+ fee: number;
1419
+ risk_per_trade: number;
1420
+ risk_reward: number;
1421
+ symbol?: string;
1422
+ focus: number;
1423
+ budget: number;
1424
+ support: number;
1425
+ resistance: number;
1426
+ percent_change: number;
1427
+ tradeSplit?: number;
1428
+ take_profit?: number;
1429
+ kind: "long" | "short";
1430
+ entry: number;
1431
+ stop: number;
1432
+ min_size: number;
1433
+ price_places?: string;
1434
+ strategy?: "quantity" | "entry";
1435
+ as_array?: boolean;
1436
+ decimal_places?: string;
1437
+ min_profit?: number;
1438
+ raw?: boolean;
1439
+ gap?: number;
1440
+ rr?: number;
1441
+ max_size?: number;
1442
+ last_value?: any;
1443
+ max_quantity?: number;
1444
+ kelly?: {
1445
+ use_kelly?: boolean;
1446
+ kelly_confidence_factor?: number;
1447
+ kelly_minimum_risk?: number;
1448
+ kelly_prediction_model?: "exponential" | "normal" | "uniform";
1449
+ kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
1450
+ };
1451
+ distribution?: GetEntriesParams["distribution"];
1452
+ distribution_params?: {
1453
+ curveFactor?: number;
1454
+ stdDevFactor?: number;
1455
+ lambda?: number;
1456
+ };
1457
+ };
1458
+ declare function buildWithOptimumReward({ config, settings, global_config, force_exact, }: {
1459
+ config: TradeConfig;
1460
+ global_config: GlobalConfig;
1461
+ settings: {
1462
+ entry?: number;
1463
+ stop?: number;
1464
+ risk: number;
1465
+ stop_ratio?: number;
1466
+ risk_reward?: number;
1467
+ distribution?: GetEntriesParams["distribution"];
1468
+ distribution_params?: {
1469
+ curveFactor?: number;
1470
+ stdDevFactor?: number;
1471
+ lambda?: number;
1472
+ };
1473
+ };
1474
+ force_exact?: boolean;
1475
+ }): {
1476
+ trades: any[];
1477
+ summary: {
1478
+ entry: number;
1479
+ stop: number;
1480
+ risk: number;
1481
+ risk_reward: any;
1482
+ avg_entry: number;
1483
+ avg_size: number;
1484
+ first_entry: number;
1485
+ pnl: number;
1486
+ fee: number;
1487
+ loss: number;
1488
+ last_entry: number;
1489
+ margin: number;
1490
+ };
1491
+ config: any;
1492
+ stop_order: {
1493
+ quantity: number;
1494
+ price: number;
1495
+ };
1496
+ kind: string;
1497
+ };
1498
+ declare function generateOppositeOptimum({ config, global_config, settings, ratio, distribution, distribution_params, risk_factor, }: {
1499
+ settings: {
1500
+ entry: number;
1501
+ stop: number;
1502
+ risk: number;
1503
+ };
1504
+ config: TradeConfig;
1505
+ global_config: GlobalConfig;
1506
+ fee_percent?: number;
1507
+ ratio?: number;
1508
+ distribution?: any;
1509
+ distribution_params?: {
1510
+ curveFactor?: number;
1511
+ stdDevFactor?: number;
1512
+ lambda?: number;
1513
+ };
1514
+ risk_factor?: number;
1515
+ }): {
1516
+ trades: any[];
1517
+ summary: any;
1518
+ config: {
1519
+ entry: number;
1520
+ stop: number;
1521
+ risk: number;
1522
+ distribution: any;
1523
+ distribution_params: {
1524
+ curveFactor?: number;
1525
+ stdDevFactor?: number;
1526
+ lambda?: number;
1527
+ };
1528
+ risk_factor: number;
1529
+ };
1530
+ kind: string;
1531
+ } | {
1532
+ trades: any[];
1533
+ summary: {
1534
+ entry: number;
1535
+ stop: number;
1536
+ risk: number;
1537
+ risk_reward: any;
1538
+ avg_entry: number;
1539
+ avg_size: number;
1540
+ first_entry: number;
1541
+ pnl: number;
1542
+ fee: number;
1543
+ loss: number;
1544
+ last_entry: number;
1545
+ defaultEntry: number;
1546
+ };
1547
+ config: any;
1548
+ kind: string;
1549
+ };
1550
+ declare function increaseTradeHelper({ increase_qty, stop, config, global_config, style, entry, position, stop_ratio, distribution: default_distribution, distribution_params: default_distribution_params, }: {
1551
+ position: {
1552
+ entry: number;
1553
+ quantity: number;
1554
+ };
1555
+ entry: number;
1556
+ stop: number;
1557
+ config: TradeConfig;
1558
+ global_config: GlobalConfig;
1559
+ increase_qty: number;
1560
+ style: "minimum" | "optimum";
1561
+ stop_ratio?: number;
1562
+ distribution?: any;
1563
+ distribution_params?: {
1564
+ curveFactor?: number;
1565
+ stdDevFactor?: number;
1566
+ lambda?: number;
1567
+ };
1568
+ }): {
1569
+ trades: any[];
1570
+ summary: any;
1571
+ config: any;
1572
+ kind: string;
1573
+ current: {
1574
+ trades: any[];
1575
+ summary: {
1576
+ first_entry: number;
1577
+ last_entry: number;
1578
+ quantity: number;
1579
+ entry: number;
1580
+ loss: number;
1581
+ number_of_trades: number;
1582
+ fee: number;
1583
+ anchor_pnl: any;
1584
+ };
1585
+ };
1586
+ stop_order?: undefined;
1587
+ } | {
1588
+ trades: any[];
1589
+ summary: {
1590
+ entry: number;
1591
+ stop: number;
1592
+ risk: number;
1593
+ risk_reward: any;
1594
+ avg_entry: number;
1595
+ avg_size: number;
1596
+ first_entry: number;
1597
+ pnl: number;
1598
+ fee: number;
1599
+ loss: number;
1600
+ last_entry: number;
1601
+ margin: number;
1602
+ };
1603
+ stop_order: {
1604
+ quantity: number;
1605
+ price: number;
1606
+ };
1607
+ config: any;
1608
+ kind: string;
1609
+ current: {
1610
+ trades: any[];
1611
+ summary: {
1612
+ first_entry: number;
1613
+ last_entry: number;
1614
+ quantity: number;
1615
+ entry: number;
1616
+ loss: number;
1617
+ number_of_trades: number;
1618
+ fee: number;
1619
+ anchor_pnl: any;
1620
+ };
1621
+ };
1622
+ };
1623
+ declare function generatePositionIncreaseTrade({ account, zoneAccount, ratio, config, global_config, style, distribution, distribution_params, }: {
1624
+ style?: "optimum" | "minimum";
1625
+ account: {
1626
+ long: {
1627
+ entry: number;
1628
+ quantity: number;
1629
+ };
1630
+ short: {
1631
+ entry: number;
1632
+ quantity: number;
1633
+ };
1634
+ };
1635
+ config: TradeConfig;
1636
+ global_config: GlobalConfig;
1637
+ zoneAccount: {
1638
+ entry: number;
1639
+ stop: number;
1640
+ };
1641
+ ratio?: number;
1642
+ distribution?: any;
1643
+ distribution_params?: {
1644
+ curveFactor?: number;
1645
+ stdDevFactor?: number;
1646
+ lambda?: number;
1647
+ };
1648
+ }): {
1649
+ trades: any[];
1650
+ summary: any;
1651
+ config: any;
1652
+ kind: string;
1653
+ current: {
1654
+ trades: any[];
1655
+ summary: {
1656
+ first_entry: number;
1657
+ last_entry: number;
1658
+ quantity: number;
1659
+ entry: number;
1660
+ loss: number;
1661
+ number_of_trades: number;
1662
+ fee: number;
1663
+ anchor_pnl: any;
1664
+ };
1665
+ };
1666
+ stop_order?: undefined;
1667
+ } | {
1668
+ trades: any[];
1669
+ summary: {
1670
+ entry: number;
1671
+ stop: number;
1672
+ risk: number;
1673
+ risk_reward: any;
1674
+ avg_entry: number;
1675
+ avg_size: number;
1676
+ first_entry: number;
1677
+ pnl: number;
1678
+ fee: number;
1679
+ loss: number;
1680
+ last_entry: number;
1681
+ margin: number;
1682
+ };
1683
+ stop_order: {
1684
+ quantity: number;
1685
+ price: number;
1686
+ };
1687
+ config: any;
1688
+ kind: string;
1689
+ current: {
1690
+ trades: any[];
1691
+ summary: {
1692
+ first_entry: number;
1693
+ last_entry: number;
1694
+ quantity: number;
1695
+ entry: number;
1696
+ loss: number;
1697
+ number_of_trades: number;
1698
+ fee: number;
1699
+ anchor_pnl: any;
1700
+ };
1701
+ };
1702
+ };
1703
+ declare function determineHedgeTradeToPlace({ position, config, global_config, profit_risk, allowable_loss, }: {
1704
+ position: {
1705
+ entry: number;
1706
+ quantity: number;
1707
+ kind: "long" | "short";
1708
+ };
1709
+ config: TradeConfig;
1710
+ global_config: GlobalConfig;
1711
+ profit_risk?: number;
1712
+ allowable_loss?: number;
1713
+ }): {
1714
+ opposite: {
1715
+ trades: any[];
1716
+ summary: {
1717
+ entry: number;
1718
+ stop: number;
1719
+ risk: number;
1720
+ risk_reward: any;
1721
+ avg_entry: number;
1722
+ avg_size: number;
1723
+ first_entry: number;
1724
+ pnl: number;
1725
+ fee: number;
1726
+ loss: number;
1727
+ last_entry: number;
1728
+ margin: number;
1729
+ };
1730
+ config: any;
1731
+ stop_order: {
1732
+ quantity: number;
1733
+ price: number;
1734
+ };
1735
+ kind: string;
1736
+ };
1737
+ take_profit: number;
1738
+ };
1739
+ export declare const compoundAPI: {
1740
+ determineHedgeTradeToPlace: typeof determineHedgeTradeToPlace;
1741
+ buildWithOptimumReward: typeof buildWithOptimumReward;
1742
+ constructAppConfig: typeof constructAppConfig$1;
1743
+ generateOppositeOptimum: typeof generateOppositeOptimum;
1744
+ increaseTradeHelper: typeof increaseTradeHelper;
1745
+ generatePositionIncreaseTrade: typeof generatePositionIncreaseTrade;
1746
+ };
686
1747
 
687
1748
  export {};