@one_deploy/sdk 1.0.7 → 1.2.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.
Files changed (106) hide show
  1. package/README.md +339 -0
  2. package/dist/ForexPoolDataGenerator--__twRwl.d.mts +76 -0
  3. package/dist/ForexPoolDataGenerator-eUgwsU_B.d.ts +76 -0
  4. package/dist/OneForexTradeHistory-TlKxjbFF.d.ts +250 -0
  5. package/dist/OneForexTradeHistory-iDySMcw0.d.mts +250 -0
  6. package/dist/components/index.d.mts +539 -0
  7. package/dist/components/index.d.ts +539 -0
  8. package/dist/components/index.js +7295 -0
  9. package/dist/components/index.js.map +1 -0
  10. package/dist/components/index.mjs +7243 -0
  11. package/dist/components/index.mjs.map +1 -0
  12. package/dist/config/index.d.mts +1 -0
  13. package/dist/config/index.d.ts +1 -0
  14. package/dist/console-BfTMA7ah.d.mts +504 -0
  15. package/dist/console-BfTMA7ah.d.ts +504 -0
  16. package/dist/hooks/index.d.mts +323 -1
  17. package/dist/hooks/index.d.ts +323 -1
  18. package/dist/hooks/index.js +3223 -0
  19. package/dist/hooks/index.js.map +1 -1
  20. package/dist/hooks/index.mjs +3204 -1
  21. package/dist/hooks/index.mjs.map +1 -1
  22. package/dist/index.d.mts +18 -352
  23. package/dist/index.d.ts +18 -352
  24. package/dist/index.js +8646 -574
  25. package/dist/index.js.map +1 -1
  26. package/dist/index.mjs +8449 -432
  27. package/dist/index.mjs.map +1 -1
  28. package/dist/providers/index.d.mts +31 -31
  29. package/dist/providers/index.d.ts +31 -31
  30. package/dist/providers/index.js +140 -153
  31. package/dist/providers/index.js.map +1 -1
  32. package/dist/providers/index.mjs +100 -109
  33. package/dist/providers/index.mjs.map +1 -1
  34. package/dist/react-native.d.mts +8 -144
  35. package/dist/react-native.d.ts +8 -144
  36. package/dist/react-native.js +2640 -689
  37. package/dist/react-native.js.map +1 -1
  38. package/dist/react-native.mjs +2610 -691
  39. package/dist/react-native.mjs.map +1 -1
  40. package/dist/services/index.d.mts +85 -4
  41. package/dist/services/index.d.ts +85 -4
  42. package/dist/services/index.js +1621 -0
  43. package/dist/services/index.js.map +1 -1
  44. package/dist/services/index.mjs +1619 -1
  45. package/dist/services/index.mjs.map +1 -1
  46. package/dist/types/index.d.mts +203 -1
  47. package/dist/types/index.d.ts +203 -1
  48. package/dist/types/index.js +275 -0
  49. package/dist/types/index.js.map +1 -1
  50. package/dist/types/index.mjs +251 -0
  51. package/dist/types/index.mjs.map +1 -1
  52. package/dist/useForexTrading-BleeSor8.d.mts +80 -0
  53. package/dist/useForexTrading-ZgW_G40Q.d.ts +80 -0
  54. package/package.json +9 -2
  55. package/src/components/OneConnectButton.tsx +24 -1
  56. package/src/components/OneNFTGallery.tsx +13 -7
  57. package/src/components/OneOfframpWidget.tsx +4 -3
  58. package/src/components/OnePayWidget.tsx +10 -1
  59. package/src/components/OneSendWidget.tsx +3 -3
  60. package/src/components/OneSwapWidget.tsx +4 -4
  61. package/src/components/OneTransactionButton.tsx +28 -3
  62. package/src/components/OneWalletBalance.tsx +1 -1
  63. package/src/components/ai/OneChainSelector.tsx +63 -336
  64. package/src/components/ai/OneForexCapitalSplit.tsx +112 -0
  65. package/src/components/ai/OneForexConsoleView.tsx +90 -0
  66. package/src/components/ai/OneForexPairSelector.tsx +101 -0
  67. package/src/components/ai/OneForexPoolCard.tsx +105 -0
  68. package/src/components/ai/OneForexTradeHistory.tsx +107 -0
  69. package/src/components/ai/OnePairSelector.tsx +77 -434
  70. package/src/components/ai/console/OneAIQuantConsole.tsx +423 -0
  71. package/src/components/ai/console/OneAgentCard.tsx +383 -0
  72. package/src/components/ai/console/OneAgentConsole.tsx +469 -0
  73. package/src/components/ai/console/OneDecisionTimeline.tsx +433 -0
  74. package/src/components/ai/console/OneMetricsDashboard.tsx +493 -0
  75. package/src/components/ai/console/OnePositionCard.tsx +406 -0
  76. package/src/components/ai/console/OnePositionDetail.tsx +600 -0
  77. package/src/components/ai/console/OneRiskIndicator.tsx +464 -0
  78. package/src/components/ai/console/OneTradingConsole.tsx +660 -0
  79. package/src/components/ai/console/index.ts +17 -0
  80. package/src/components/ai/index.ts +10 -0
  81. package/src/hooks/index.ts +46 -0
  82. package/src/hooks/useAIDecisions.ts +280 -0
  83. package/src/hooks/useAIPositions.ts +349 -0
  84. package/src/hooks/useAIQuantConsole.ts +283 -0
  85. package/src/hooks/useAIRiskStatus.ts +276 -0
  86. package/src/hooks/useAITrading.ts +190 -0
  87. package/src/hooks/useBotSimulation.ts +201 -0
  88. package/src/hooks/useForexTrading.ts +430 -0
  89. package/src/hooks/useTradingConsole.ts +243 -0
  90. package/src/index.ts +123 -5
  91. package/src/providers/OneProvider.tsx +181 -5
  92. package/src/providers/index.ts +22 -8
  93. package/src/react-native.ts +41 -0
  94. package/src/services/forex/BotSimulationEngine.ts +968 -0
  95. package/src/services/forex/ForexPoolDataGenerator.ts +542 -0
  96. package/src/services/forex/ForexSimulationEngine.ts +482 -0
  97. package/src/services/forex/index.ts +21 -0
  98. package/src/services/index.ts +16 -0
  99. package/src/types/aiTrading.ts +151 -0
  100. package/src/types/console.ts +380 -0
  101. package/src/types/forex.ts +282 -0
  102. package/src/types/index.ts +106 -0
  103. package/dist/price-CgqXPnT3.d.ts +0 -13
  104. package/dist/price-ClbLHHjv.d.mts +0 -13
  105. package/dist/supabase-BT0c7q9e.d.mts +0 -82
  106. package/dist/supabase-BT0c7q9e.d.ts +0 -82
