@one_deploy/sdk 1.2.0 → 1.2.2

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 (43) hide show
  1. package/dist/{ForexPoolDataGenerator--__twRwl.d.mts → ForexPoolDataGenerator-JxTPpJPz.d.mts} +1 -1
  2. package/dist/{ForexPoolDataGenerator-eUgwsU_B.d.ts → ForexPoolDataGenerator-qwWv6sCE.d.ts} +1 -1
  3. package/dist/{OneForexTradeHistory-TlKxjbFF.d.ts → OneForexTradeHistory-BE4rJH5t.d.ts} +1 -1
  4. package/dist/{OneForexTradeHistory-iDySMcw0.d.mts → OneForexTradeHistory-DbuHXRy0.d.mts} +1 -1
  5. package/dist/components/index.d.mts +2 -2
  6. package/dist/components/index.d.ts +2 -2
  7. package/dist/config/index.d.mts +1 -1
  8. package/dist/config/index.d.ts +1 -1
  9. package/dist/{console-BfTMA7ah.d.mts → console-Dvf-N9Gr.d.mts} +7 -0
  10. package/dist/{console-BfTMA7ah.d.ts → console-Dvf-N9Gr.d.ts} +7 -0
  11. package/dist/hooks/index.d.mts +2 -2
  12. package/dist/hooks/index.d.ts +2 -2
  13. package/dist/hooks/index.js +399 -38
  14. package/dist/hooks/index.js.map +1 -1
  15. package/dist/hooks/index.mjs +399 -38
  16. package/dist/hooks/index.mjs.map +1 -1
  17. package/dist/index.d.mts +4 -4
  18. package/dist/index.d.ts +4 -4
  19. package/dist/index.js +399 -38
  20. package/dist/index.js.map +1 -1
  21. package/dist/index.mjs +399 -38
  22. package/dist/index.mjs.map +1 -1
  23. package/dist/providers/index.d.mts +1 -1
  24. package/dist/providers/index.d.ts +1 -1
  25. package/dist/react-native.d.mts +4 -4
  26. package/dist/react-native.d.ts +4 -4
  27. package/dist/react-native.js +239 -36
  28. package/dist/react-native.js.map +1 -1
  29. package/dist/react-native.mjs +239 -36
  30. package/dist/react-native.mjs.map +1 -1
  31. package/dist/services/index.d.mts +2 -2
  32. package/dist/services/index.d.ts +2 -2
  33. package/dist/services/index.js +239 -36
  34. package/dist/services/index.js.map +1 -1
  35. package/dist/services/index.mjs +239 -36
  36. package/dist/services/index.mjs.map +1 -1
  37. package/dist/types/index.d.mts +1 -1
  38. package/dist/types/index.d.ts +1 -1
  39. package/dist/{useForexTrading-ZgW_G40Q.d.ts → useForexTrading-CA2DPQVf.d.ts} +1 -1
  40. package/dist/{useForexTrading-BleeSor8.d.mts → useForexTrading-I7nIQyog.d.mts} +1 -1
  41. package/package.json +1 -1
  42. package/src/services/forex/BotSimulationEngine.ts +463 -35
  43. package/src/services/forex/index.ts +12 -1
@@ -1,4 +1,4 @@
1
- export { M as AGENT_STATUS_COLORS, G as AIDecision, A as AILogType, D as AIPosition, U as AIQuantConsoleOptions, y as AI_LOG_COLORS, V as AgentConsoleOptions, L as AgentStatus, a as BotLogEntry, B as BotLogType, c as BotState, N as CombinedLogEntry, K as ConsoleMetrics, Y as DEFAULT_CONSOLE_METRICS, W as DEFAULT_CONSOLE_OPTIONS, X as DEFAULT_RISK_STATUS, E as DecisionAction, v as FOREX_AGENT, F as FOREX_CAPITAL_SPLIT, h as FOREX_CURRENCY_PAIRS, f as FOREX_CYCLE_OPTIONS, z as FOREX_LOG_COLORS, k as FOREX_POOL_DEFAULTS, u as ForexAgent, g as ForexCurrencyPair, e as ForexCycleOption, p as ForexInvestment, t as ForexLogEntry, s as ForexLogType, j as ForexPool, n as ForexPoolDailySnapshot, m as ForexPoolTransaction, l as ForexPoolTransactionType, i as ForexPoolType, o as ForexPosition, r as ForexTradeRecord, q as ForexTradeStatus, I as IndicatorSnapshot, P as PositionSide, C as PositionStatus, H as RISK_LEVEL_COLORS, R as RiskStatus, S as StrategyPersonality, J as TRADING_STATUS_COLORS, Q as TradingConsoleOptions, O as TradingConsoleState, T as TradingStatus, w as calculateForexNetProfit, Z as calculateRiskLevel, d as computePoolAllocations, x as estimateForexProfit, $ as formatPercent, _ as formatPnl } from '../console-BfTMA7ah.mjs';
1
+ export { M as AGENT_STATUS_COLORS, G as AIDecision, A as AILogType, D as AIPosition, U as AIQuantConsoleOptions, y as AI_LOG_COLORS, V as AgentConsoleOptions, L as AgentStatus, a as BotLogEntry, B as BotLogType, c as BotState, N as CombinedLogEntry, K as ConsoleMetrics, Y as DEFAULT_CONSOLE_METRICS, W as DEFAULT_CONSOLE_OPTIONS, X as DEFAULT_RISK_STATUS, E as DecisionAction, v as FOREX_AGENT, F as FOREX_CAPITAL_SPLIT, h as FOREX_CURRENCY_PAIRS, f as FOREX_CYCLE_OPTIONS, z as FOREX_LOG_COLORS, k as FOREX_POOL_DEFAULTS, u as ForexAgent, g as ForexCurrencyPair, e as ForexCycleOption, p as ForexInvestment, t as ForexLogEntry, s as ForexLogType, j as ForexPool, n as ForexPoolDailySnapshot, m as ForexPoolTransaction, l as ForexPoolTransactionType, i as ForexPoolType, o as ForexPosition, r as ForexTradeRecord, q as ForexTradeStatus, I as IndicatorSnapshot, P as PositionSide, C as PositionStatus, H as RISK_LEVEL_COLORS, R as RiskStatus, S as StrategyPersonality, J as TRADING_STATUS_COLORS, Q as TradingConsoleOptions, O as TradingConsoleState, T as TradingStatus, w as calculateForexNetProfit, Z as calculateRiskLevel, d as computePoolAllocations, x as estimateForexProfit, $ as formatPercent, _ as formatPnl } from '../console-Dvf-N9Gr.mjs';
2
2
 
