代理目录
代理目录允许您浏览所有可用的 AI 交易策略,按类别或风险等级进行筛选,并向用户展示策略详情。您可以使用 useAIStrategies React hook,或直接调用 OneEngineClient 的 API 方法。
useAIStrategies Hook
useAIStrategies hook 负责获取和管理可用 AI 策略列表,内置加载状态、错误处理和重新获取支持。
import { useAIStrategies } from '@one_deploy/sdk';
import type { UseAIStrategiesOptions, UseAIStrategiesResult } from '@one_deploy/sdk';
UseAIStrategiesOptions
interface UseAIStrategiesOptions {
/** Filter by strategy category. */
category?: StrategyCategory;
/** Filter by risk level. */
riskLevel?: RiskLevel;
/** Include performance history in response. */
includePerformance?: boolean;
/** Maximum number of strategies to return. */
limit?: number;
/** Offset for pagination. */
offset?: number;
/** Whether to automatically fetch on mount. Defaults to true. */
enabled?: boolean;
}
UseAIStrategiesResult
interface UseAIStrategiesResult {
/** Array of fetched AI strategies. */
strategies: AIStrategy[];
/** True while the initial fetch is in progress. */
isLoading: boolean;
/** Error object if the fetch failed, otherwise null. */
error: Error | null;
/** Re-fetch the strategies list. */
refetch: () => Promise<void>;
/** Total number of strategies matching the filters (for pagination). */
total: number;
}
基本用法
import { useAIStrategies } from '@one_deploy/sdk';
function StrategyCatalog() {
const { strategies, isLoading, error } = useAIStrategies();
if (isLoading) return <Text>Loading strategies...</Text>;
if (error) return <Text>Error: {error.message}</Text>;
return (
<FlatList
data={strategies}
keyExtractor={(item) => item.id}
renderItem={({ item }) => (
<View style={styles.card}>
<Text style={styles.name}>{item.name}</Text>
<Text style={styles.category}>{item.category}</Text>
<Text style={styles.risk}>Risk: {item.riskLevel}</Text>
<Text style={styles.apy}>Expected APY: {item.expectedApy}%</Text>
</View>
)}
/>
);
}
按类别和风险筛选
import { useAIStrategies } from '@one_deploy/sdk';
function ConservativeStrategies() {
const { strategies, isLoading } = useAIStrategies({
category: 'conservative',
riskLevel: 'conservative',
includePerformance: true,
});
if (isLoading) return <Text>Loading...</Text>;
return (
<View>
<Text>Found {strategies.length} conservative strategies</Text>
{strategies.map((strategy) => (
<View key={strategy.id}>
<Text>{strategy.name}</Text>
<Text>30-day return: {strategy.performance?.return30d ?? 'N/A'}%</Text>
<Text>Max drawdown: {strategy.performance?.maxDrawdown ?? 'N/A'}%</Text>
</View>
))}
</View>
);
}
AIStrategy 类型
interface AIStrategy {
/** Unique strategy identifier. */
id: string;
/** Human-readable strategy name. */
name: string;
/** Full description of the strategy approach. */
description: string;
/** Strategy category. */
category: StrategyCategory;
/** Risk classification. */
riskLevel: RiskLevel;
/** Expected annualised percentage yield. */
expectedApy: number;
/** Minimum investment amount in USD. */
minInvestment: number;
/** Maximum investment amount in USD, or null for unlimited. */
maxInvestment: number | null;
/** Supported chain IDs. */
supportedChains: number[];
/** Supported trading pair identifiers. */
supportedPairs: string[];
/** Available investment cycle durations (in days). */
availableCycles: number[];
/** Available tiers for this strategy. */
tiers: Tier[];
/** Whether the strategy is currently accepting new orders. */
isActive: boolean;
/** ISO 8601 creation timestamp. */
createdAt: string;
/** Performance metrics, present when includePerformance is true. */
performance?: AIStrategyPerformance;
}
interface AIStrategyPerformance {
return7d: number;
return30d: number;
return90d: number;
maxDrawdown: number;
sharpeRatio: number;
winRate: number;
totalTrades: number;
}
API 方法
对于非 React 场景或需要直接控制的情况,请使用 OneEngineClient 方法。
getAgentConfigs
获取原始代 理配置数据,包括所有可用的策略模板。
import { OneEngineClient } from '@one_deploy/sdk';
const engine = new OneEngineClient({
apiKey: process.env.ONE_API_KEY!,
projectId: process.env.ONE_PROJECT_ID!,
});
const configs = await engine.getAgentConfigs({
category: 'balanced',
includeInactive: false,
});
console.log('Agent configs:', configs.length);
方法签名
getAgentConfigs(options?: GetAgentConfigsOptions): Promise<AgentConfig[]>
| 参数 | 类型 | 描述 |
|---|---|---|
options.category | StrategyCategory | 按类别筛选。可选。 |
options.includeInactive | boolean | 包含非活跃代理。默认为 false。 |
getAIStrategies
获取策略目录,支持可选筛选条件。
const strategies = await engine.getAIStrategies({
category: 'grid',
riskLevel: 'moderate',
});
strategies.forEach((s) => {
console.log(`${s.name} (${s.category}) -- APY: ${s.expectedApy}%`);
});
方法签名
getAIStrategies(filters?: AIStrategyFilters): Promise<AIStrategy[]>
interface AIStrategyFilters {
category?: StrategyCategory;
riskLevel?: RiskLevel;
chainId?: number;
pair?: string;
minApy?: number;
isActive?: boolean;
}
getAIStrategy
根据 ID 获取单个策略,支持可选的关联数据。
const strategy = await engine.getAIStrategy('strat_abc123', {
includePerformance: true,
includeTiers: true,
});
console.log('Strategy:', strategy.name);
console.log('Tiers:', strategy.tiers.length);
console.log('Win rate:', strategy.performance?.winRate);
方法签名
getAIStrategy(strategyId: string, include?: AIStrategyInclude): Promise<AIStrategy>
interface AIStrategyInclude {
includePerformance?: boolean;
includeTiers?: boolean;
includePairs?: boolean;
}