@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.
@@ -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,42 @@ 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
+ };
173
+ use_progressive_risk?: boolean;
174
+ risk_distribution?: {
175
+ enabled: boolean;
176
+ total_risk_budget: number;
177
+ risk_reward: number;
178
+ buckets: Array<{
179
+ zone_percentage: number;
180
+ risk_percentage: number;
181
+ }>;
182
+ };
102
183
  };
103
184
  declare class Signal {
104
185
  focus: number;
105
186
  budget: number;
106
187
  percent_change: number;
107
188
  price_places: string;
189
+ distribution_params: {
190
+ curveFactor?: number;
191
+ stdDevFactor?: number;
192
+ lambda?: number;
193
+ };
108
194
  decimal_places: string;
109
195
  zone_risk: number;
110
196
  fee: number;
@@ -121,8 +207,29 @@ declare class Signal {
121
207
  first_order_size: number;
122
208
  gap: number;
123
209
  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, }: {
210
+ use_kelly: boolean;
211
+ kelly_prediction_model: "exponential" | "normal" | "uniform";
212
+ kelly_confidence_factor: number;
213
+ kelly_minimum_risk: number;
214
+ kelly_func: "theoretical" | "position_based" | "theoretical_fixed";
215
+ symbol?: string;
216
+ distribution: {
217
+ long: GetEntriesParams["distribution"];
218
+ short: GetEntriesParams["distribution"];
219
+ };
220
+ use_progressive_risk?: boolean;
221
+ risk_distribution?: {
222
+ enabled: boolean;
223
+ total_risk_budget: number;
224
+ risk_reward: number;
225
+ buckets: Array<{
226
+ zone_percentage: number;
227
+ risk_percentage: number;
228
+ }>;
229
+ };
230
+ max_quantity: number;
231
+ 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);
232
+ build_entry({ current_price, stop_loss, pnl, stop_percent, kind, risk, no_of_trades, take_profit, distribution, distribution_params, }: {
126
233
  take_profit?: number;
127
234
  no_of_trades?: number;
128
235
  current_price: number;
@@ -131,6 +238,17 @@ declare class Signal {
131
238
  risk: number;
132
239
  stop_percent?: number;
133
240
  pnl?: number;
241
+ distribution?: GetEntriesParams["distribution"];
242
+ distribution_params?: {
243
+ curveFactor?: number;
244
+ stdDevFactor?: number;
245
+ lambda?: number;
246
+ use_progressive?: boolean;
247
+ buckets?: Array<{
248
+ zone_percentage: number;
249
+ risk_percentage: number;
250
+ }>;
251
+ };
134
252
  }): any;
135
253
  get risk(): number;
136
254
  get min_trades(): number;
@@ -164,6 +282,11 @@ declare class Signal {
164
282
  kind?: "long" | "short";
165
283
  limit?: boolean;
166
284
  }): any;
285
+ get_future_zones_simple({ current_price, kind, raw, }: {
286
+ raw?: boolean;
287
+ current_price: number;
288
+ kind?: "long" | "short";
289
+ }): number[];
167
290
  get_future_zones({ current_price, kind, raw, }: {
168
291
  raw?: boolean;
169
292
  current_price: number;
@@ -175,6 +298,14 @@ declare class Signal {
175
298
  kind?: "long" | "short";
176
299
  }): number[][];
177
300
  get_margin_range(current_price: number, kind?: string): number[];
301
+ /**
302
+ * Helper function to calculate zone-specific risk based on progressive risk distribution
303
+ * @param index - The index of the current zone
304
+ * @param totalZones - Total number of zones
305
+ * @param account - Account configuration with risk settings
306
+ * @returns The risk amount for the specific zone
307
+ */
308
+ private getZoneRisk;
178
309
  process_orders({ current_price, stop_loss, trade_zones, kind, }: {
179
310
  current_price: number;
180
311
  stop_loss: number;
@@ -208,26 +339,204 @@ declare class Signal {
208
339
  to_df(currentPrice: number, places?: string): number;
209
340
  }
210
341
  export type GlobalConfig = {
211
- profit_percent: number;
342
+ profit_percent?: number;
212
343
  symbol: string;
213
- profit: number;
214
- risk: number;
215
- stop_percent: number;
344
+ profit?: number;
345
+ risk?: number;
346
+ stop_percent?: number;
216
347
  kind: "long" | "short";
217
- reduce_percent: number;
348
+ reduce_percent?: number;
218
349
  support: number;
219
350
  resistance: number;
220
351
  price_places: string;
221
352
  decimal_places: string;
222
- min_size: number;
223
- accounts: {
353
+ min_size?: number;
354
+ accounts?: {
224
355
  owner: string;
225
356
  exchange?: string;
226
357
  }[];
227
- risk_reward: number;
228
- reverse_factor: number;
358
+ risk_reward?: number;
359
+ reverse_factor?: number;
229
360
  leverage?: number;
361
+ max_quantity?: number;
362
+ fee_percent?: number;
230
363
  };
364
+ export interface BaseSystemFields {
365
+ id: string;
366
+ created: string;
367
+ updated: string;
368
+ }
369
+ export interface ExchangeAccount extends BaseSystemFields {
370
+ exchange: "binance" | "bybit";
371
+ owner: string;
372
+ email?: string;
373
+ user?: string;
374
+ usdt?: number;
375
+ usdc?: number;
376
+ proxy?: string;
377
+ bullish?: boolean;
378
+ bearish?: boolean;
379
+ movePercent?: number;
380
+ totalRisk?: number;
381
+ max_non_essential?: number;
382
+ profit_percent?: number;
383
+ risk_reward?: number;
384
+ exclude_coins?: {
385
+ bullish?: string[];
386
+ };
387
+ include_delisted?: boolean;
388
+ }
389
+ export interface SymbolConfig extends BaseSystemFields {
390
+ symbol: string;
391
+ support?: number;
392
+ resistance?: number;
393
+ stop_percent?: number;
394
+ price_places?: string;
395
+ decimal_places?: string;
396
+ min_size?: number;
397
+ weight?: number;
398
+ leverage?: number;
399
+ candle_count?: number;
400
+ interval?: any;
401
+ fee_percent?: number;
402
+ }
403
+ export interface ScheduledTrade extends BaseSystemFields {
404
+ symbol: string;
405
+ account: string;
406
+ profit?: number;
407
+ risk?: number;
408
+ entry?: number;
409
+ stop?: number;
410
+ risk_reward?: number;
411
+ profit_percent?: number;
412
+ place_tp?: boolean;
413
+ kind?: "long" | "short";
414
+ follow?: boolean | 1 | 0;
415
+ reduce_ratio?: number;
416
+ sell_ratio?: number;
417
+ threshold_qty?: number;
418
+ pause_tp?: boolean;
419
+ stop_percent?: number;
420
+ kelly?: {
421
+ use_kelly?: boolean;
422
+ kelly_confidence_factor?: number;
423
+ kelly_minimum_risk?: number;
424
+ kelly_prediction_model?: "exponential" | "normal" | "uniform";
425
+ };
426
+ distribution?: GetEntriesParams["distribution"];
427
+ distribution_params?: {
428
+ curveFactor?: number;
429
+ stdDevFactor?: number;
430
+ lambda?: number;
431
+ };
432
+ settings?: {
433
+ gap_trading?: {
434
+ entry_risk?: number;
435
+ hedge_stop_ratio?: number;
436
+ };
437
+ bad_hedge?: {
438
+ hedges_distribution?: GetEntriesParams["distribution"];
439
+ hedges_ratio?: number;
440
+ opposite_trade_distribution?: GetEntriesParams["distribution"];
441
+ opposite_trade_ratio?: number;
442
+ stop_loss?: number;
443
+ };
444
+ };
445
+ }
446
+ export interface AccountStrategy extends BaseSystemFields {
447
+ account: string;
448
+ symbol: string;
449
+ risk?: number;
450
+ reward_factor?: number;
451
+ kind?: "long" | "short";
452
+ support?: number;
453
+ resistance?: number;
454
+ running?: boolean;
455
+ max_reward_factor?: number;
456
+ follow?: boolean;
457
+ risk_reward?: number;
458
+ dynamic?: boolean;
459
+ }
460
+ interface Proxy$1 extends BaseSystemFields {
461
+ ip_address?: string;
462
+ type?: "http" | "socks5";
463
+ }
464
+ export interface PositionsView {
465
+ id: string;
466
+ symbol?: any;
467
+ entry?: any;
468
+ quantity?: any;
469
+ take_profit?: any;
470
+ account?: any;
471
+ kind?: any;
472
+ target_pnl?: number;
473
+ liquidation?: number;
474
+ avg_price?: number;
475
+ avg_qty?: number;
476
+ next_order?: number;
477
+ last_order?: number;
478
+ config?: any;
479
+ stop_loss?: {
480
+ price: number;
481
+ quantity: number;
482
+ };
483
+ stop_pnl?: any;
484
+ leverage?: any;
485
+ avg_liquidation?: any;
486
+ balance?: any;
487
+ reduce_ratio?: number;
488
+ sell_ratio?: number;
489
+ threshold_qty?: number;
490
+ follow?: boolean | 1 | 0;
491
+ current_price?: number;
492
+ usd_balance?: number;
493
+ tp?: {
494
+ price: number;
495
+ quantity: number;
496
+ };
497
+ next_risk?: number;
498
+ proxy?: string;
499
+ expand?: {
500
+ p_account?: ExchangeAccount;
501
+ b_config?: ScheduledTrade;
502
+ proxy?: Proxy$1;
503
+ account_strategy?: AccountStrategy;
504
+ compound_instance?: CompoundInstance;
505
+ support?: SupportTable;
506
+ symbol_config: SymbolConfig;
507
+ resistance?: SupportTable;
508
+ anchor?: Omit<PositionsView, "expand">;
509
+ record?: any;
510
+ };
511
+ pnl?: number;
512
+ support_price?: number;
513
+ }
514
+ export interface Compounder extends BaseSystemFields {
515
+ risk?: number;
516
+ profit_percent?: number;
517
+ owner?: string;
518
+ completed?: boolean;
519
+ start_balance?: number;
520
+ starting_risk?: number;
521
+ fee_rate?: number;
522
+ }
523
+ export interface CompoundInstance extends BaseSystemFields {
524
+ ref?: string;
525
+ position?: string;
526
+ risk?: number;
527
+ hedged?: boolean;
528
+ loss?: number;
529
+ expand?: {
530
+ ref?: Compounder;
531
+ };
532
+ }
533
+ export interface SupportTable extends BaseSystemFields {
534
+ symbol?: string;
535
+ price?: number;
536
+ counter?: number;
537
+ last_updated?: string;
538
+ kind?: "long" | "short";
539
+ }
231
540
  export type AppConfig = {
232
541
  fee: number;
233
542
  risk_per_trade: number;
@@ -255,6 +564,20 @@ export type AppConfig = {
255
564
  max_size?: number;
256
565
  last_value?: any;
257
566
  entries?: any[];
567
+ max_quantity?: number;
568
+ kelly?: {
569
+ use_kelly?: boolean;
570
+ kelly_confidence_factor?: number;
571
+ kelly_minimum_risk?: number;
572
+ kelly_prediction_model?: "exponential" | "normal" | "uniform";
573
+ kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
574
+ };
575
+ distribution?: GetEntriesParams["distribution"];
576
+ distribution_params?: {
577
+ curveFactor?: number;
578
+ stdDevFactor?: number;
579
+ lambda?: number;
580
+ };
258
581
  };
259
582
  export type ExtendConfigType = {
260
583
  take_profit?: number;
@@ -271,8 +594,26 @@ export type ExtendConfigType = {
271
594
  kind?: "long" | "short";
272
595
  gap?: number;
273
596
  rr?: number;
597
+ min_avg_size?: number;
598
+ use_kelly?: boolean;
599
+ kelly_confidence_factor?: number;
600
+ kelly_minimum_risk?: number;
601
+ kelly_prediction_model?: "exponential" | "normal" | "uniform";
602
+ kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
603
+ distribution?: GetEntriesParams["distribution"];
604
+ distribution_params?: {
605
+ curveFactor?: number;
606
+ stdDevFactor?: number;
607
+ lambda?: number;
608
+ buckets?: Array<{
609
+ zone_percentage: number;
610
+ risk_percentage: number;
611
+ }>;
612
+ use_progressive?: boolean;
613
+ };
614
+ use_progressive_risk?: boolean;
274
615
  };
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;
616
+ 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;
276
617
  export declare function buildAvg({ _trades, kind, }: {
277
618
  _trades: any[];
278
619
  kind: "long" | "short";
@@ -282,6 +623,17 @@ export declare function get_app_config_and_max_size(config: GlobalConfig, payloa
282
623
  entry: number;
283
624
  stop: number;
284
625
  kind: "long" | "short";
626
+ use_kelly?: boolean;
627
+ kelly_confidence_factor?: number;
628
+ kelly_minimum_risk?: number;
629
+ kelly_prediction_model?: "exponential" | "normal" | "uniform";
630
+ kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
631
+ distribution?: GetEntriesParams["distribution"];
632
+ distribution_params?: {
633
+ curveFactor?: number;
634
+ stdDevFactor?: number;
635
+ lambda?: number;
636
+ };
285
637
  }): {
286
638
  app_config: AppConfig;
287
639
  max_size: any;
@@ -301,11 +653,28 @@ export declare function buildAppConfig(config: GlobalConfig, payload: {
301
653
  risk: number;
302
654
  symbol: string;
303
655
  profit?: number;
656
+ use_kelly?: boolean;
657
+ kelly_confidence_factor?: number;
658
+ kelly_minimum_risk?: number;
659
+ kelly_prediction_model?: "exponential" | "normal" | "uniform";
660
+ kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
661
+ distribution?: GetEntriesParams["distribution"];
662
+ distribution_params?: {
663
+ curveFactor?: number;
664
+ stdDevFactor?: number;
665
+ lambda?: number;
666
+ };
304
667
  }): AppConfig;
305
668
  export declare function getOptimumStopAndRisk(app_config: AppConfig, params: {
306
669
  max_size: number;
307
670
  target_stop: number;
308
671
  highest_risk?: number;
672
+ distribution?: GetEntriesParams["distribution"];
673
+ distribution_params?: {
674
+ curveFactor?: number;
675
+ stdDevFactor?: number;
676
+ lambda?: number;
677
+ };
309
678
  }): {
310
679
  optimal_stop: number;
311
680
  optimal_risk: number;
@@ -362,26 +731,82 @@ export declare function generateOptimumAppConfig(config: GlobalConfig, payload:
362
731
  risk_reward: number;
363
732
  start_risk: number;
364
733
  max_risk?: number;
734
+ distribution?: GetEntriesParams["distribution"];
735
+ distribution_params?: {
736
+ curveFactor?: number;
737
+ stdDevFactor?: number;
738
+ lambda?: number;
739
+ };
365
740
  }, position: {
366
741
  entry: number;
367
742
  quantity: number;
368
743
  kind: "long" | "short";
369
744
  }): AppConfig | null;
370
- export declare function determineOptimumReward(app_config: AppConfig, increase?: boolean, low_range?: number, high_range?: number): number | {
745
+ export declare function determineOptimumReward(payload: {
746
+ app_config: AppConfig;
747
+ increase?: boolean;
748
+ low_range?: number;
749
+ high_range?: number;
750
+ target_loss?: number;
751
+ distribution?: GetEntriesParams["distribution"];
752
+ distribution_params?: {
753
+ curveFactor?: number;
754
+ stdDevFactor?: number;
755
+ lambda?: number;
756
+ };
757
+ max_size?: number;
758
+ }): number | {
371
759
  result: any[];
372
760
  value: number;
373
761
  total: number;
374
762
  risk_per_trade: number;
375
763
  max: number;
376
764
  min: number;
765
+ avg_size: any;
377
766
  neg_pnl: any;
378
767
  entry: any;
379
768
  };
769
+ export declare function determineOptimumRisk(config: GlobalConfig, payload: {
770
+ entry: number;
771
+ stop: number;
772
+ risk_reward: number;
773
+ risk: number;
774
+ symbol: string;
775
+ distribution?: GetEntriesParams["distribution"];
776
+ distribution_params?: {
777
+ curveFactor?: number;
778
+ stdDevFactor?: number;
779
+ lambda?: number;
780
+ };
781
+ }, params: {
782
+ highest_risk: number;
783
+ tolerance?: number;
784
+ max_iterations?: number;
785
+ }): {
786
+ optimal_risk: number;
787
+ achieved_neg_pnl: number;
788
+ target_neg_pnl: number;
789
+ difference: number;
790
+ iterations: number;
791
+ converged: boolean;
792
+ last_value: any;
793
+ entries: any[];
794
+ app_config: AppConfig;
795
+ };
380
796
  export declare function computeRiskReward(payload: {
381
797
  app_config: AppConfig;
382
798
  entry: number;
383
799
  stop: number;
384
800
  risk_per_trade: number;
801
+ target_loss?: number;
802
+ distribution?: GetEntriesParams["distribution"];
803
+ distribution_params?: {
804
+ curveFactor?: number;
805
+ stdDevFactor?: number;
806
+ lambda?: number;
807
+ };
808
+ high_range?: number;
809
+ max_size?: number;
385
810
  }): number | {
386
811
  result: any[];
387
812
  value: number;
@@ -389,6 +814,7 @@ export declare function computeRiskReward(payload: {
389
814
  risk_per_trade: number;
390
815
  max: number;
391
816
  min: number;
817
+ avg_size: any;
392
818
  neg_pnl: any;
393
819
  entry: any;
394
820
  };
@@ -397,6 +823,17 @@ export declare function getRiskReward(payload: {
397
823
  stop: number;
398
824
  risk: number;
399
825
  global_config: GlobalConfig;
826
+ force_exact_risk?: boolean;
827
+ target_loss?: number;
828
+ max_size?: number;
829
+ distribution?: GetEntriesParams["distribution"];
830
+ distribution_params?: {
831
+ curveFactor?: number;
832
+ stdDevFactor?: number;
833
+ lambda?: number;
834
+ };
835
+ risk_factor?: number;
836
+ high_range?: number;
400
837
  }): any;
401
838
  export declare function computeProfitDetail(payload: {
402
839
  focus_position: {
@@ -406,11 +843,12 @@ export declare function computeProfitDetail(payload: {
406
843
  avg_qty: number;
407
844
  avg_price: number;
408
845
  };
409
- strategy: {
846
+ strategy?: {
410
847
  reward_factor: number;
411
848
  max_reward_factor: number;
412
849
  risk: number;
413
850
  };
851
+ pnl: number;
414
852
  reduce_position?: {
415
853
  kind: "long" | "short";
416
854
  entry: number;
@@ -427,11 +865,13 @@ export declare function computeProfitDetail(payload: {
427
865
  quantity: number;
428
866
  };
429
867
  };
868
+ full_ratio?: number;
430
869
  price_places?: string;
431
870
  decimal_places?: string;
432
871
  }): {
433
872
  pnl: number;
434
873
  loss: number;
874
+ full_loss: number;
435
875
  original_pnl: number;
436
876
  reward_factor: number;
437
877
  profit_percent: number;
@@ -450,21 +890,251 @@ export declare function generateGapTp(payload: {
450
890
  entry: number;
451
891
  quantity: number;
452
892
  };
893
+ risk?: number;
894
+ kind?: "long" | "short";
453
895
  factor?: number;
896
+ sell_factor?: number;
454
897
  price_places?: string;
455
898
  decimal_places?: string;
456
899
  }): {
457
- long_tp: number;
458
- short_tp: number;
459
- short_to_reduce: number;
460
- long_to_reduce: number;
461
- to_sell: {
900
+ profit_percent: {
901
+ long: number;
902
+ short: number;
903
+ };
904
+ risk: {
905
+ short: number;
906
+ long: number;
907
+ };
908
+ take_profit: {
909
+ long: number;
910
+ short: number;
911
+ };
912
+ to_reduce: {
913
+ short: number;
914
+ long: number;
915
+ };
916
+ full_reduce: {
917
+ short: number;
918
+ long: number;
919
+ };
920
+ sell_quantity: {
462
921
  short: number;
463
922
  long: number;
464
923
  };
465
924
  gap: number;
466
925
  gap_loss: number;
467
926
  };
927
+ export declare function calculateFactorFromTakeProfit(payload: {
928
+ long: {
929
+ entry: number;
930
+ quantity: number;
931
+ };
932
+ short: {
933
+ entry: number;
934
+ quantity: number;
935
+ };
936
+ knownTp: number;
937
+ tpType: "long" | "short";
938
+ price_places?: string;
939
+ }): number;
940
+ export declare function calculateFactorFromSellQuantity(payload: {
941
+ long: {
942
+ entry: number;
943
+ quantity: number;
944
+ };
945
+ short: {
946
+ entry: number;
947
+ quantity: number;
948
+ };
949
+ knownSellQuantity: number;
950
+ sellType: "long" | "short";
951
+ sell_factor?: number;
952
+ price_places?: string;
953
+ decimal_places?: string;
954
+ }): number;
955
+ export declare function determineRewardFactor(payload: {
956
+ quantity: number;
957
+ avg_qty: number;
958
+ minimum_pnl: number;
959
+ risk: number;
960
+ }): number;
961
+ export type BotPosition = {
962
+ kind: "long" | "short";
963
+ entry: number;
964
+ quantity: number;
965
+ tp: {
966
+ price: number;
967
+ };
968
+ };
969
+ export declare function getHedgeZone(payload: {
970
+ symbol_config: GlobalConfig;
971
+ risk: number;
972
+ position: BotPosition;
973
+ reward_factor?: number;
974
+ risk_factor?: number;
975
+ support?: number;
976
+ }): {
977
+ support: number;
978
+ resistance: number;
979
+ risk: number;
980
+ profit_percent: number;
981
+ };
982
+ export declare function getOptimumHedgeFactor(payload: {
983
+ target_support: number;
984
+ tolerance?: number;
985
+ max_iterations?: number;
986
+ min_factor?: number;
987
+ max_factor?: number;
988
+ symbol_config: GlobalConfig;
989
+ risk: number;
990
+ position: BotPosition;
991
+ }): {
992
+ reward_factor: number;
993
+ achieved_support: number;
994
+ target_support: number;
995
+ difference: number;
996
+ iterations: number;
997
+ converged?: undefined;
998
+ } | {
999
+ reward_factor: number;
1000
+ achieved_support: number;
1001
+ target_support: number;
1002
+ difference: number;
1003
+ iterations: number;
1004
+ converged: boolean;
1005
+ };
1006
+ export type CType = {
1007
+ next_order: number;
1008
+ take_profit: number;
1009
+ };
1010
+ export declare function determineCompoundLongTrade(payload: {
1011
+ focus_short_position: CType;
1012
+ focus_long_position: CType;
1013
+ shortConfig: {
1014
+ entry: number;
1015
+ stop: number;
1016
+ risk_reward: number;
1017
+ risk: number;
1018
+ symbol: string;
1019
+ profit_percent: number;
1020
+ };
1021
+ rr?: number;
1022
+ global_config: GlobalConfig;
1023
+ }): {
1024
+ start_risk: number;
1025
+ short_profit: number;
1026
+ support: number;
1027
+ resistance: number;
1028
+ long_v: any;
1029
+ profit_percent: number;
1030
+ result: any;
1031
+ short_max_size: any;
1032
+ };
1033
+ export declare function generateOppositeTradeConfig(payload: {
1034
+ kind: "long" | "short";
1035
+ entry: number;
1036
+ quantity: number;
1037
+ target_pnl: number;
1038
+ global_config: GlobalConfig;
1039
+ ratio?: number;
1040
+ }): {
1041
+ entry: number;
1042
+ stop: number;
1043
+ risk: number;
1044
+ risk_reward: number | {
1045
+ result: any[];
1046
+ value: number;
1047
+ total: number;
1048
+ risk_per_trade: number;
1049
+ max: number;
1050
+ min: number;
1051
+ avg_size: any;
1052
+ neg_pnl: any;
1053
+ entry: any;
1054
+ };
1055
+ };
1056
+ export declare function constructAppConfig(payload: {
1057
+ account: PositionsView;
1058
+ global_config: GlobalConfig;
1059
+ kelly_config?: {
1060
+ use_kelly: boolean;
1061
+ kelly_confidence_factor: number;
1062
+ kelly_minimum_risk: number;
1063
+ kelly_prediction_model: string;
1064
+ };
1065
+ distribution_config?: {
1066
+ distribution?: GetEntriesParams["distribution"];
1067
+ distribution_params?: {
1068
+ curveFactor?: number;
1069
+ stdDevFactor?: number;
1070
+ lambda?: number;
1071
+ };
1072
+ };
1073
+ }): {
1074
+ fee: number;
1075
+ risk_per_trade: number;
1076
+ risk_reward: number;
1077
+ symbol?: string;
1078
+ focus: number;
1079
+ budget: number;
1080
+ support: number;
1081
+ resistance: number;
1082
+ percent_change: number;
1083
+ tradeSplit?: number;
1084
+ take_profit?: number;
1085
+ kind: "long" | "short";
1086
+ entry: number;
1087
+ stop: number;
1088
+ min_size: number;
1089
+ price_places?: string;
1090
+ strategy?: "quantity" | "entry";
1091
+ as_array?: boolean;
1092
+ decimal_places?: string;
1093
+ min_profit?: number;
1094
+ raw?: boolean;
1095
+ gap?: number;
1096
+ rr?: number;
1097
+ max_size?: number;
1098
+ last_value?: any;
1099
+ max_quantity?: number;
1100
+ kelly?: {
1101
+ use_kelly?: boolean;
1102
+ kelly_confidence_factor?: number;
1103
+ kelly_minimum_risk?: number;
1104
+ kelly_prediction_model?: "exponential" | "normal" | "uniform";
1105
+ kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
1106
+ };
1107
+ distribution?: GetEntriesParams["distribution"];
1108
+ distribution_params?: {
1109
+ curveFactor?: number;
1110
+ stdDevFactor?: number;
1111
+ lambda?: number;
1112
+ };
1113
+ };
1114
+ export declare function generateDangerousConfig(payload: {
1115
+ account: PositionsView;
1116
+ global_config: GlobalConfig;
1117
+ config: {
1118
+ quantity: number;
1119
+ stop: number;
1120
+ entry: number;
1121
+ };
1122
+ }): {
1123
+ entry: number;
1124
+ risk: number;
1125
+ stop: number;
1126
+ risk_reward: number | {
1127
+ result: any[];
1128
+ value: number;
1129
+ total: number;
1130
+ risk_per_trade: number;
1131
+ max: number;
1132
+ min: number;
1133
+ avg_size: any;
1134
+ neg_pnl: any;
1135
+ entry: any;
1136
+ };
1137
+ };
468
1138
  export type StrategyPosition = {
469
1139
  entry: number;
470
1140
  quantity: number;
@@ -650,15 +1320,48 @@ export declare class Strategy {
650
1320
  gap?: number;
651
1321
  rr?: number;
652
1322
  max_size?: number;
1323
+ max_quantity?: number;
1324
+ kelly?: {
1325
+ use_kelly?: boolean;
1326
+ kelly_confidence_factor?: number;
1327
+ kelly_minimum_risk?: number;
1328
+ kelly_prediction_model?: "exponential" | "normal" | "uniform";
1329
+ kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
1330
+ };
1331
+ distribution?: GetEntriesParams["distribution"];
1332
+ distribution_params?: {
1333
+ curveFactor?: number;
1334
+ stdDevFactor?: number;
1335
+ lambda?: number;
1336
+ };
653
1337
  };
654
1338
  identifyGapConfig(payload: {
655
1339
  factor?: number;
1340
+ sell_factor?: number;
1341
+ kind?: "long" | "short";
1342
+ risk?: number;
656
1343
  }): {
657
- long_tp: number;
658
- short_tp: number;
659
- short_to_reduce: number;
660
- long_to_reduce: number;
661
- to_sell: {
1344
+ profit_percent: {
1345
+ long: number;
1346
+ short: number;
1347
+ };
1348
+ risk: {
1349
+ short: number;
1350
+ long: number;
1351
+ };
1352
+ take_profit: {
1353
+ long: number;
1354
+ short: number;
1355
+ };
1356
+ to_reduce: {
1357
+ short: number;
1358
+ long: number;
1359
+ };
1360
+ full_reduce: {
1361
+ short: number;
1362
+ long: number;
1363
+ };
1364
+ sell_quantity: {
662
1365
  short: number;
663
1366
  long: number;
664
1367
  };
@@ -673,6 +1376,7 @@ export declare class Strategy {
673
1376
  }): {
674
1377
  pnl: number;
675
1378
  loss: number;
1379
+ full_loss: number;
676
1380
  original_pnl: number;
677
1381
  reward_factor: number;
678
1382
  profit_percent: number;
@@ -682,6 +1386,402 @@ export declare class Strategy {
682
1386
  price_places: string;
683
1387
  decimal_places: string;
684
1388
  };
1389
+ simulateGapReduction(payload: {
1390
+ iterations?: number;
1391
+ factor?: number;
1392
+ direction: "long" | "short";
1393
+ kind?: "long" | "short";
1394
+ risk?: number;
1395
+ sell_factor?: number;
1396
+ }): {
1397
+ results: {
1398
+ profit_percent: {
1399
+ long: number;
1400
+ short: number;
1401
+ };
1402
+ risk: {
1403
+ short: number;
1404
+ long: number;
1405
+ };
1406
+ take_profit: {
1407
+ long: number;
1408
+ short: number;
1409
+ };
1410
+ sell_quantity: {
1411
+ short: number;
1412
+ long: number;
1413
+ };
1414
+ gap_loss: number;
1415
+ position: {
1416
+ long: {
1417
+ entry: number;
1418
+ quantity: number;
1419
+ };
1420
+ short: {
1421
+ entry: number;
1422
+ quantity: number;
1423
+ };
1424
+ };
1425
+ }[];
1426
+ quantity: number;
1427
+ };
685
1428
  }
1429
+ export interface ComputedTrade {
1430
+ entry: number;
1431
+ quantity: number;
1432
+ avg_size: number;
1433
+ neg_pnl: number;
1434
+ avg_entry: number;
1435
+ stop: number;
1436
+ reverse_avg_entry: number;
1437
+ reverse_avg_quantity: number;
1438
+ fee: number;
1439
+ }
1440
+ export type TradeConfig = {
1441
+ entry: number;
1442
+ stop: number;
1443
+ risk_reward: number;
1444
+ risk: number;
1445
+ symbol: string;
1446
+ distribution?: GetEntriesParams["distribution"];
1447
+ distribution_params?: {
1448
+ curveFactor?: number;
1449
+ stdDevFactor?: number;
1450
+ lambda?: number;
1451
+ };
1452
+ };
1453
+ declare function constructAppConfig$1({ config, global_config, }: {
1454
+ config: TradeConfig;
1455
+ global_config: GlobalConfig;
1456
+ }): {
1457
+ fee: number;
1458
+ risk_per_trade: number;
1459
+ risk_reward: number;
1460
+ symbol?: string;
1461
+ focus: number;
1462
+ budget: number;
1463
+ support: number;
1464
+ resistance: number;
1465
+ percent_change: number;
1466
+ tradeSplit?: number;
1467
+ take_profit?: number;
1468
+ kind: "long" | "short";
1469
+ entry: number;
1470
+ stop: number;
1471
+ min_size: number;
1472
+ price_places?: string;
1473
+ strategy?: "quantity" | "entry";
1474
+ as_array?: boolean;
1475
+ decimal_places?: string;
1476
+ min_profit?: number;
1477
+ raw?: boolean;
1478
+ gap?: number;
1479
+ rr?: number;
1480
+ max_size?: number;
1481
+ last_value?: any;
1482
+ max_quantity?: number;
1483
+ kelly?: {
1484
+ use_kelly?: boolean;
1485
+ kelly_confidence_factor?: number;
1486
+ kelly_minimum_risk?: number;
1487
+ kelly_prediction_model?: "exponential" | "normal" | "uniform";
1488
+ kelly_func?: "theoretical" | "position_based" | "theoretical_fixed";
1489
+ };
1490
+ distribution?: GetEntriesParams["distribution"];
1491
+ distribution_params?: {
1492
+ curveFactor?: number;
1493
+ stdDevFactor?: number;
1494
+ lambda?: number;
1495
+ };
1496
+ };
1497
+ declare function buildWithOptimumReward({ config, settings, global_config, force_exact, }: {
1498
+ config: TradeConfig;
1499
+ global_config: GlobalConfig;
1500
+ settings: {
1501
+ entry?: number;
1502
+ stop?: number;
1503
+ risk: number;
1504
+ stop_ratio?: number;
1505
+ risk_reward?: number;
1506
+ distribution?: GetEntriesParams["distribution"];
1507
+ distribution_params?: {
1508
+ curveFactor?: number;
1509
+ stdDevFactor?: number;
1510
+ lambda?: number;
1511
+ };
1512
+ };
1513
+ force_exact?: boolean;
1514
+ }): {
1515
+ trades: any[];
1516
+ summary: {
1517
+ entry: number;
1518
+ stop: number;
1519
+ risk: number;
1520
+ risk_reward: any;
1521
+ avg_entry: number;
1522
+ avg_size: number;
1523
+ first_entry: number;
1524
+ pnl: number;
1525
+ fee: number;
1526
+ loss: number;
1527
+ last_entry: number;
1528
+ margin: number;
1529
+ };
1530
+ config: any;
1531
+ stop_order: {
1532
+ quantity: number;
1533
+ price: number;
1534
+ };
1535
+ kind: string;
1536
+ };
1537
+ declare function generateOppositeOptimum({ config, global_config, settings, ratio, distribution, distribution_params, risk_factor, }: {
1538
+ settings: {
1539
+ entry: number;
1540
+ stop: number;
1541
+ risk: number;
1542
+ };
1543
+ config: TradeConfig;
1544
+ global_config: GlobalConfig;
1545
+ fee_percent?: number;
1546
+ ratio?: number;
1547
+ distribution?: any;
1548
+ distribution_params?: {
1549
+ curveFactor?: number;
1550
+ stdDevFactor?: number;
1551
+ lambda?: number;
1552
+ };
1553
+ risk_factor?: number;
1554
+ }): {
1555
+ trades: any[];
1556
+ summary: any;
1557
+ config: {
1558
+ entry: number;
1559
+ stop: number;
1560
+ risk: number;
1561
+ distribution: any;
1562
+ distribution_params: {
1563
+ curveFactor?: number;
1564
+ stdDevFactor?: number;
1565
+ lambda?: number;
1566
+ };
1567
+ risk_factor: number;
1568
+ };
1569
+ kind: string;
1570
+ } | {
1571
+ trades: any[];
1572
+ summary: {
1573
+ entry: number;
1574
+ stop: number;
1575
+ risk: number;
1576
+ risk_reward: any;
1577
+ avg_entry: number;
1578
+ avg_size: number;
1579
+ first_entry: number;
1580
+ pnl: number;
1581
+ fee: number;
1582
+ loss: number;
1583
+ last_entry: number;
1584
+ defaultEntry: number;
1585
+ };
1586
+ config: any;
1587
+ kind: string;
1588
+ };
1589
+ declare function increaseTradeHelper({ increase_qty, stop, config, global_config, style, entry, position, stop_ratio, distribution: default_distribution, distribution_params: default_distribution_params, }: {
1590
+ position: {
1591
+ entry: number;
1592
+ quantity: number;
1593
+ };
1594
+ entry: number;
1595
+ stop: number;
1596
+ config: TradeConfig;
1597
+ global_config: GlobalConfig;
1598
+ increase_qty: number;
1599
+ style: "minimum" | "optimum";
1600
+ stop_ratio?: number;
1601
+ distribution?: any;
1602
+ distribution_params?: {
1603
+ curveFactor?: number;
1604
+ stdDevFactor?: number;
1605
+ lambda?: number;
1606
+ };
1607
+ }): {
1608
+ trades: any[];
1609
+ summary: any;
1610
+ config: any;
1611
+ kind: string;
1612
+ current: {
1613
+ trades: any[];
1614
+ summary: {
1615
+ first_entry: number;
1616
+ last_entry: number;
1617
+ quantity: number;
1618
+ entry: number;
1619
+ loss: number;
1620
+ number_of_trades: number;
1621
+ fee: number;
1622
+ anchor_pnl: any;
1623
+ };
1624
+ };
1625
+ stop_order?: undefined;
1626
+ } | {
1627
+ trades: any[];
1628
+ summary: {
1629
+ entry: number;
1630
+ stop: number;
1631
+ risk: number;
1632
+ risk_reward: any;
1633
+ avg_entry: number;
1634
+ avg_size: number;
1635
+ first_entry: number;
1636
+ pnl: number;
1637
+ fee: number;
1638
+ loss: number;
1639
+ last_entry: number;
1640
+ margin: number;
1641
+ };
1642
+ stop_order: {
1643
+ quantity: number;
1644
+ price: number;
1645
+ };
1646
+ config: any;
1647
+ kind: string;
1648
+ current: {
1649
+ trades: any[];
1650
+ summary: {
1651
+ first_entry: number;
1652
+ last_entry: number;
1653
+ quantity: number;
1654
+ entry: number;
1655
+ loss: number;
1656
+ number_of_trades: number;
1657
+ fee: number;
1658
+ anchor_pnl: any;
1659
+ };
1660
+ };
1661
+ };
1662
+ declare function generatePositionIncreaseTrade({ account, zoneAccount, ratio, config, global_config, style, distribution, distribution_params, }: {
1663
+ style?: "optimum" | "minimum";
1664
+ account: {
1665
+ long: {
1666
+ entry: number;
1667
+ quantity: number;
1668
+ };
1669
+ short: {
1670
+ entry: number;
1671
+ quantity: number;
1672
+ };
1673
+ };
1674
+ config: TradeConfig;
1675
+ global_config: GlobalConfig;
1676
+ zoneAccount: {
1677
+ entry: number;
1678
+ stop: number;
1679
+ };
1680
+ ratio?: number;
1681
+ distribution?: any;
1682
+ distribution_params?: {
1683
+ curveFactor?: number;
1684
+ stdDevFactor?: number;
1685
+ lambda?: number;
1686
+ };
1687
+ }): {
1688
+ trades: any[];
1689
+ summary: any;
1690
+ config: any;
1691
+ kind: string;
1692
+ current: {
1693
+ trades: any[];
1694
+ summary: {
1695
+ first_entry: number;
1696
+ last_entry: number;
1697
+ quantity: number;
1698
+ entry: number;
1699
+ loss: number;
1700
+ number_of_trades: number;
1701
+ fee: number;
1702
+ anchor_pnl: any;
1703
+ };
1704
+ };
1705
+ stop_order?: undefined;
1706
+ } | {
1707
+ trades: any[];
1708
+ summary: {
1709
+ entry: number;
1710
+ stop: number;
1711
+ risk: number;
1712
+ risk_reward: any;
1713
+ avg_entry: number;
1714
+ avg_size: number;
1715
+ first_entry: number;
1716
+ pnl: number;
1717
+ fee: number;
1718
+ loss: number;
1719
+ last_entry: number;
1720
+ margin: number;
1721
+ };
1722
+ stop_order: {
1723
+ quantity: number;
1724
+ price: number;
1725
+ };
1726
+ config: any;
1727
+ kind: string;
1728
+ current: {
1729
+ trades: any[];
1730
+ summary: {
1731
+ first_entry: number;
1732
+ last_entry: number;
1733
+ quantity: number;
1734
+ entry: number;
1735
+ loss: number;
1736
+ number_of_trades: number;
1737
+ fee: number;
1738
+ anchor_pnl: any;
1739
+ };
1740
+ };
1741
+ };
1742
+ declare function determineHedgeTradeToPlace({ position, config, global_config, profit_risk, allowable_loss, }: {
1743
+ position: {
1744
+ entry: number;
1745
+ quantity: number;
1746
+ kind: "long" | "short";
1747
+ };
1748
+ config: TradeConfig;
1749
+ global_config: GlobalConfig;
1750
+ profit_risk?: number;
1751
+ allowable_loss?: number;
1752
+ }): {
1753
+ opposite: {
1754
+ trades: any[];
1755
+ summary: {
1756
+ entry: number;
1757
+ stop: number;
1758
+ risk: number;
1759
+ risk_reward: any;
1760
+ avg_entry: number;
1761
+ avg_size: number;
1762
+ first_entry: number;
1763
+ pnl: number;
1764
+ fee: number;
1765
+ loss: number;
1766
+ last_entry: number;
1767
+ margin: number;
1768
+ };
1769
+ config: any;
1770
+ stop_order: {
1771
+ quantity: number;
1772
+ price: number;
1773
+ };
1774
+ kind: string;
1775
+ };
1776
+ take_profit: number;
1777
+ };
1778
+ export declare const compoundAPI: {
1779
+ determineHedgeTradeToPlace: typeof determineHedgeTradeToPlace;
1780
+ buildWithOptimumReward: typeof buildWithOptimumReward;
1781
+ constructAppConfig: typeof constructAppConfig$1;
1782
+ generateOppositeOptimum: typeof generateOppositeOptimum;
1783
+ increaseTradeHelper: typeof increaseTradeHelper;
1784
+ generatePositionIncreaseTrade: typeof generatePositionIncreaseTrade;
1785
+ };
686
1786
 
687
1787
  export {};