3
3
  type StrategyCategory$1 = 'conservative' | 'balanced' | 'aggressive' | 'hedge' | 'arbitrage' | 'trend' | 'grid' | 'dca';
4
4
  type OrderStatus = 'pending' | 'active' | 'paused' | 'completed' | 'cancelled' | 'pending_redemption' | 'redeemed';
@@ -1,4 +1,4 @@
1
- export { M as AGENT_STATUS_COLORS, G as AIDecision, A as AILogType, D as AIPosition, U as AIQuantConsoleOptions, y as AI_LOG_COLORS, V as AgentConsoleOptions, L as AgentStatus, a as BotLogEntry, B as BotLogType, c as BotState, N as CombinedLogEntry, K as ConsoleMetrics, Y as DEFAULT_CONSOLE_METRICS, W as DEFAULT_CONSOLE_OPTIONS, X as DEFAULT_RISK_STATUS, E as DecisionAction, v as FOREX_AGENT, F as FOREX_CAPITAL_SPLIT, h as FOREX_CURRENCY_PAIRS, f as FOREX_CYCLE_OPTIONS, z as FOREX_LOG_COLORS, k as FOREX_POOL_DEFAULTS, u as ForexAgent, g as ForexCurrencyPair, e as ForexCycleOption, p as ForexInvestment, t as ForexLogEntry, s as ForexLogType, j as ForexPool, n as ForexPoolDailySnapshot, m as ForexPoolTransaction, l as ForexPoolTransactionType, i as ForexPoolType, o as ForexPosition, r as ForexTradeRecord, q as ForexTradeStatus, I as IndicatorSnapshot, P as PositionSide, C as PositionStatus, H as RISK_LEVEL_COLORS, R as RiskStatus, S as StrategyPersonality, J as TRADING_STATUS_COLORS, Q as TradingConsoleOptions, O as TradingConsoleState, T as TradingStatus, w as calculateForexNetProfit, Z as calculateRiskLevel, d as computePoolAllocations, x as estimateForexProfit, $ as formatPercent, _ as formatPnl } from '../console-BfTMA7ah.js';
1
+ export { M as AGENT_STATUS_COLORS, G as AIDecision, A as AILogType, D as AIPosition, U as AIQuantConsoleOptions, y as AI_LOG_COLORS, V as AgentConsoleOptions, L as AgentStatus, a as BotLogEntry, B as BotLogType, c as BotState, N as CombinedLogEntry, K as ConsoleMetrics, Y as DEFAULT_CONSOLE_METRICS, W as DEFAULT_CONSOLE_OPTIONS, X as DEFAULT_RISK_STATUS, E as DecisionAction, v as FOREX_AGENT, F as FOREX_CAPITAL_SPLIT, h as FOREX_CURRENCY_PAIRS, f as FOREX_CYCLE_OPTIONS, z as FOREX_LOG_COLORS, k as FOREX_POOL_DEFAULTS, u as ForexAgent, g as ForexCurrencyPair, e as ForexCycleOption, p as ForexInvestment, t as ForexLogEntry, s as ForexLogType, j as ForexPool, n as ForexPoolDailySnapshot, m as ForexPoolTransaction, l as ForexPoolTransactionType, i as ForexPoolType, o as ForexPosition, r as ForexTradeRecord, q as ForexTradeStatus, I as IndicatorSnapshot, P as PositionSide, C as PositionStatus, H as RISK_LEVEL_COLORS, R as RiskStatus, S as StrategyPersonality, J as TRADING_STATUS_COLORS, Q as TradingConsoleOptions, O as TradingConsoleState, T as TradingStatus, w as calculateForexNetProfit, Z as calculateRiskLevel, d as computePoolAllocations, x as estimateForexProfit, $ as formatPercent, _ as formatPnl } from '../console-Dvf-N9Gr.js';
2
2
 
