@gbozee/ultimate 0.0.2-191 → 0.0.2-192
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 +7 -0
- package/dist/frontend-index.js +21 -4
- package/dist/index.cjs +21 -4
- package/dist/index.d.ts +11 -0
- package/dist/index.js +21 -4
- package/dist/mcp-server.cjs +21 -4
- package/dist/mcp-server.js +21 -4
- package/package.json +1 -1
package/dist/frontend-index.d.ts
CHANGED
|
@@ -642,6 +642,7 @@ export declare function determineOptimumReward(payload: {
|
|
|
642
642
|
high_range?: number;
|
|
643
643
|
target_loss?: number;
|
|
644
644
|
distribution?: GetEntriesParams["distribution"];
|
|
645
|
+
max_size?: number;
|
|
645
646
|
}): number | {
|
|
646
647
|
result: any[];
|
|
647
648
|
value: number;
|
|
@@ -649,6 +650,7 @@ export declare function determineOptimumReward(payload: {
|
|
|
649
650
|
risk_per_trade: number;
|
|
650
651
|
max: number;
|
|
651
652
|
min: number;
|
|
653
|
+
avg_size: any;
|
|
652
654
|
neg_pnl: any;
|
|
653
655
|
entry: any;
|
|
654
656
|
};
|
|
@@ -681,6 +683,7 @@ export declare function computeRiskReward(payload: {
|
|
|
681
683
|
risk_per_trade: number;
|
|
682
684
|
target_loss?: number;
|
|
683
685
|
distribution?: GetEntriesParams["distribution"];
|
|
686
|
+
max_size?: number;
|
|
684
687
|
}): number | {
|
|
685
688
|
result: any[];
|
|
686
689
|
value: number;
|
|
@@ -688,6 +691,7 @@ export declare function computeRiskReward(payload: {
|
|
|
688
691
|
risk_per_trade: number;
|
|
689
692
|
max: number;
|
|
690
693
|
min: number;
|
|
694
|
+
avg_size: any;
|
|
691
695
|
neg_pnl: any;
|
|
692
696
|
entry: any;
|
|
693
697
|
};
|
|
@@ -698,6 +702,7 @@ export declare function getRiskReward(payload: {
|
|
|
698
702
|
global_config: GlobalConfig;
|
|
699
703
|
force_exact_risk?: boolean;
|
|
700
704
|
target_loss?: number;
|
|
705
|
+
max_size?: number;
|
|
701
706
|
distribution?: GetEntriesParams["distribution"];
|
|
702
707
|
}): any;
|
|
703
708
|
export declare function computeProfitDetail(payload: {
|
|
@@ -913,6 +918,7 @@ export declare function generateOppositeTradeConfig(payload: {
|
|
|
913
918
|
risk_per_trade: number;
|
|
914
919
|
max: number;
|
|
915
920
|
min: number;
|
|
921
|
+
avg_size: any;
|
|
916
922
|
neg_pnl: any;
|
|
917
923
|
entry: any;
|
|
918
924
|
};
|
|
@@ -980,6 +986,7 @@ export declare function generateDangerousConfig(payload: {
|
|
|
980
986
|
risk_per_trade: number;
|
|
981
987
|
max: number;
|
|
982
988
|
min: number;
|
|
989
|
+
avg_size: any;
|
|
983
990
|
neg_pnl: any;
|
|
984
991
|
entry: any;
|
|
985
992
|
};
|
package/dist/frontend-index.js
CHANGED
|
@@ -2110,7 +2110,8 @@ function determineOptimumReward(payload) {
|
|
|
2110
2110
|
low_range = 1,
|
|
2111
2111
|
high_range = 199,
|
|
2112
2112
|
target_loss,
|
|
2113
|
-
distribution
|
|
2113
|
+
distribution,
|
|
2114
|
+
max_size
|
|
2114
2115
|
} = payload;
|
|
2115
2116
|
const criterion = app_config.strategy || "quantity";
|
|
2116
2117
|
const risk_rewards = createArray(low_range, high_range, 1);
|
|
@@ -2132,6 +2133,7 @@ function determineOptimumReward(payload) {
|
|
|
2132
2133
|
let min = Infinity;
|
|
2133
2134
|
let neg_pnl = trades[0]?.neg_pnl || 0;
|
|
2134
2135
|
let entry = trades.at(-1)?.entry;
|
|
2136
|
+
let avg_size = trades[0]?.avg_size || 0;
|
|
2135
2137
|
if (!entry) {
|
|
2136
2138
|
return null;
|
|
2137
2139
|
}
|
|
@@ -2148,11 +2150,15 @@ function determineOptimumReward(payload) {
|
|
|
2148
2150
|
risk_per_trade: app_config.risk_per_trade,
|
|
2149
2151
|
max,
|
|
2150
2152
|
min,
|
|
2153
|
+
avg_size,
|
|
2151
2154
|
neg_pnl,
|
|
2152
2155
|
entry
|
|
2153
2156
|
};
|
|
2154
2157
|
});
|
|
2155
2158
|
func = func.filter((r) => Boolean(r));
|
|
2159
|
+
if (max_size !== undefined && max_size > 0) {
|
|
2160
|
+
func = func.filter((r) => r.avg_size <= max_size);
|
|
2161
|
+
}
|
|
2156
2162
|
if (target_loss === undefined) {
|
|
2157
2163
|
func = func.filter((r) => {
|
|
2158
2164
|
let foundIndex = r?.result.findIndex((e) => e.quantity === r.max);
|
|
@@ -2290,7 +2296,15 @@ function determineOptimumRisk(config, payload, params) {
|
|
|
2290
2296
|
};
|
|
2291
2297
|
}
|
|
2292
2298
|
function computeRiskReward(payload) {
|
|
2293
|
-
const {
|
|
2299
|
+
const {
|
|
2300
|
+
app_config,
|
|
2301
|
+
entry,
|
|
2302
|
+
stop,
|
|
2303
|
+
risk_per_trade,
|
|
2304
|
+
target_loss,
|
|
2305
|
+
distribution,
|
|
2306
|
+
max_size
|
|
2307
|
+
} = payload;
|
|
2294
2308
|
const kind = entry > stop ? "long" : "short";
|
|
2295
2309
|
app_config.kind = kind;
|
|
2296
2310
|
app_config.entry = entry;
|
|
@@ -2299,12 +2313,14 @@ function computeRiskReward(payload) {
|
|
|
2299
2313
|
const result = determineOptimumReward({
|
|
2300
2314
|
app_config,
|
|
2301
2315
|
target_loss,
|
|
2302
|
-
distribution
|
|
2316
|
+
distribution,
|
|
2317
|
+
max_size
|
|
2303
2318
|
});
|
|
2304
2319
|
return result;
|
|
2305
2320
|
}
|
|
2306
2321
|
function getRiskReward(payload) {
|
|
2307
2322
|
const {
|
|
2323
|
+
max_size,
|
|
2308
2324
|
entry,
|
|
2309
2325
|
stop,
|
|
2310
2326
|
risk,
|
|
@@ -2327,7 +2343,8 @@ function getRiskReward(payload) {
|
|
|
2327
2343
|
stop,
|
|
2328
2344
|
risk_per_trade: risk,
|
|
2329
2345
|
target_loss,
|
|
2330
|
-
distribution
|
|
2346
|
+
distribution,
|
|
2347
|
+
max_size
|
|
2331
2348
|
});
|
|
2332
2349
|
if (force_exact_risk) {
|
|
2333
2350
|
const new_risk_per_trade = determineOptimumRisk(global_config, {
|
package/dist/index.cjs
CHANGED
|
@@ -57489,7 +57489,8 @@ function determineOptimumReward(payload) {
|
|
|
57489
57489
|
low_range = 1,
|
|
57490
57490
|
high_range = 199,
|
|
57491
57491
|
target_loss,
|
|
57492
|
-
distribution
|
|
57492
|
+
distribution,
|
|
57493
|
+
max_size
|
|
57493
57494
|
} = payload;
|
|
57494
57495
|
const criterion = app_config.strategy || "quantity";
|
|
57495
57496
|
const risk_rewards = createArray(low_range, high_range, 1);
|
|
@@ -57511,6 +57512,7 @@ function determineOptimumReward(payload) {
|
|
|
57511
57512
|
let min = Infinity;
|
|
57512
57513
|
let neg_pnl = trades[0]?.neg_pnl || 0;
|
|
57513
57514
|
let entry = trades.at(-1)?.entry;
|
|
57515
|
+
let avg_size = trades[0]?.avg_size || 0;
|
|
57514
57516
|
if (!entry) {
|
|
57515
57517
|
return null;
|
|
57516
57518
|
}
|
|
@@ -57527,11 +57529,15 @@ function determineOptimumReward(payload) {
|
|
|
57527
57529
|
risk_per_trade: app_config.risk_per_trade,
|
|
57528
57530
|
max,
|
|
57529
57531
|
min,
|
|
57532
|
+
avg_size,
|
|
57530
57533
|
neg_pnl,
|
|
57531
57534
|
entry
|
|
57532
57535
|
};
|
|
57533
57536
|
});
|
|
57534
57537
|
func = func.filter((r2) => Boolean(r2));
|
|
57538
|
+
if (max_size !== undefined && max_size > 0) {
|
|
57539
|
+
func = func.filter((r2) => r2.avg_size <= max_size);
|
|
57540
|
+
}
|
|
57535
57541
|
if (target_loss === undefined) {
|
|
57536
57542
|
func = func.filter((r2) => {
|
|
57537
57543
|
let foundIndex = r2?.result.findIndex((e2) => e2.quantity === r2.max);
|
|
@@ -57669,7 +57675,15 @@ function determineOptimumRisk(config2, payload, params) {
|
|
|
57669
57675
|
};
|
|
57670
57676
|
}
|
|
57671
57677
|
function computeRiskReward(payload) {
|
|
57672
|
-
const {
|
|
57678
|
+
const {
|
|
57679
|
+
app_config,
|
|
57680
|
+
entry,
|
|
57681
|
+
stop,
|
|
57682
|
+
risk_per_trade,
|
|
57683
|
+
target_loss,
|
|
57684
|
+
distribution,
|
|
57685
|
+
max_size
|
|
57686
|
+
} = payload;
|
|
57673
57687
|
const kind = entry > stop ? "long" : "short";
|
|
57674
57688
|
app_config.kind = kind;
|
|
57675
57689
|
app_config.entry = entry;
|
|
@@ -57678,12 +57692,14 @@ function computeRiskReward(payload) {
|
|
|
57678
57692
|
const result = determineOptimumReward({
|
|
57679
57693
|
app_config,
|
|
57680
57694
|
target_loss,
|
|
57681
|
-
distribution
|
|
57695
|
+
distribution,
|
|
57696
|
+
max_size
|
|
57682
57697
|
});
|
|
57683
57698
|
return result;
|
|
57684
57699
|
}
|
|
57685
57700
|
function getRiskReward(payload) {
|
|
57686
57701
|
const {
|
|
57702
|
+
max_size,
|
|
57687
57703
|
entry,
|
|
57688
57704
|
stop,
|
|
57689
57705
|
risk,
|
|
@@ -57706,7 +57722,8 @@ function getRiskReward(payload) {
|
|
|
57706
57722
|
stop,
|
|
57707
57723
|
risk_per_trade: risk,
|
|
57708
57724
|
target_loss,
|
|
57709
|
-
distribution
|
|
57725
|
+
distribution,
|
|
57726
|
+
max_size
|
|
57710
57727
|
});
|
|
57711
57728
|
if (force_exact_risk) {
|
|
57712
57729
|
const new_risk_per_trade = determineOptimumRisk(global_config, {
|
package/dist/index.d.ts
CHANGED
|
@@ -1549,6 +1549,7 @@ export declare function determineOptimumReward(payload: {
|
|
|
1549
1549
|
high_range?: number;
|
|
1550
1550
|
target_loss?: number;
|
|
1551
1551
|
distribution?: GetEntriesParams["distribution"];
|
|
1552
|
+
max_size?: number;
|
|
1552
1553
|
}): number | {
|
|
1553
1554
|
result: any[];
|
|
1554
1555
|
value: number;
|
|
@@ -1556,6 +1557,7 @@ export declare function determineOptimumReward(payload: {
|
|
|
1556
1557
|
risk_per_trade: number;
|
|
1557
1558
|
max: number;
|
|
1558
1559
|
min: number;
|
|
1560
|
+
avg_size: any;
|
|
1559
1561
|
neg_pnl: any;
|
|
1560
1562
|
entry: any;
|
|
1561
1563
|
};
|
|
@@ -1588,6 +1590,7 @@ export declare function computeRiskReward(payload: {
|
|
|
1588
1590
|
risk_per_trade: number;
|
|
1589
1591
|
target_loss?: number;
|
|
1590
1592
|
distribution?: GetEntriesParams["distribution"];
|
|
1593
|
+
max_size?: number;
|
|
1591
1594
|
}): number | {
|
|
1592
1595
|
result: any[];
|
|
1593
1596
|
value: number;
|
|
@@ -1595,6 +1598,7 @@ export declare function computeRiskReward(payload: {
|
|
|
1595
1598
|
risk_per_trade: number;
|
|
1596
1599
|
max: number;
|
|
1597
1600
|
min: number;
|
|
1601
|
+
avg_size: any;
|
|
1598
1602
|
neg_pnl: any;
|
|
1599
1603
|
entry: any;
|
|
1600
1604
|
};
|
|
@@ -1605,6 +1609,7 @@ export declare function getRiskReward(payload: {
|
|
|
1605
1609
|
global_config: GlobalConfig;
|
|
1606
1610
|
force_exact_risk?: boolean;
|
|
1607
1611
|
target_loss?: number;
|
|
1612
|
+
max_size?: number;
|
|
1608
1613
|
distribution?: GetEntriesParams["distribution"];
|
|
1609
1614
|
}): any;
|
|
1610
1615
|
export declare function computeProfitDetail(payload: {
|
|
@@ -1820,6 +1825,7 @@ export declare function generateOppositeTradeConfig(payload: {
|
|
|
1820
1825
|
risk_per_trade: number;
|
|
1821
1826
|
max: number;
|
|
1822
1827
|
min: number;
|
|
1828
|
+
avg_size: any;
|
|
1823
1829
|
neg_pnl: any;
|
|
1824
1830
|
entry: any;
|
|
1825
1831
|
};
|
|
@@ -1887,6 +1893,7 @@ export declare function generateDangerousConfig(payload: {
|
|
|
1887
1893
|
risk_per_trade: number;
|
|
1888
1894
|
max: number;
|
|
1889
1895
|
min: number;
|
|
1896
|
+
avg_size: any;
|
|
1890
1897
|
neg_pnl: any;
|
|
1891
1898
|
entry: any;
|
|
1892
1899
|
};
|
|
@@ -2238,6 +2245,7 @@ export declare class ExchangePosition {
|
|
|
2238
2245
|
risk_per_trade: number;
|
|
2239
2246
|
max: number;
|
|
2240
2247
|
min: number;
|
|
2248
|
+
avg_size: any;
|
|
2241
2249
|
neg_pnl: any;
|
|
2242
2250
|
entry: any;
|
|
2243
2251
|
};
|
|
@@ -2249,6 +2257,7 @@ export declare class ExchangePosition {
|
|
|
2249
2257
|
risk_per_trade: number;
|
|
2250
2258
|
max: number;
|
|
2251
2259
|
min: number;
|
|
2260
|
+
avg_size: any;
|
|
2252
2261
|
neg_pnl: any;
|
|
2253
2262
|
entry: any;
|
|
2254
2263
|
}>;
|
|
@@ -2326,6 +2335,7 @@ export declare class ExchangePosition {
|
|
|
2326
2335
|
risk_per_trade: number;
|
|
2327
2336
|
max: number;
|
|
2328
2337
|
min: number;
|
|
2338
|
+
avg_size: any;
|
|
2329
2339
|
neg_pnl: any;
|
|
2330
2340
|
entry: any;
|
|
2331
2341
|
};
|
|
@@ -2902,6 +2912,7 @@ declare class ExchangeAccount$1 {
|
|
|
2902
2912
|
risk_per_trade: number;
|
|
2903
2913
|
max: number;
|
|
2904
2914
|
min: number;
|
|
2915
|
+
avg_size: any;
|
|
2905
2916
|
neg_pnl: any;
|
|
2906
2917
|
entry: any;
|
|
2907
2918
|
};
|
package/dist/index.js
CHANGED
|
@@ -57427,7 +57427,8 @@ function determineOptimumReward(payload) {
|
|
|
57427
57427
|
low_range = 1,
|
|
57428
57428
|
high_range = 199,
|
|
57429
57429
|
target_loss,
|
|
57430
|
-
distribution
|
|
57430
|
+
distribution,
|
|
57431
|
+
max_size
|
|
57431
57432
|
} = payload;
|
|
57432
57433
|
const criterion = app_config.strategy || "quantity";
|
|
57433
57434
|
const risk_rewards = createArray(low_range, high_range, 1);
|
|
@@ -57449,6 +57450,7 @@ function determineOptimumReward(payload) {
|
|
|
57449
57450
|
let min = Infinity;
|
|
57450
57451
|
let neg_pnl = trades[0]?.neg_pnl || 0;
|
|
57451
57452
|
let entry = trades.at(-1)?.entry;
|
|
57453
|
+
let avg_size = trades[0]?.avg_size || 0;
|
|
57452
57454
|
if (!entry) {
|
|
57453
57455
|
return null;
|
|
57454
57456
|
}
|
|
@@ -57465,11 +57467,15 @@ function determineOptimumReward(payload) {
|
|
|
57465
57467
|
risk_per_trade: app_config.risk_per_trade,
|
|
57466
57468
|
max,
|
|
57467
57469
|
min,
|
|
57470
|
+
avg_size,
|
|
57468
57471
|
neg_pnl,
|
|
57469
57472
|
entry
|
|
57470
57473
|
};
|
|
57471
57474
|
});
|
|
57472
57475
|
func = func.filter((r2) => Boolean(r2));
|
|
57476
|
+
if (max_size !== undefined && max_size > 0) {
|
|
57477
|
+
func = func.filter((r2) => r2.avg_size <= max_size);
|
|
57478
|
+
}
|
|
57473
57479
|
if (target_loss === undefined) {
|
|
57474
57480
|
func = func.filter((r2) => {
|
|
57475
57481
|
let foundIndex = r2?.result.findIndex((e2) => e2.quantity === r2.max);
|
|
@@ -57607,7 +57613,15 @@ function determineOptimumRisk(config2, payload, params) {
|
|
|
57607
57613
|
};
|
|
57608
57614
|
}
|
|
57609
57615
|
function computeRiskReward(payload) {
|
|
57610
|
-
const {
|
|
57616
|
+
const {
|
|
57617
|
+
app_config,
|
|
57618
|
+
entry,
|
|
57619
|
+
stop,
|
|
57620
|
+
risk_per_trade,
|
|
57621
|
+
target_loss,
|
|
57622
|
+
distribution,
|
|
57623
|
+
max_size
|
|
57624
|
+
} = payload;
|
|
57611
57625
|
const kind = entry > stop ? "long" : "short";
|
|
57612
57626
|
app_config.kind = kind;
|
|
57613
57627
|
app_config.entry = entry;
|
|
@@ -57616,12 +57630,14 @@ function computeRiskReward(payload) {
|
|
|
57616
57630
|
const result = determineOptimumReward({
|
|
57617
57631
|
app_config,
|
|
57618
57632
|
target_loss,
|
|
57619
|
-
distribution
|
|
57633
|
+
distribution,
|
|
57634
|
+
max_size
|
|
57620
57635
|
});
|
|
57621
57636
|
return result;
|
|
57622
57637
|
}
|
|
57623
57638
|
function getRiskReward(payload) {
|
|
57624
57639
|
const {
|
|
57640
|
+
max_size,
|
|
57625
57641
|
entry,
|
|
57626
57642
|
stop,
|
|
57627
57643
|
risk,
|
|
@@ -57644,7 +57660,8 @@ function getRiskReward(payload) {
|
|
|
57644
57660
|
stop,
|
|
57645
57661
|
risk_per_trade: risk,
|
|
57646
57662
|
target_loss,
|
|
57647
|
-
distribution
|
|
57663
|
+
distribution,
|
|
57664
|
+
max_size
|
|
57648
57665
|
});
|
|
57649
57666
|
if (force_exact_risk) {
|
|
57650
57667
|
const new_risk_per_trade = determineOptimumRisk(global_config, {
|
package/dist/mcp-server.cjs
CHANGED
|
@@ -64163,7 +64163,8 @@ function determineOptimumReward(payload) {
|
|
|
64163
64163
|
low_range = 1,
|
|
64164
64164
|
high_range = 199,
|
|
64165
64165
|
target_loss,
|
|
64166
|
-
distribution
|
|
64166
|
+
distribution,
|
|
64167
|
+
max_size
|
|
64167
64168
|
} = payload;
|
|
64168
64169
|
const criterion = app_config.strategy || "quantity";
|
|
64169
64170
|
const risk_rewards = createArray(low_range, high_range, 1);
|
|
@@ -64185,6 +64186,7 @@ function determineOptimumReward(payload) {
|
|
|
64185
64186
|
let min = Infinity;
|
|
64186
64187
|
let neg_pnl = trades[0]?.neg_pnl || 0;
|
|
64187
64188
|
let entry = trades.at(-1)?.entry;
|
|
64189
|
+
let avg_size = trades[0]?.avg_size || 0;
|
|
64188
64190
|
if (!entry) {
|
|
64189
64191
|
return null;
|
|
64190
64192
|
}
|
|
@@ -64201,11 +64203,15 @@ function determineOptimumReward(payload) {
|
|
|
64201
64203
|
risk_per_trade: app_config.risk_per_trade,
|
|
64202
64204
|
max,
|
|
64203
64205
|
min,
|
|
64206
|
+
avg_size,
|
|
64204
64207
|
neg_pnl,
|
|
64205
64208
|
entry
|
|
64206
64209
|
};
|
|
64207
64210
|
});
|
|
64208
64211
|
func = func.filter((r2) => Boolean(r2));
|
|
64212
|
+
if (max_size !== undefined && max_size > 0) {
|
|
64213
|
+
func = func.filter((r2) => r2.avg_size <= max_size);
|
|
64214
|
+
}
|
|
64209
64215
|
if (target_loss === undefined) {
|
|
64210
64216
|
func = func.filter((r2) => {
|
|
64211
64217
|
let foundIndex = r2?.result.findIndex((e2) => e2.quantity === r2.max);
|
|
@@ -64343,7 +64349,15 @@ function determineOptimumRisk(config2, payload, params) {
|
|
|
64343
64349
|
};
|
|
64344
64350
|
}
|
|
64345
64351
|
function computeRiskReward(payload) {
|
|
64346
|
-
const {
|
|
64352
|
+
const {
|
|
64353
|
+
app_config,
|
|
64354
|
+
entry,
|
|
64355
|
+
stop,
|
|
64356
|
+
risk_per_trade,
|
|
64357
|
+
target_loss,
|
|
64358
|
+
distribution,
|
|
64359
|
+
max_size
|
|
64360
|
+
} = payload;
|
|
64347
64361
|
const kind = entry > stop ? "long" : "short";
|
|
64348
64362
|
app_config.kind = kind;
|
|
64349
64363
|
app_config.entry = entry;
|
|
@@ -64352,12 +64366,14 @@ function computeRiskReward(payload) {
|
|
|
64352
64366
|
const result = determineOptimumReward({
|
|
64353
64367
|
app_config,
|
|
64354
64368
|
target_loss,
|
|
64355
|
-
distribution
|
|
64369
|
+
distribution,
|
|
64370
|
+
max_size
|
|
64356
64371
|
});
|
|
64357
64372
|
return result;
|
|
64358
64373
|
}
|
|
64359
64374
|
function getRiskReward(payload) {
|
|
64360
64375
|
const {
|
|
64376
|
+
max_size,
|
|
64361
64377
|
entry,
|
|
64362
64378
|
stop,
|
|
64363
64379
|
risk,
|
|
@@ -64380,7 +64396,8 @@ function getRiskReward(payload) {
|
|
|
64380
64396
|
stop,
|
|
64381
64397
|
risk_per_trade: risk,
|
|
64382
64398
|
target_loss,
|
|
64383
|
-
distribution
|
|
64399
|
+
distribution,
|
|
64400
|
+
max_size
|
|
64384
64401
|
});
|
|
64385
64402
|
if (force_exact_risk) {
|
|
64386
64403
|
const new_risk_per_trade = determineOptimumRisk(global_config, {
|
package/dist/mcp-server.js
CHANGED
|
@@ -64136,7 +64136,8 @@ function determineOptimumReward(payload) {
|
|
|
64136
64136
|
low_range = 1,
|
|
64137
64137
|
high_range = 199,
|
|
64138
64138
|
target_loss,
|
|
64139
|
-
distribution
|
|
64139
|
+
distribution,
|
|
64140
|
+
max_size
|
|
64140
64141
|
} = payload;
|
|
64141
64142
|
const criterion = app_config.strategy || "quantity";
|
|
64142
64143
|
const risk_rewards = createArray(low_range, high_range, 1);
|
|
@@ -64158,6 +64159,7 @@ function determineOptimumReward(payload) {
|
|
|
64158
64159
|
let min = Infinity;
|
|
64159
64160
|
let neg_pnl = trades[0]?.neg_pnl || 0;
|
|
64160
64161
|
let entry = trades.at(-1)?.entry;
|
|
64162
|
+
let avg_size = trades[0]?.avg_size || 0;
|
|
64161
64163
|
if (!entry) {
|
|
64162
64164
|
return null;
|
|
64163
64165
|
}
|
|
@@ -64174,11 +64176,15 @@ function determineOptimumReward(payload) {
|
|
|
64174
64176
|
risk_per_trade: app_config.risk_per_trade,
|
|
64175
64177
|
max,
|
|
64176
64178
|
min,
|
|
64179
|
+
avg_size,
|
|
64177
64180
|
neg_pnl,
|
|
64178
64181
|
entry
|
|
64179
64182
|
};
|
|
64180
64183
|
});
|
|
64181
64184
|
func = func.filter((r2) => Boolean(r2));
|
|
64185
|
+
if (max_size !== undefined && max_size > 0) {
|
|
64186
|
+
func = func.filter((r2) => r2.avg_size <= max_size);
|
|
64187
|
+
}
|
|
64182
64188
|
if (target_loss === undefined) {
|
|
64183
64189
|
func = func.filter((r2) => {
|
|
64184
64190
|
let foundIndex = r2?.result.findIndex((e2) => e2.quantity === r2.max);
|
|
@@ -64316,7 +64322,15 @@ function determineOptimumRisk(config2, payload, params) {
|
|
|
64316
64322
|
};
|
|
64317
64323
|
}
|
|
64318
64324
|
function computeRiskReward(payload) {
|
|
64319
|
-
const {
|
|
64325
|
+
const {
|
|
64326
|
+
app_config,
|
|
64327
|
+
entry,
|
|
64328
|
+
stop,
|
|
64329
|
+
risk_per_trade,
|
|
64330
|
+
target_loss,
|
|
64331
|
+
distribution,
|
|
64332
|
+
max_size
|
|
64333
|
+
} = payload;
|
|
64320
64334
|
const kind = entry > stop ? "long" : "short";
|
|
64321
64335
|
app_config.kind = kind;
|
|
64322
64336
|
app_config.entry = entry;
|
|
@@ -64325,12 +64339,14 @@ function computeRiskReward(payload) {
|
|
|
64325
64339
|
const result = determineOptimumReward({
|
|
64326
64340
|
app_config,
|
|
64327
64341
|
target_loss,
|
|
64328
|
-
distribution
|
|
64342
|
+
distribution,
|
|
64343
|
+
max_size
|
|
64329
64344
|
});
|
|
64330
64345
|
return result;
|
|
64331
64346
|
}
|
|
64332
64347
|
function getRiskReward(payload) {
|
|
64333
64348
|
const {
|
|
64349
|
+
max_size,
|
|
64334
64350
|
entry,
|
|
64335
64351
|
stop,
|
|
64336
64352
|
risk,
|
|
@@ -64353,7 +64369,8 @@ function getRiskReward(payload) {
|
|
|
64353
64369
|
stop,
|
|
64354
64370
|
risk_per_trade: risk,
|
|
64355
64371
|
target_loss,
|
|
64356
|
-
distribution
|
|
64372
|
+
distribution,
|
|
64373
|
+
max_size
|
|
64357
64374
|
});
|
|
64358
64375
|
if (force_exact_risk) {
|
|
64359
64376
|
const new_risk_per_trade = determineOptimumRisk(global_config, {
|