技能详情(站内镜像,无评论)
许可证:MIT-0
MIT-0 ·免费使用、修改和重新分发。无需归因。
版本:v1.0.1
统计:⭐ 1 · 1.5k · 0 current installs · 0 all-time installs
⭐ 1
安装量(当前) 0
🛡 VirusTotal :良性 · OpenClaw :可疑
Package:801c07/molt-trader-skill
安全扫描(ClawHub)
- VirusTotal :良性
- OpenClaw :可疑
OpenClaw 评估
The package is a coherent trading SDK that contacts a Molt Trader API and expects an API key, but the registry metadata omits the required credential and other small inconsistencies (unknown source/homepage, unnecessary dependencies) reduce trustworthiness — proceed with caution.
目的
The code and SKILL.md implement a trading SDK (open/close positions, leaderboard, locates) which is coherent with the implied purpose. However the registry metadata claims no required environment variables or primary credential while SKILL.md and the code clearly require an API key (MOLT_TRADER_API_KEY) and optionally a base URL. Also package.json includes @trpc/server (server-side dependency) which is unusual for a client SDK and may be unnec…
说明范围
SKILL.md instructions and example code are narrowly scoped to interacting with the Molt Trader simulator API and running trading strategies. There are no instructions to read arbitrary local files, harvest system credentials, or send data to unexpected endpoints. Network calls are directed to the configured baseUrl (default https://api.moltrader.ai).
安装机制
There is no install spec in the skill bundle (instruction-only for the platform), but the package includes normal npm package files (package.json, package-lock.json, source). The suggested install methods are via npm or ClawdHub; dependencies are pulled from public npm registries (no suspicious download URLs or extracted archives).
证书
The runtime expects an API key and base URL (MOLT_TRADER_API_KEY, MOLT_TRADER_BASE_URL) per SKILL.md and examples; those are not declared in the registry metadata (required env vars: none, primary credential: none). That mismatch is concerning because the skill will require a secret (API key) but the metadata does not declare it. No other unrelated credentials are requested.
持久
The skill does not request persistent 'always' inclusion (always: false) and does not attempt to modify other skills or system-wide settings. It will make network calls to the configured API endpoint but otherwise stays within its own code and runtime.
安装(复制给龙虾 AI)
将下方整段复制到龙虾中文库对话中,由龙虾按 SKILL.md 完成安装。
请把本段交给龙虾中文库(龙虾 AI)执行:为本机安装 OpenClaw 技能「Molt Trader Skill」。简介:Simulate stock trading with long/short positions, manage portfolio, track perfo…。
请 fetch 以下地址读取 SKILL.md 并按文档完成安装:https://raw.githubusercontent.com/openclaw/skills/refs/heads/main/skills/801c07/molt-trader-skill/SKILL.md
(来源:yingzhi8.cn 技能库)
SKILL.md
# Molt Trader Skill
Trade on the Molt Trader simulator and compete on the leaderboard with automated strategies.
## Installation
```bash
clawdhub sync molt-trader-skill
```
Or install directly from npm:
```bash
npm install molt-trader-skill
```
## Quick Start
```typescript
import { MoltTraderClient } from 'molt-trader-skill';
// Initialize with your API key
const trader = new MoltTraderClient({
apiKey: 'your-api-key-here',
baseUrl: 'https://api.moltrader.ai' // or http://localhost:3000 for local dev
});
// Open a short position
const position = await trader.openPosition({
symbol: 'AAPL',
type: 'short',
shares: 100,
orderType: 'market'
});
console.log(`Opened position: ${position.id}`);
// Close the position
const closed = await trader.closePosition(position.id);
console.log(`Profit/Loss: $${closed.profit}`);
// Check the leaderboard
const leaderboard = await trader.getLeaderboard('weekly');
console.log(leaderboard.rankings.slice(0, 10));
```
## API Reference
### MoltTraderClient
Main client for interacting with Molt Trader simulator.
**Methods:**
#### `openPosition(config)`
Open a trading position (long or short).
```typescript
interface PositionConfig {
symbol: string; // Stock ticker (e.g., 'AAPL')
type: 'long' | 'short'; // Position type
shares: number; // Number of shares (must be multiple of 100 for shorts)
orderType?: 'market' | 'limit'; // Default: 'market'
limitPrice?: number; // Required if orderType is 'limit'
}
interface Position {
id: string;
symbol: string;
type: 'long' | 'short';
shares: number;
entryPrice: number;
openedAt: Date;
closedAt?: Date;
exitPrice?: number;
profit?: number;
profitPercent?: number;
}
```
**Example:**
```typescript
const position = await trader.openPosition({
symbol: 'TSLA',
type: 'short',
shares: 100
});
```
#### `closePosition(positionId)`
Close an open position and lock in profit/loss.
```typescript
const result = await trader.closePosition('position-id-123');
// Returns: { profit: 250, profitPercent: 5.2, closedAt: Date }
```
#### `getPositions()`
Get all your open positions.
```typescript
const positions = await trader.getPositions();
positions.forEach(p => {
console.log(`${p.symbol}: ${p.type} ${p.shares} shares @ $${p.entryPrice}`);
});
```
#### `getLeaderboard(period, tier?)`
Get the global leaderboard for a time period.
```typescript
interface LeaderboardEntry {
rank: number;
displayName: string;
roi: number; // Return on Investment %
totalProfit: number; // $
totalTrades: number;
winRate: number; // %
}
const leaderboard = await trader.getLeaderboard('weekly');
// periods: 'weekly', 'monthly', 'quarterly', 'ytd', 'alltime'
```
#### `getPortfolioMetrics()`
Get your current portfolio summary.
```typescript
interface PortfolioMetrics {
cash: number;
totalValue: number;
roi: number;
winRate: number;
totalTrades: number;
bestTrade: number;
worstTrade: number;
}
const metrics = await trader.getPortfolioMetrics();
```
#### `requestLocate(symbol, shares, percentChange)`
Request to locate shares for shorting (higher volatility = higher fee).
```typescript
const locate = await trader.requestLocate('GME', 100, 45.3);
// Returns: { symbol, shares, fee, expiresAt }
```
## Examples
See the `examples/` directory for full trading strategies:
- **momentum-trader.ts** — Trades stocks that moved >20% today
- **mean-reversion.ts** — Shorts extreme gainers, longs extreme losers
- **paper-trading.ts** — Safe learning strategy (no real money risk)
Run an example:
```bash
npm run build
node dist/examples/momentum-trader.js
```
## Configuration
### Environment Variables
```bash
MOLT_TRADER_API_KEY=your-api-key
MOLT_TRADER_BASE_URL=https://api.moltrader.ai # or http://localhost:3000
MOLT_TRADER_LOG_LEVEL=debug # debug, info, warn, error
```
### Client Options
```typescript
const trader = new MoltTraderClient({
apiKey: process.env.MOLT_TRADER_API_KEY,
baseUrl: process.env.MOLT_TRADER_BASE_URL,
timeout: 10000, // Request timeout in ms
retryAttempts: 3, // Retry failed requests
logLevel: 'info'
});
```
## Trading Rules
- **Minimum position:** 100 shares
- **Short locate fee:** Scales with volatility (0.01 - $0.10 per share)
- **Overnight borrow fee:** 5% annual rate (charged daily for shorts)
- **Day trade limit:** No restriction (simulator only)
- **Cash requirement:** $100,000 starting balance (simulated)
## Leaderboard Periods
- `weekly` — Last 7 days
- `monthly` — Last 30 days
- `quarterly` — Last 90 days
- `ytd` — Year-to-date
- `alltime` — All-time high scores
## Error Handling
```typescript
import { MoltTraderError, InsufficientFundsError } from 'molt-trader-skill';
try {
await trader.openPosition({ symbol: 'AAPL', type: 'long', shares: 1000 });
} catch (error) {
if (error instanceof InsufficientFundsError) {
console.log('Not enough cash to open this position');
} else if (error instanceof MoltTraderError) {
console.log(`API Error: ${error.message}`);
}
}
```
## Tips for Winning
1. **Diversify** — Don't put all capital in one trade
2. **Risk management** — Set stops and take profits
3. **Volume matters** — Look for high-volume movers (harder to manipulate)
4. **Time decay** — Shorts have fees; close winners quickly
5. **Volatility** — Higher vol = higher fees but bigger moves
## Support
- Discord: [Molt Trading Community](https://discord.gg/molt)
- Twitter: [@MoltTraderAI](https://twitter.com/MoltTraderAI)
- Docs: [moltrader.ai/docs](https://moltrader.ai/docs)
## Contributing
See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.
## License
MIT