3
3
  type StrategyCategory$1 = 'conservative' | 'balanced' | 'aggressive' | 'hedge' | 'arbitrage' | 'trend' | 'grid' | 'dca';
4
4
  type OrderStatus = 'pending' | 'active' | 'paused' | 'completed' | 'cancelled' | 'pending_redemption' | 'redeemed';
@@ -1,4 +1,4 @@
1
- import { j as ForexPool, p as ForexInvestment, t as ForexLogEntry, m as ForexPoolTransaction, i as ForexPoolType, n as ForexPoolDailySnapshot, F as FOREX_CAPITAL_SPLIT, v as FOREX_AGENT, h as FOREX_CURRENCY_PAIRS, f as FOREX_CYCLE_OPTIONS, d as computePoolAllocations, x as estimateForexProfit } from './console-BfTMA7ah.js';
1
+ import { j as ForexPool, p as ForexInvestment, t as ForexLogEntry, m as ForexPoolTransaction, i as ForexPoolType, n as ForexPoolDailySnapshot, F as FOREX_CAPITAL_SPLIT, v as FOREX_AGENT, h as FOREX_CURRENCY_PAIRS, f as FOREX_CYCLE_OPTIONS, d as computePoolAllocations, x as estimateForexProfit } from './console-Dvf-N9Gr.js';
2
2
 
3
3
  /** Set the access token for authenticated forex API calls */
4
4
  declare function setForexAccessToken(token: string): void;
@@ -1,4 +1,4 @@
1
- import { j as ForexPool, p as ForexInvestment, t as ForexLogEntry, m as ForexPoolTransaction, i as ForexPoolType, n as ForexPoolDailySnapshot, F as FOREX_CAPITAL_SPLIT, v as FOREX_AGENT, h as FOREX_CURRENCY_PAIRS, f as FOREX_CYCLE_OPTIONS, d as computePoolAllocations, x as estimateForexProfit } from './console-BfTMA7ah.mjs';
1
+ import { j as ForexPool, p as ForexInvestment, t as ForexLogEntry, m as ForexPoolTransaction, i as ForexPoolType, n as ForexPoolDailySnapshot, F as FOREX_CAPITAL_SPLIT, v as FOREX_AGENT, h as FOREX_CURRENCY_PAIRS, f as FOREX_CYCLE_OPTIONS, d as computePoolAllocations, x as estimateForexProfit } from './console-Dvf-N9Gr.mjs';
2
2
 
3
3
  /** Set the access token for authenticated forex API calls */
4
4
  declare function setForexAccessToken(token: string): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@one_deploy/sdk",
3
- "version": "1.2.0",
3
+ "version": "1.2.2",
4
4
  "description": "ONE Ecosystem SDK - Shared services, types, utilities, and React providers",