@@ -0,0 +1,493 @@
1
+ /**
2
+ * OneMetricsDashboard - Displays trading metrics and performance
3
+ * Part of ONE Ecosystem SDK
4
+ */
5
+
6
+ import React from 'react';
7
+ import { View, Text, StyleSheet, ViewStyle, Platform } from 'react-native';
8
+ import type { ConsoleMetrics } from '../../../types/console';
9
+ import { formatPnl, formatPercent } from '../../../types/console';
10
+
11
+ const MONO = Platform.OS === 'ios' ? 'Courier New' : 'monospace';
12
+
13
+ export interface OneMetricsDashboardProps {
14
+ metrics: ConsoleMetrics;
15
+ showNAV?: boolean;
16
+ showPnL?: boolean;
17
+ showTrades?: boolean;
18
+ showPositions?: boolean;
19
+ showStrategies?: boolean;
20
+ compact?: boolean;
21
+ style?: ViewStyle;
22
+ dark?: boolean;
23
+ }
24
+
25
+ export const OneMetricsDashboard: React.FC<OneMetricsDashboardProps> = ({
26
+ metrics,
27
+ showNAV = true,
28
+ showPnL = true,
29
+ showTrades = true,
30
+ showPositions = true,
31
+ showStrategies = false,
32
+ compact = false,
33
+ style,
34
+ dark = true,
35
+ }) => {
36
+ const bg = dark ? '#111111' : '#ffffff';
37
+ const border = dark ? '#2A2A35' : '#E5E7EB';
38
+ const textPrimary = dark ? '#ffffff' : '#111827';
39
+ const textSecondary = dark ? '#9CA3AF' : '#6B7280';
40
+ const textMuted = dark ? '#555560' : '#9CA3AF';
41
+ const cardBg = dark ? '#1A1A1F' : '#F9FAFB';
42
+
43
+ const MetricCard = ({
44
+ label,
45
+ value,
46
+ subValue,
47
+ valueColor,
48
+ icon,
49
+ }: {
50
+ label: string;
51
+ value: string;
52
+ subValue?: string;
53
+ valueColor?: string;
54
+ icon?: string;
55
+ }) => (
56
+ <View style={[styles.metricCard, { backgroundColor: cardBg }]}>
57
+ <View style={styles.metricHeader}>
58
+ {icon && <Text style={styles.metricIcon}>{icon}</Text>}
59
+ <Text style={[styles.metricLabel, { color: textMuted }]}>{label}</Text>
60
+ </View>
61
+ <Text style={[styles.metricValue, { color: valueColor || textPrimary }]}>
62
+ {value}
63
+ </Text>
64
+ {subValue && (
65
+ <Text style={[styles.metricSubValue, { color: textSecondary }]}>
66
+ {subValue}
67
+ </Text>
68
+ )}
69
+ </View>
70
+ );
71
+
72
+ if (compact) {
73
+ return (
74
+ <View style={[styles.compactContainer, { backgroundColor: bg, borderColor: border }, style]}>
75
+ <View style={styles.compactItem}>
76
+ <Text style={[styles.compactLabel, { color: textMuted }]}>NAV</Text>
77
+ <Text style={[styles.compactValue, { color: textPrimary }]}>
78
+ ${metrics.nav.toFixed(0)}
79
+ </Text>
80
+ </View>
81
+ <View style={styles.compactDivider} />
82
+ <View style={styles.compactItem}>
83
+ <Text style={[styles.compactLabel, { color: textMuted }]}>P&L</Text>
84
+ <Text style={[
85
+ styles.compactValue,
86
+ { color: metrics.totalPnl >= 0 ? '#10B981' : '#EF4444' }
87
+ ]}>
88
+ {formatPnl(metrics.totalPnl)}
89
+ </Text>
90
+ </View>
91
+ <View style={styles.compactDivider} />
92
+ <View style={styles.compactItem}>
93
+ <Text style={[styles.compactLabel, { color: textMuted }]}>Win</Text>
94
+ <Text style={[styles.compactValue, { color: textPrimary }]}>
95
+ {(metrics.winRate * 100).toFixed(0)}%
96
+ </Text>
97
+ </View>
98
+ <View style={styles.compactDivider} />
99
+ <View style={styles.compactItem}>
100
+ <Text style={[styles.compactLabel, { color: textMuted }]}>Pos</Text>
101
+ <Text style={[styles.compactValue, { color: textPrimary }]}>
102
+ {metrics.openPositions}
103
+ </Text>
104
+ </View>
105
+ </View>
106
+ );
107
+ }
108
+
109
+ return (
110
+ <View style={[styles.container, { backgroundColor: bg, borderColor: border }, style]}>
111
+ {/* NAV Section */}
112
+ {showNAV && (
113
+ <View style={styles.navSection}>
114
+ <View style={styles.navMain}>
115
+ <Text style={[styles.navLabel, { color: textMuted }]}>Net Asset Value</Text>
116
+ <Text style={[styles.navValue, { color: textPrimary }]}>
117
+ ${metrics.nav.toLocaleString('en-US', { minimumFractionDigits: 2 })}
118
+ </Text>
119
+ <View style={styles.navChangeRow}>
120
+ <Text style={[
121
+ styles.navChange,
122
+ { color: metrics.navChange24h >= 0 ? '#10B981' : '#EF4444' }
123
+ ]}>
124
+ {metrics.navChange24h >= 0 ? '+' : ''}${metrics.navChange24h.toFixed(2)}
125
+ </Text>
126
+ <Text style={[
127
+ styles.navChangePercent,
128
+ { color: metrics.navChange24h >= 0 ? '#10B981' : '#EF4444' }
129
+ ]}>
130
+ ({formatPercent(metrics.navChangePercent24h)})
131
+ </Text>
132
+ <Text style={[styles.navPeriod, { color: textMuted }]}>24h</Text>
133
+ </View>
134
+ </View>
135
+ </View>
136
+ )}
137
+
138
+ {/* P&L Grid */}
139
+ {showPnL && (
140
+ <View style={styles.section}>
141
+ <Text style={[styles.sectionTitle, { color: textMuted }]}>Profit & Loss</Text>
142
+ <View style={styles.metricsGrid}>
143
+ <MetricCard
144
+ label="Total P&L"
145
+ value={formatPnl(metrics.totalPnl)}
146
+ valueColor={metrics.totalPnl >= 0 ? '#10B981' : '#EF4444'}
147
+ />
148
+ <MetricCard
149
+ label="Realized"
150
+ value={formatPnl(metrics.realizedPnl)}
151
+ valueColor={metrics.realizedPnl >= 0 ? '#10B981' : '#EF4444'}
152
+ />
153
+ <MetricCard
154
+ label="Unrealized"
155
+ value={formatPnl(metrics.unrealizedPnl)}
156
+ valueColor={metrics.unrealizedPnl >= 0 ? '#10B981' : '#EF4444'}
157
+ />
158
+ <MetricCard
159
+ label="Today"
160
+ value={formatPnl(metrics.pnlToday)}
161
+ valueColor={metrics.pnlToday >= 0 ? '#10B981' : '#EF4444'}
162
+ />
163
+ </View>
164
+ <View style={styles.pnlPeriods}>
165
+ <View style={styles.pnlPeriodItem}>
166
+ <Text style={[styles.pnlPeriodLabel, { color: textMuted }]}>7D</Text>
167
+ <Text style={[
168
+ styles.pnlPeriodValue,
169
+ { color: metrics.pnl7d >= 0 ? '#10B981' : '#EF4444' }
170
+ ]}>
171
+ {formatPnl(metrics.pnl7d)}
172
+ </Text>
173
+ </View>
174
+ <View style={styles.pnlPeriodItem}>
175
+ <Text style={[styles.pnlPeriodLabel, { color: textMuted }]}>30D</Text>
176
+ <Text style={[
177
+ styles.pnlPeriodValue,
178
+ { color: metrics.pnl30d >= 0 ? '#10B981' : '#EF4444' }
179
+ ]}>
180
+ {formatPnl(metrics.pnl30d)}
181
+ </Text>
182
+ </View>
183
+ </View>
184
+ </View>
185
+ )}
186
+
187
+ {/* Trading Stats */}
188
+ {showTrades && (
189
+ <View style={styles.section}>
190
+ <Text style={[styles.sectionTitle, { color: textMuted }]}>Trading Stats</Text>
191
+ <View style={styles.metricsGrid}>
192
+ <MetricCard
193
+ label="Total Trades"
194
+ value={metrics.totalTrades.toString()}
195
+ subValue={`${metrics.tradesToday} today`}
196
+ />
197
+ <MetricCard
198
+ label="Win Rate"
199
+ value={`${(metrics.winRate * 100).toFixed(1)}%`}
200
+ subValue={`${metrics.winCount}W / ${metrics.lossCount}L`}
201
+ valueColor={metrics.winRate >= 0.5 ? '#10B981' : '#EF4444'}
202
+ />
203
+ <MetricCard
204
+ label="Avg Win"
205
+ value={formatPnl(metrics.avgWin)}
206
+ valueColor="#10B981"
207
+ />
208
+ <MetricCard
209
+ label="Avg Loss"
210
+ value={formatPnl(metrics.avgLoss)}
211
+ valueColor="#EF4444"
212
+ />
213
+ </View>
214
+ {metrics.profitFactor > 0 && metrics.profitFactor !== Infinity && (
215
+ <View style={styles.profitFactorRow}>
216
+ <Text style={[styles.profitFactorLabel, { color: textMuted }]}>Profit Factor</Text>
217
+ <Text style={[
218
+ styles.profitFactorValue,
219
+ { color: metrics.profitFactor >= 1.5 ? '#10B981' : metrics.profitFactor >= 1 ? '#F59E0B' : '#EF4444' }
220
+ ]}>
221
+ {metrics.profitFactor.toFixed(2)}
222
+ </Text>
223
+ </View>
224
+ )}
225
+ </View>
226
+ )}
227
+
228
+ {/* Position Stats */}
229
+ {showPositions && (
230
+ <View style={styles.section}>
231
+ <Text style={[styles.sectionTitle, { color: textMuted }]}>Position Overview</Text>
232
+ <View style={styles.positionStats}>
233
+ <View style={styles.positionItem}>
234
+ <Text style={[styles.positionLabel, { color: textMuted }]}>Open Positions</Text>
235
+ <Text style={[styles.positionValue, { color: textPrimary }]}>
236
+ {metrics.openPositions}
237
+ </Text>
238
+ </View>
239
+ <View style={styles.positionItem}>
240
+ <Text style={[styles.positionLabel, { color: textMuted }]}>Total Exposure</Text>
241
+ <Text style={[styles.positionValue, { color: textPrimary }]}>
242
+ ${metrics.totalExposure.toFixed(0)}
243
+ </Text>
244
+ </View>
245
+ <View style={styles.positionItem}>
246
+ <Text style={[styles.positionLabel, { color: textMuted }]}>Avg Leverage</Text>
247
+ <Text style={[styles.positionValue, { color: textPrimary }]}>
248
+ {metrics.avgLeverage.toFixed(1)}x
249
+ </Text>
250
+ </View>
251
+ </View>
252
+ </View>
253
+ )}
254
+
255
+ {/* Strategy Breakdown */}
256
+ {showStrategies && metrics.strategyMetrics && Object.keys(metrics.strategyMetrics).length > 0 && (
257
+ <View style={styles.section}>
258
+ <Text style={[styles.sectionTitle, { color: textMuted }]}>Strategy Performance</Text>
259
+ {Object.entries(metrics.strategyMetrics).map(([strategyId, data]) => (
260
+ <View key={strategyId} style={styles.strategyRow}>
261
+ <Text style={[styles.strategyName, { color: textSecondary }]}>
262
+ {strategyId.replace('-01', '').replace('-', ' ')}
263
+ </Text>
264
+ <View style={styles.strategyStats}>
265
+ <Text style={[
266
+ styles.strategyPnl,
267
+ { color: data.pnl >= 0 ? '#10B981' : '#EF4444' }
268
+ ]}>
269
+ {formatPnl(data.pnl)}
270
+ </Text>
271
+ <Text style={[styles.strategyWinRate, { color: textMuted }]}>
272
+ {(data.winRate * 100).toFixed(0)}%
273
+ </Text>
274
+ <Text style={[styles.strategyTrades, { color: textMuted }]}>
275
+ {data.trades} trades
276
+ </Text>
277
+ </View>
278
+ </View>
279
+ ))}
280
+ </View>
281
+ )}
282
+ </View>
283
+ );
284
+ };
285
+
286
+ const styles = StyleSheet.create({
287
+ container: {
288
+ borderRadius: 12,
289
+ borderWidth: 1,
290
+ padding: 14,
291
+ gap: 16,
292
+ },
293
+ compactContainer: {
294
+ flexDirection: 'row',
295
+ alignItems: 'center',
296
+ justifyContent: 'space-around',
297
+ borderRadius: 8,
298
+ borderWidth: 1,
299
+ paddingVertical: 10,
300
+ paddingHorizontal: 12,
301
+ },
302
+ compactItem: {
303
+ alignItems: 'center',
304
+ gap: 2,
305
+ },
306
+ compactLabel: {
307
+ fontFamily: MONO,
308
+ fontSize: 9,
309
+ textTransform: 'uppercase',
310
+ },
311
+ compactValue: {
312
+ fontFamily: MONO,
313
+ fontSize: 13,
314
+ fontWeight: '600',
315
+ },
316
+ compactDivider: {
317
+ width: 1,
318
+ height: 24,
319
+ backgroundColor: '#2A2A35',
320
+ },
321
+ navSection: {
322
+ alignItems: 'center',
323
+ paddingBottom: 10,
324
+ borderBottomWidth: 1,
325
+ borderBottomColor: '#2A2A35',
326
+ },
327
+ navMain: {
328
+ alignItems: 'center',
329
+ gap: 4,
330
+ },
331
+ navLabel: {
332
+ fontFamily: MONO,
333
+ fontSize: 10,
334
+ textTransform: 'uppercase',
335
+ },
336
+ navValue: {
337
+ fontSize: 28,
338
+ fontWeight: '700',
339
+ fontFamily: MONO,
340
+ },
341
+ navChangeRow: {
342
+ flexDirection: 'row',
343
+ alignItems: 'center',
344
+ gap: 6,
345
+ },
346
+ navChange: {
347
+ fontFamily: MONO,
348
+ fontSize: 14,
349
+ fontWeight: '600',
350
+ },
351
+ navChangePercent: {
352
+ fontFamily: MONO,
353
+ fontSize: 12,
354
+ },
355
+ navPeriod: {
356
+ fontFamily: MONO,
357
+ fontSize: 10,
358
+ },
359
+ section: {
360
+ gap: 10,
361
+ },
362
+ sectionTitle: {
363
+ fontFamily: MONO,
364
+ fontSize: 10,
365
+ textTransform: 'uppercase',
366
+ letterSpacing: 1,
367
+ },
368
+ metricsGrid: {
369
+ flexDirection: 'row',
370
+ flexWrap: 'wrap',
371
+ gap: 8,
372
+ },
373
+ metricCard: {
374
+ width: '48%',
375
+ padding: 10,
376
+ borderRadius: 8,
377
+ gap: 4,
378
+ },
379
+ metricHeader: {
380
+ flexDirection: 'row',
381
+ alignItems: 'center',
382
+ gap: 4,
383
+ },
384
+ metricIcon: {
385
+ fontSize: 12,
386
+ },
387
+ metricLabel: {
388
+ fontFamily: MONO,
389
+ fontSize: 9,
390
+ textTransform: 'uppercase',
391
+ },
392
+ metricValue: {
393
+ fontFamily: MONO,
394
+ fontSize: 16,
395
+ fontWeight: '700',
396
+ },
397
+ metricSubValue: {
398
+ fontFamily: MONO,
399
+ fontSize: 10,
400
+ },
401
+ pnlPeriods: {
402
+ flexDirection: 'row',
403
+ justifyContent: 'flex-end',
404
+ gap: 16,
405
+ },
406
+ pnlPeriodItem: {
407
+ flexDirection: 'row',
408
+ alignItems: 'center',
409
+ gap: 6,
410
+ },
411
+ pnlPeriodLabel: {
412
+ fontFamily: MONO,
413
+ fontSize: 10,
414
+ },
415
+ pnlPeriodValue: {
416
+ fontFamily: MONO,
417
+ fontSize: 12,
418
+ fontWeight: '600',
419
+ },
420
+ profitFactorRow: {
421
+ flexDirection: 'row',
422
+ justifyContent: 'space-between',
423
+ alignItems: 'center',
424
+ paddingTop: 8,
425
+ borderTopWidth: 1,
426
+ borderTopColor: '#2A2A35',
427
+ },
428
+ profitFactorLabel: {
429
+ fontFamily: MONO,
430
+ fontSize: 10,
431
+ textTransform: 'uppercase',
432
+ },
433
+ profitFactorValue: {
434
+ fontFamily: MONO,
435
+ fontSize: 16,
436
+ fontWeight: '700',
437
+ },
438
+ positionStats: {
439
+ flexDirection: 'row',
440
+ justifyContent: 'space-around',
441
+ },
442
+ positionItem: {
443
+ alignItems: 'center',
444
+ gap: 4,
445
+ },
446
+ positionLabel: {
447
+ fontFamily: MONO,
448
+ fontSize: 9,
449
+ textTransform: 'uppercase',
450
+ },
451
+ positionValue: {
452
+ fontFamily: MONO,
453
+ fontSize: 16,
454
+ fontWeight: '600',
455
+ },
456
+ strategyRow: {
457
+ flexDirection: 'row',
458
+ justifyContent: 'space-between',
459
+ alignItems: 'center',
460
+ paddingVertical: 6,
461
+ borderBottomWidth: 1,
462
+ borderBottomColor: '#1A1A1F',
463
+ },
464
+ strategyName: {
465
+ fontSize: 12,
466
+ textTransform: 'capitalize',
467
+ flex: 1,
468
+ },
469
+ strategyStats: {
470
+ flexDirection: 'row',
471
+ alignItems: 'center',
472
+ gap: 12,
473
+ },
474
+ strategyPnl: {
475
+ fontFamily: MONO,
476
+ fontSize: 12,
477
+ fontWeight: '600',
478
+ width: 70,
479
+ textAlign: 'right',
480
+ },
481
+ strategyWinRate: {
482
+ fontFamily: MONO,
483
+ fontSize: 11,
484
+ width: 35,
485
+ textAlign: 'right',
486
+ },
487
+ strategyTrades: {
488
+ fontFamily: MONO,
489
+ fontSize: 10,
490
+ width: 60,
491
+ textAlign: 'right',
492
+ },
493
+ });