5
5
  "files": [
6
6
  "dist",
@@ -80,6 +80,224 @@ export interface StrategyPersonality {
80
80
  riskTolerance: 'low' | 'medium' | 'high';
81
81
  preferredPairs: string[];
82
82
  rsiBias: number;
83
+ // Yield configuration
84
+ tier: InvestmentTier;
85
+ dailyYieldMin: number; // Min daily interest rate (%)
86
+ dailyYieldMax: number; // Max daily interest rate (%)
87
+ description: string;
88
+ category: StrategyCategory;
89
+ }
90
+
91
+ export type StrategyCategory =
92
+ | 'conservative' // 保守型 - 稳健收益
93
+ | 'balanced' // 平衡型 - 风险收益均衡
94
+ | 'growth' // 成长型 - 较高收益
95
+ | 'aggressive' // 激进型 - 高风险高收益
96
+ | 'quantitative'; // 量化型 - AI驱动
97
+
98
+ export type InvestmentTier = 'starter' | 'basic' | 'standard' | 'premium' | 'elite' | 'vip';
99
+
100
+ // ── Investment Tier Configuration ─────────────────────────────────────────────
101
+
102
+ export interface TierConfig {
103
+ id: InvestmentTier;
104
+ name: string;
105
+ nameCn: string;
106
+ minInvestment: number;
107
+ maxInvestment: number;
108
+ color: string;
109
+ icon: string;
110
+ }
111
+
112
+ export const INVESTMENT_TIERS: Record<InvestmentTier, TierConfig> = {
113
+ starter: {
114
+ id: 'starter',
115
+ name: 'Starter',
116
+ nameCn: '入门版',
117
+ minInvestment: 100,
118
+ maxInvestment: 999,
119
+ color: '#6B7280',
120
+ icon: '🌱',
121
+ },
122
+ basic: {
123
+ id: 'basic',
124
+ name: 'Basic',
125
+ nameCn: '基础版',
126
+ minInvestment: 1000,
127
+ maxInvestment: 4999,
128
+ color: '#3B82F6',
129
+ icon: '📊',
130
+ },
131
+ standard: {
132
+ id: 'standard',
133
+ name: 'Standard',
134
+ nameCn: '标准版',
135
+ minInvestment: 5000,
136
+ maxInvestment: 19999,
137
+ color: '#10B981',
138
+ icon: '💎',
139
+ },
140
+ premium: {
141
+ id: 'premium',
142
+ name: 'Premium',
143
+ nameCn: '高级版',
144
+ minInvestment: 20000,
145
+ maxInvestment: 49999,
146
+ color: '#8B5CF6',
147
+ icon: '👑',
148
+ },
149
+ elite: {
150
+ id: 'elite',
151
+ name: 'Elite',
152
+ nameCn: '精英版',
153
+ minInvestment: 50000,
154
+ maxInvestment: 99999,
155
+ color: '#F59E0B',
156
+ icon: '🏆',
157
+ },
158
+ vip: {
159
+ id: 'vip',
160
+ name: 'VIP',
161
+ nameCn: 'VIP专属',
162
+ minInvestment: 100000,
163
+ maxInvestment: Infinity,
164
+ color: '#EF4444',
165
+ icon: '🔥',
166
+ },
167
+ };
168
+
169
+ // ── Investment Cycle Configuration ────────────────────────────────────────────
170
+
171
+ export interface CycleConfig {
172
+ id: string;
173
+ days: number;
174
+ name: string;
175
+ nameCn: string;
176
+ profitSharePercent: number; // Platform takes this %, user gets (100 - this)%
177
+ bonusMultiplier: number; // Bonus yield multiplier for longer cycles
178
+ earlyWithdrawPenalty: number; // Penalty % for early withdrawal
179
+ }
180
+
181
+ export const INVESTMENT_CYCLES: CycleConfig[] = [
182
+ {
183
+ id: 'flexible',
184
+ days: 0,
185
+ name: 'Flexible',
186
+ nameCn: '灵活期',
187
+ profitSharePercent: 30, // Platform 30%, User 70%
188
+ bonusMultiplier: 1.0,
189
+ earlyWithdrawPenalty: 0,
190
+ },
191
+ {
192
+ id: 'week',
193
+ days: 7,
194
+ name: '7 Days',
195
+ nameCn: '7天期',
196
+ profitSharePercent: 25, // Platform 25%, User 75%
197
+ bonusMultiplier: 1.1,
198
+ earlyWithdrawPenalty: 5,
199
+ },
200
+ {
201
+ id: 'biweek',
202
+ days: 14,
203
+ name: '14 Days',
204
+ nameCn: '14天期',
205
+ profitSharePercent: 22, // Platform 22%, User 78%
206
+ bonusMultiplier: 1.2,
207
+ earlyWithdrawPenalty: 8,
208
+ },
209
+ {
210
+ id: 'month',
211
+ days: 30,
212
+ name: '30 Days',
213
+ nameCn: '30天期',
214
+ profitSharePercent: 20, // Platform 20%, User 80%
215
+ bonusMultiplier: 1.35,
216
+ earlyWithdrawPenalty: 10,
217
+ },
218
+ {
219
+ id: 'quarter',
220
+ days: 90,
221
+ name: '90 Days',
222
+ nameCn: '90天期',
223
+ profitSharePercent: 15, // Platform 15%, User 85%
224
+ bonusMultiplier: 1.5,
225
+ earlyWithdrawPenalty: 15,
226
+ },
227
+ {
228
+ id: 'halfyear',
229
+ days: 180,
230
+ name: '180 Days',
231
+ nameCn: '180天期',
232
+ profitSharePercent: 12, // Platform 12%, User 88%
233
+ bonusMultiplier: 1.8,
234
+ earlyWithdrawPenalty: 20,
235
+ },
236
+ {
237
+ id: 'year',
238
+ days: 365,
239
+ name: '365 Days',
240
+ nameCn: '365天期',
241
+ profitSharePercent: 10, // Platform 10%, User 90%
242
+ bonusMultiplier: 2.0,
243
+ earlyWithdrawPenalty: 25,
244
+ },
245
+ ];
246
+
247
+ // ── Yield Calculator ──────────────────────────────────────────────────────────
248
+
249
+ export function calculateDailyYield(
250
+ strategy: StrategyPersonality,
251
+ tier: InvestmentTier,
252
+ cycle: CycleConfig
253
+ ): { grossYield: number; netYield: number; platformFee: number } {
254
+ // Base yield from strategy
255
+ const baseYield = (strategy.dailyYieldMin + strategy.dailyYieldMax) / 2;
256
+
257
+ // Tier bonus (higher tiers get slightly better rates)
258
+ const tierBonuses: Record<InvestmentTier, number> = {
259
+ starter: 0,
260
+ basic: 0.02,
261
+ standard: 0.05,
262
+ premium: 0.08,
263
+ elite: 0.12,
264
+ vip: 0.15,
265
+ };
266
+
267
+ // Calculate gross yield with bonuses
268
+ const grossYield = baseYield * cycle.bonusMultiplier * (1 + tierBonuses[tier]);
269
+
270
+ // Calculate platform fee and net yield
271
+ const platformFee = grossYield * (cycle.profitSharePercent / 100);
272
+ const netYield = grossYield - platformFee;
273
+
274
+ return { grossYield, netYield, platformFee };
275
+ }
276
+
277
+ export function estimateReturns(
278
+ principal: number,
279
+ strategy: StrategyPersonality,
280
+ tier: InvestmentTier,
281
+ cycle: CycleConfig
282
+ ): {
283
+ dailyReturn: number;
284
+ totalReturn: number;
285
+ finalAmount: number;
286
+ platformProfit: number;
287
+ userProfit: number;
288
+ apr: number;
289
+ } {
290
+ const { netYield, platformFee } = calculateDailyYield(strategy, tier, cycle);
291
+ const days = cycle.days || 30; // Default to 30 days for flexible
292
+
293
+ const dailyReturn = principal * (netYield / 100);
294
+ const totalReturn = dailyReturn * days;
295
+ const finalAmount = principal + totalReturn;
296
+ const platformProfit = principal * (platformFee / 100) * days;
297
+ const userProfit = totalReturn;
298
+ const apr = netYield * 365;
299
+
300
+ return { dailyReturn, totalReturn, finalAmount, platformProfit, userProfit, apr };
83
301
  }
84
302
 
85
303
  type LogCallback = (entry: BotLogEntry) => void;
@@ -87,13 +305,64 @@ type LogCallback = (entry: BotLogEntry) => void;
87
305
  // ── Strategy Personalities ─────────────────────────────────────────────────────
88
306
 
89
307
  export const STRATEGY_PERSONALITIES: StrategyPersonality[] = [
308
+ // ═══════════════════════════════════════════════════════════════════════════
309
+ // CONSERVATIVE STRATEGIES (保守型) - Low risk, stable returns
310
+ // ═══════════════════════════════════════════════════════════════════════════
311
+ {
312
+ id: 'stable-yield-01',
313
+ name: 'Stable Yield',
314
+ shortName: 'STB',
315
+ color: '#6B7280',
316
+ scanIntervalMin: 80000,
317
+ scanIntervalMax: 120000,
318
+ tradeFrequency: 0.15,
319
+ positionSizeMin: 5,
320
+ positionSizeMax: 15,
321
+ leverageMin: 1,
322
+ leverageMax: 3,
323
+ primaryIndicators: ['Bollinger', 'Volume'],
324
+ riskTolerance: 'low',
325
+ preferredPairs: ['BTC/USDT', 'ETH/USDT'],
326
+ rsiBias: 45,
327
+ tier: 'starter',
328
+ dailyYieldMin: 0.15,
329
+ dailyYieldMax: 0.25,
330
+ description: '稳健收益策略,低风险低波动,适合新手入门',
331
+ category: 'conservative',
332
+ },
90
333
  {
91
- id: 'balanced-01',
334
+ id: 'conservative-shield-01',
335
+ name: 'Conservative Shield',
336
+ shortName: 'CON',
337
+ color: '#10B981',
338
+ scanIntervalMin: 60000,
339
+ scanIntervalMax: 90000,
340
+ tradeFrequency: 0.25,
341
+ positionSizeMin: 10,
342
+ positionSizeMax: 20,
343
+ leverageMin: 2,
344
+ leverageMax: 5,
345
+ primaryIndicators: ['Bollinger', 'Volume', 'RSI'],
346
+ riskTolerance: 'low',
347
+ preferredPairs: ['BTC/USDT', 'ETH/USDT'],
348
+ rsiBias: 45,
349
+ tier: 'basic',
350
+ dailyYieldMin: 0.25,
351
+ dailyYieldMax: 0.40,
352
+ description: '保守防御策略,注重资金安全,稳定收益',
353
+ category: 'conservative',
354
+ },
355
+
356
+ // ═══════════════════════════════════════════════════════════════════════════
357
+ // BALANCED STRATEGIES (平衡型) - Moderate risk, balanced returns
358
+ // ═══════════════════════════════════════════════════════════════════════════
359
+ {
360
+ id: 'balanced-alpha-01',
92
361
  name: 'Balanced Alpha',
93
362
  shortName: 'BAL',
94
363
  color: '#3B82F6',
95
- scanIntervalMin: 25000, // Slower: 25-40s between cycles
96
- scanIntervalMax: 40000,
364
+ scanIntervalMin: 45000,
365
+ scanIntervalMax: 70000,
97
366
  tradeFrequency: 0.4,
98
367
  positionSizeMin: 15,
99
368
  positionSizeMax: 35,
@@ -103,31 +372,93 @@ export const STRATEGY_PERSONALITIES: StrategyPersonality[] = [
103
372
  riskTolerance: 'medium',
104
373
  preferredPairs: ['BTC/USDT', 'ETH/USDT', 'SOL/USDT'],
105
374
  rsiBias: 50,
375
+ tier: 'standard',
376
+ dailyYieldMin: 0.40,
377
+ dailyYieldMax: 0.65,
378
+ description: '平衡型策略,风险收益均衡,适合稳健投资者',
379
+ category: 'balanced',
106
380
  },
107
381
  {
108
- id: 'conservative-01',
109
- name: 'Conservative Shield',
110
- shortName: 'CON',
111
- color: '#10B981',
112
- scanIntervalMin: 35000, // Slower: 35-55s between cycles
382
+ id: 'smart-rebalance-01',
383
+ name: 'Smart Rebalance',
384
+ shortName: 'SRB',
385
+ color: '#06B6D4',
386
+ scanIntervalMin: 50000,
387
+ scanIntervalMax: 75000,
388
+ tradeFrequency: 0.35,
389
+ positionSizeMin: 12,
390
+ positionSizeMax: 30,
391
+ leverageMin: 3,
392
+ leverageMax: 8,
393
+ primaryIndicators: ['RSI', 'EMA', 'Volume'],
394
+ riskTolerance: 'medium',
395
+ preferredPairs: ['BTC/USDT', 'ETH/USDT', 'BNB/USDT', 'SOL/USDT'],
396
+ rsiBias: 50,
397
+ tier: 'standard',
398
+ dailyYieldMin: 0.45,
399
+ dailyYieldMax: 0.70,
400
+ description: '智能再平衡策略,动态调整持仓,优化收益',
401
+ category: 'balanced',
402
+ },
403
+
404
+ // ═══════════════════════════════════════════════════════════════════════════
405
+ // GROWTH STRATEGIES (成长型) - Higher risk, higher returns
406
+ // ═══════════════════════════════════════════════════════════════════════════
407
+ {
408
+ id: 'growth-momentum-01',
409
+ name: 'Growth Momentum',
410
+ shortName: 'GRO',
411
+ color: '#8B5CF6',
412
+ scanIntervalMin: 40000,
413
+ scanIntervalMax: 60000,
414
+ tradeFrequency: 0.45,
415
+ positionSizeMin: 20,
416
+ positionSizeMax: 40,
417
+ leverageMin: 5,
418
+ leverageMax: 12,
419
+ primaryIndicators: ['RSI', 'MACD', 'EMA'],
420
+ riskTolerance: 'medium',
421
+ preferredPairs: ['BTC/USDT', 'ETH/USDT', 'SOL/USDT', 'AVAX/USDT'],
422
+ rsiBias: 52,
423
+ tier: 'premium',
424
+ dailyYieldMin: 0.60,
425
+ dailyYieldMax: 0.95,
426
+ description: '成长动量策略,追求较高收益,适合有经验投资者',
427
+ category: 'growth',
428
+ },
429
+ {
430
+ id: 'trend-hunter-01',
431
+ name: 'Trend Hunter',
432
+ shortName: 'TRH',
433
+ color: '#EC4899',
434
+ scanIntervalMin: 38000,
113
435
  scanIntervalMax: 55000,
114
- tradeFrequency: 0.25,
115
- positionSizeMin: 10,
116
- positionSizeMax: 20,
117
- leverageMin: 2,
118
- leverageMax: 5,
119
- primaryIndicators: ['Bollinger', 'Volume'],
120
- riskTolerance: 'low',
121
- preferredPairs: ['BTC/USDT', 'ETH/USDT'],
122
- rsiBias: 45,
436
+ tradeFrequency: 0.48,
437
+ positionSizeMin: 22,
438
+ positionSizeMax: 42,
439
+ leverageMin: 5,
440
+ leverageMax: 15,
441
+ primaryIndicators: ['EMA', 'MACD', 'Volume', 'Bollinger'],
442
+ riskTolerance: 'medium',
443
+ preferredPairs: ['BTC/USDT', 'ETH/USDT', 'SOL/USDT', 'ARB/USDT', 'OP/USDT'],
444
+ rsiBias: 53,
445
+ tier: 'premium',
446
+ dailyYieldMin: 0.65,
447
+ dailyYieldMax: 1.00,
448
+ description: '趋势猎手策略,捕捉市场趋势,追求超额收益',
449
+ category: 'growth',
123
450
  },
451
+
452
+ // ═══════════════════════════════════════════════════════════════════════════
453
+ // AGGRESSIVE STRATEGIES (激进型) - High risk, high returns
454
+ // ═══════════════════════════════════════════════════════════════════════════
124
455
  {
125
- id: 'aggressive-01',
456
+ id: 'aggressive-momentum-01',
126
457
  name: 'Aggressive Momentum',
127
458
  shortName: 'AGG',
128
459
  color: '#EF4444',
129
- scanIntervalMin: 18000, // Slower: 18-30s between cycles
130
- scanIntervalMax: 30000,
460
+ scanIntervalMin: 35000,
461
+ scanIntervalMax: 55000,
131
462
  tradeFrequency: 0.5,
132
463
  positionSizeMin: 25,
133
464
  positionSizeMax: 50,
@@ -137,6 +468,103 @@ export const STRATEGY_PERSONALITIES: StrategyPersonality[] = [
137
468
  riskTolerance: 'high',
138
469
  preferredPairs: ['BTC/USDT', 'ETH/USDT', 'SOL/USDT', 'DOGE/USDT', 'AVAX/USDT'],
139
470
  rsiBias: 55,
471
+ tier: 'elite',
472
+ dailyYieldMin: 0.85,
473
+ dailyYieldMax: 1.40,
474
+ description: '激进动量策略,高风险高收益,适合风险承受能力强的投资者',
475
+ category: 'aggressive',
476
+ },
477
+ {
478
+ id: 'leverage-maximizer-01',
479
+ name: 'Leverage Maximizer',
480
+ shortName: 'LEV',
481
+ color: '#F97316',
482
+ scanIntervalMin: 30000,
483
+ scanIntervalMax: 50000,
484
+ tradeFrequency: 0.55,
485
+ positionSizeMin: 30,
486
+ positionSizeMax: 55,
487
+ leverageMin: 10,
488
+ leverageMax: 25,
489
+ primaryIndicators: ['RSI', 'MACD', 'EMA', 'Volume', 'Bollinger'],
490
+ riskTolerance: 'high',
491
+ preferredPairs: ['BTC/USDT', 'ETH/USDT', 'SOL/USDT', 'DOGE/USDT', 'AVAX/USDT', 'ARB/USDT'],
492
+ rsiBias: 55,
493
+ tier: 'elite',
494
+ dailyYieldMin: 1.00,
495
+ dailyYieldMax: 1.80,
496
+ description: '杠杆最大化策略,追求极致收益,需要专业投资经验',
497
+ category: 'aggressive',
498
+ },
499
+
500
+ // ═══════════════════════════════════════════════════════════════════════════
501
+ // QUANTITATIVE STRATEGIES (量化型) - AI-driven, advanced algorithms
502
+ // ═══════════════════════════════════════════════════════════════════════════
503
+ {
504
+ id: 'ai-quant-alpha-01',
505
+ name: 'AI Quant Alpha',
506
+ shortName: 'AQA',
507
+ color: '#A855F7',
508
+ scanIntervalMin: 42000,
509
+ scanIntervalMax: 65000,
510
+ tradeFrequency: 0.42,
511
+ positionSizeMin: 18,
512
+ positionSizeMax: 38,
513
+ leverageMin: 4,
514
+ leverageMax: 12,
515
+ primaryIndicators: ['RSI', 'MACD', 'EMA', 'Volume', 'Bollinger'],
516
+ riskTolerance: 'medium',
517
+ preferredPairs: ['BTC/USDT', 'ETH/USDT', 'SOL/USDT', 'BNB/USDT'],
518
+ rsiBias: 51,
519
+ tier: 'premium',
520
+ dailyYieldMin: 0.70,
521
+ dailyYieldMax: 1.10,
522
+ description: 'AI量化Alpha策略,机器学习驱动,智能风控',
523
+ category: 'quantitative',
524
+ },
525
+ {
526
+ id: 'neural-trader-01',
527
+ name: 'Neural Trader',
528
+ shortName: 'NRT',
529
+ color: '#14B8A6',
530
+ scanIntervalMin: 40000,
531
+ scanIntervalMax: 62000,
532
+ tradeFrequency: 0.44,
533
+ positionSizeMin: 20,
534
+ positionSizeMax: 40,
535
+ leverageMin: 5,
536
+ leverageMax: 15,
537
+ primaryIndicators: ['RSI', 'MACD', 'EMA', 'Volume', 'Bollinger'],
538
+ riskTolerance: 'medium',
539
+ preferredPairs: ['BTC/USDT', 'ETH/USDT', 'SOL/USDT', 'AVAX/USDT', 'LINK/USDT'],
540
+ rsiBias: 52,
541
+ tier: 'elite',
542
+ dailyYieldMin: 0.80,
543
+ dailyYieldMax: 1.25,
544
+ description: '神经网络交易策略,深度学习模型,自适应市场',
545
+ category: 'quantitative',
546
+ },
547
+ {
548
+ id: 'quantum-edge-01',
549
+ name: 'Quantum Edge',
550
+ shortName: 'QTE',
551
+ color: '#6366F1',
552
+ scanIntervalMin: 35000,
553
+ scanIntervalMax: 55000,
554
+ tradeFrequency: 0.5,
555
+ positionSizeMin: 25,
556
+ positionSizeMax: 50,
557
+ leverageMin: 8,
558
+ leverageMax: 20,
559
+ primaryIndicators: ['RSI', 'MACD', 'EMA', 'Volume', 'Bollinger'],
560
+ riskTolerance: 'high',
561
+ preferredPairs: ['BTC/USDT', 'ETH/USDT', 'SOL/USDT', 'AVAX/USDT', 'ARB/USDT', 'OP/USDT'],
562
+ rsiBias: 54,
563
+ tier: 'vip',
564
+ dailyYieldMin: 1.20,
565
+ dailyYieldMax: 2.00,
566
+ description: 'VIP量子优势策略,顶级AI算法,极致收益追求',
567
+ category: 'quantitative',
140
568
  },
141
569
  ];
142
570
 
@@ -428,7 +856,7 @@ class BotSimulationEngine {
428
856
  },
429
857
  delay,
430
858
  });
431
- delay += rand(800, 1500); // Slower: 0.8-1.5s
859
+ delay += rand(2000, 3500); // 2-3.5s after SCAN
432
860
 
433
861
  // 2. THINKING - AI reasoning process (new)
434
862
  const thinkingMessages = this.generateThinkingProcess(strategy, pair, price);
@@ -443,7 +871,7 @@ class BotSimulationEngine {
443
871
  },
444
872
  delay,
445
873
  });
446
- delay += rand(600, 1200); // 0.6-1.2s between thoughts
874
+ delay += rand(1500, 2500); // 1.5-2.5s between thoughts
447
875
  }
448
876
 
449
877
  // 3. INDICATOR - Always (slower delay)
@@ -478,9 +906,9 @@ class BotSimulationEngine {
478
906
  },
479
907
  delay,
480
908
  });
481
- delay += rand(800, 1500); // Slower: 0.8-1.5s
909
+ delay += rand(2000, 3500); // 2-3.5s after INDICATOR
482
910
 
483
- // 4. NEWS - 12% chance (slower)
911
+ // 4. NEWS - 12% chance
484
912
  if (Math.random() < 0.12) {
485
913
  const sentiment = Math.random() > 0.4 ? 'Bullish' : 'Bearish';
486
914
  entries.push({
@@ -493,10 +921,10 @@ class BotSimulationEngine {
493
921
  },
494
922
  delay,
495
923
  });
496
- delay += rand(1000, 1800); // Slower: 1-1.8s
924
+ delay += rand(2500, 4000); // 2.5-4s after NEWS
497
925
  }
498
926
 
499
- // 5. ANALYSIS - 40% chance (slower)
927
+ // 5. ANALYSIS - 40% chance
500
928
  if (Math.random() < 0.4) {
501
929
  const analysis = this.generateAnalysis(strategy, indicators, pair);
502
930
  entries.push({
@@ -509,7 +937,7 @@ class BotSimulationEngine {
509
937
  },
510
938
  delay,
511
939
  });
512
- delay += rand(1000, 2000); // Slower: 1-2s
940
+ delay += rand(2500, 4000); // 2.5-4s after ANALYSIS
513
941
  }
514
942
 
515
943
  // 6-10. Signal evaluation and potential trade
@@ -537,7 +965,7 @@ class BotSimulationEngine {
537
965
  },
538
966
  delay,
539
967
  });
540
- delay += rand(1500, 2500); // Slower: 1.5-2.5s
968
+ delay += rand(3000, 5000); // 3-5s after STRATEGY
541
969
 
542
970
  // 7. SIGNAL
543
971
  entries.push({
@@ -551,7 +979,7 @@ class BotSimulationEngine {
551
979
  },
552
980
  delay,
553
981
  });
554
- delay += rand(1200, 2000); // Slower: 1.2-2s
982
+ delay += rand(3000, 4500); // 3-4.5s after SIGNAL
555
983
 
556
984
  // 8. DECISION
557
985
  const decision = this.makeTradeDecision(strategy, signal, state);
@@ -573,7 +1001,7 @@ class BotSimulationEngine {
573
1001
  },
574
1002
  delay,
575
1003
  });
576
- delay += rand(1000, 1800); // Slower: 1-1.8s
1004
+ delay += rand(2500, 4000); // 2.5-4s after DECISION
577
1005
 
578
1006
  // 9. ORDER
579
1007
  const orderId = `ORD_${Date.now().toString(36).toUpperCase()}`;
@@ -603,7 +1031,7 @@ class BotSimulationEngine {
603
1031
  },
604
1032
  delay,
605
1033
  });
606
- delay += rand(2000, 4000); // Slower: 2-4s for order execution
1034
+ delay += rand(4000, 7000); // 4-7s for order execution
607
1035
 
608
1036
  // 10. FILLED
609
1037
  const fillPrice = orderPrice * (1 + rand(-0.0003, 0.0003));
@@ -656,9 +1084,9 @@ class BotSimulationEngine {
656
1084
  }
657
1085
  }
658
1086
 
659
- // 11. PNL - Update open positions (slower)
1087
+ // 11. PNL - Update open positions
660
1088
  if (state.openPositions.length > 0 && Math.random() < 0.5) {
661
- delay += rand(1500, 2500); // Slower: 1.5-2.5s
1089
+ delay += rand(3500, 5500); // 3.5-5.5s before PNL
662
1090
  let totalPositionPnl = 0;
663
1091
  const pnlParts: string[] = [];
664
1092
 
@@ -701,9 +1129,9 @@ class BotSimulationEngine {
701
1129
  });
702
1130
  }
703
1131
 
704
- // 12. RISK - Periodic check (slower)
1132
+ // 12. RISK - Periodic check
705
1133
  if (Math.random() < 0.2) {
706
- delay += rand(1000, 2000); // Slower: 1-2s
1134
+ delay += rand(3000, 5000); // 3-5s before RISK
707
1135
  const exposure = state.openPositions.reduce((sum, p) => sum + p.size * p.leverage, 0);
708
1136
  const maxDrawdown = rand(2, 12);
709
1137
  entries.push({
@@ -11,11 +11,22 @@ export type { PairState } from './ForexSimulationEngine';
11
11
  export { ForexPoolDataGenerator } from './ForexPoolDataGenerator';
12
12
 
13
13
  // Bot Simulation Engine (AI crypto trading strategies)
14
- export { botSimulationEngine, STRATEGY_PERSONALITIES } from './BotSimulationEngine';
14
+ export {
15
+ botSimulationEngine,
16
+ STRATEGY_PERSONALITIES,
17
+ INVESTMENT_TIERS,
18
+ INVESTMENT_CYCLES,
19
+ calculateDailyYield,
20
+ estimateReturns,
21
+ } from './BotSimulationEngine';
15
22
  export type {
16
23
  BotLogType,
17
24
  BotLogEntry,
18
25
  IndicatorSnapshot,
19
26
  BotState,
20
27
  StrategyPersonality,
28
+ StrategyCategory,
29
+ InvestmentTier,
30
+ TierConfig,
31
+ CycleConfig,
21
32
  } from './BotSimulationEngine';